Стандарты 1С v8std


Гео и язык канала: Россия, Русский
Категория: Технологии


v8std.ru
Автор @radio_ingvar

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Разыменование ссылочных полей составного типа в языке запросов

🟡 В таком варианте SQL формируется с небольшим числом соединений по реально используемым типам, поэтому запрос работает быстрее и стабильнее.

🟡 Если один и тот же запрос используется в разных сценариях, формируйте его текст динамически и подставляйте в ВЫРАЗИТЬ нужный тип в зависимости от контекста.

🟡 Это приведет к дублированию данных и небольшому росту объема хранения, но может существенно повысить производительность и стабильность запроса.

🟡 Сначала анализируйте прикладную логику, затем оставляйте только реально используемые типы.

#std654
https://v8std.ru/std/654/


Использование объекта РегистрСведенийМенеджерЗаписи

🟡 При записи через менеджер записи платформа использует два набора записей и устанавливает им соответствующие отборы.

🟡 Из-за этого обработчики событий набора записей вызываются и при записи через менеджер записи.

🟡 Чтение записи (или набора записей) из регистра сведений без последующей модификации выполняйте запросом.

🟡 РегистрСведенийМенеджерЗаписи применяйте только когда нужен отбор одновременно по всем измерениям регистра.

#std447
https://v8std.ru/std/447/


Блокировка данных объекта для редактирования из кода

🟡 Если объект уже заблокирован, платформа выдаст исключение с информацией о блокирующем сеансе.

🟡 Если не устанавливать блокировку на время изменения и записи, пользователь может не сохранить свои правки из-за конкурентной записи тех же данных в другом сеансе.

🟡 Для блокировки из встроенного языка используйте метод Заблокировать() у объекта или метод глобального контекста ЗаблокироватьДанныеДляРедактирования().

🟡 Нужно заблокировать объект и, если блокировка получена, изменить данные.

#std490
https://v8std.ru/std/490/


Оптимизация использования оперативной памяти

🟡 В этом случае платформа получает данные порциями фиксированного размера.

🟡 Исключение: когда нужен произвольный доступ к конкретным частям документа.

🟡 Не проектируйте решение из предположения о неограниченной оперативной памяти.

🟡 Для выявления утечек используйте технологический журнал, добавив в logcfg.xml элемент .

#std725
https://v8std.ru/std/725/


Минимизация кода, выполняемого на клиенте

🟡 Не выполняйте на клиенте сложные алгоритмы, требующие значительных ресурсов компьютера.

🟡 Исключение: подсистема предназначена для работы с ПО, установленным на клиентском компьютере.

🟡 Размещайте такие алгоритмы на сервере и делайте минимально необходимое число вызовов с клиента.

🟡 Если подсистема работает с клиентским ПО только в отдельных режимах клиента, используйте директивы препроцессора.

#std629
https://v8std.ru/std/629/


Запись событий в историю работы пользователя

🟡 Для добавления событий используется объект ИсторияРаботыПользователя типа МенеджерИсторииРаботыПользователя.

🟡 Дополнительно рекомендуется записывать и другие события, которые приводят к записи объектов в результате действий пользователя.

🟡 В историю работы пользователя автоматически попадают события интерактивного добавления и изменения объектов информационной базы (документы, элементы справочников и т.д.).

🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.

#std497
https://v8std.ru/std/497/


Общие требования к регламентным заданиям

🟡 Если используется подсистема Регламентные задания БСП и настроены зависимости заданий от ФО (как в п.

🟡 Создавать предопределенное регламентное задание, зависящее от ФО, с установленным флажком Использование.

🟡 В общем случае регламентные задания используйте, когда нужно выполнять периодические или однократные действия по расписанию.

🟡 Если выполнение регламентного задания зависит от данных информационной базы, флажок Предопределенное у регламентного задания следует отключать.

#std540
https://v8std.ru/std/540/


Обновил v8std.ru по сентябрьским изменениям стандартов 1С: три новых стандарта и пять обновлённых.

Новые стандарты

🟡Работа с формами объектов — изменения по явным действиям пользователя, возможность отказаться от правок, ограничения на незаметную запись объекта и сброс признака модифицированности. #std800
🟡Общие рекомендации по интерфейсу 8.5 — ссылки на методику перехода и рекомендации по адаптации конфигураций. #std802
🟡Выполнить и Вычислить на клиенте — ограничения на исполнение произвольного кода. Пользовательские формулы предлагается вычислять на сервере с ограничением доступных функций, динамические вызовы — заменять прямыми. #std801

Обновлённые стандарты

🟡Выполнить и Вычислить на сервере — расширены требования к безопасному выполнению, проверке динамических вызовов и явному перечню разрешённых методов в БСП. Сюда перенесены правила ограничения прав регламентных заданий. #std770
🟡Длительные операции на сервере — добавлен раздел о безопасности фоновых вызовов: защита от подмены параметров с клиента, явное указание обработчика и регистрация разрешённых методов. #std642
🟡Ограничение на выполнение внешнего кода — сюда перенесено требование отключать пользовательский внешний код и тексты запросов при переносе локальной базы в сервис. #std669
🟡Настройка ролей и прав доступа — для БСП 3.2.2+ уточнены права роли изменения: чтение и просмотр истории данных, изменение комментариев версий. #std689
🟡Работа с неактуальными объектами — описана работа с подсистемой недействительных объектов БСП, отборами, предупреждениями и командами. Пометка удаления делает объект недействительным, а её снятие не возвращает действительность автоматически. #std638


Ограничения на использование реквизитов составного типа

🟡 Исключение могут составлять таблицы, в которых заведомо мало данных (до 1000 записей).

🟡 Если требуется совместить ссылку и произвольный ввод, используйте отдельный справочник вместо примитивного типа.

🟡 Не включайте в такой составной тип нессылочные значения: Строка, Число, Дата, УникальныйИдентификатор, Булево, ХранилищеЗначения.

🟡 Исключение составляют универсальные механизмы (алгоритмы), действительно рассчитанные на работу с произвольными ссылочными объектами.

#std728
https://v8std.ru/std/728/


Псевдонимы источников данных в запросах

🟡 Для универсальных механизмов, работающих с произвольными таблицами, допустимы универсальные псевдонимы.

🟡 Закрепите ключевые правила стандарта «Псевдонимы источников данных в запросах» в code review и внутренних чек-листах.

🟡 Для спорных случаев фиксируйте выбранный подход в комментариях к коду и документации.

🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.

#std758
https://v8std.ru/std/758/


Самодостаточность регистров

🟡 При проектировании структуры регистров придерживайтесь правила: регистр должен быть логически независим от регистраторов.

🟡 Для работы должно быть достаточно данных самого регистра.

🟡 Любая логика по данным регистра и любые отчеты по нему не должны обращаться к полям регистратора.

🟡 Кроме того, в распределенной информационной базе регистратора может не быть: движения регистров могут мигрировать между узлами, а регистраторы - нет.

#std477
https://v8std.ru/std/477/


Сказано - сделано. По эмодзи хорошо видно что тема ИИ и MCP интересна.

Потому я хочу поделиться двумя материалами:
• Я делаю Unica - плагин для Claude Code и Codex - почитать можно тут https://ingvarconsulting.github.io/unica/index.html, телеграм канал @unica_ai (MCP стандартов разработки в Юнику включен)
• В Петербурге организовывали Кунг-фу митап на прошлой неделе на площадке Selectel по теме ИИ как вводная + практика с Юникой. Запись https://kinescope.io/0cDWthipGCB8qVvuriEWP7 а телеграм канал наших митапов @kungfu_conf


Обновили MCP v8std и упростили локальный запуск.

Публичный сервер заново развёрнут и изолирован VPS. Индекс обновляется отдельно от приложения, описания инструментов уточнены для поиска стандартов и разбора диагностик.

Использовать публичный сервер:
• Просто подключите в кодовам агенте MCP по адресу

https://ai.v8std.ru/mcp


Для локальной работы — два Docker Compose-файла:
- Только MCP — скачивает индекс с публичного сервера, ссылки ведут на v8std.ru.
- Сайт + MCP — использует локальный индекс и локальные страницы. Все данные полностью остаются в закрытом вашем контуре. После скачивания образов работает без интернета.

Готовые Docker-образы сайта и MCP теперь публикуем в GHCR для amd64 и arm64. Собирать из исходников не нужно.

Compose-файлы и команды запуска →


Копирование строк между таблицами значений (табличными частями и т.п.) произвольной структуры

🟡 При копировании строк между разными таблицами значений (табличными частями и т.п.) со схожим составом колонок используйте метод глобального контекста ЗаполнитьЗначенияСвойств().

🟡 Такой алгоритм заметно эффективнее, чем многократный перебор колонок для определения состава таблиц.

🟡 Для спорных случаев фиксируйте выбранный подход в комментариях к коду и документации.

🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.

#std448
https://v8std.ru/std/448/


Настройка расписания регламентных заданий

🟡 При разработке регламентных заданий выбирайте время и интервал запуска по прикладному назначению.

🟡 Учитывайте, что слишком частый запуск может негативно влиять на производительность сервера 1С:Предприятие.

🟡 Для спорных случаев фиксируйте выбранный подход в комментариях к коду и документации.

🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.

#std402
https://v8std.ru/std/402/


Использование привилегированного режима

🟡 Исключение: действия (или значения), которые действительно должны быть доступны всем категориям пользователей.

🟡 Так проверка прав на запись требуется только для регистратора.

🟡 Чтение/запись в такие регистры выполняйте только в привилегированном режиме.

🟡 Пользователь формирует отчет по регистру, но не должен изменять регистр напрямую.

#std485
https://v8std.ru/std/485/


Мне уже несколько человек написали что ставить v8std локально и MCP к нему тяжело.

Планирую переработать схему - будет просто mcp в каталоге docker. Ставиться одной кнопкой в докер десктоп.

Если тебе это нужно поставь 🔥


Починили MCP v8std 🎉

Нашли причину ошибок 500: долгоживущие подключения кодовых агентов забивали лимит nginx — 768 соединений на рабочий процесс оказалось недостаточно.

Отключили лишние постоянные каналы, настроили завершение старых процессов и подняли лимит до 4096 соединений — больше чем в пять раз.

За первые 14 минут после восстановления — 1138 запросов и ни одной серверной ошибки.

4096 соединений нельзя приравнять к 4096 пользователям: один агент может занимать несколько. Предел по одновременно работающим агентам ещё предстоит подтвердить нагрузочным тестом.


https://ai.v8std.ru/mcp временно работает не стабильно
пришло очень много новых пользователей

Выделяем отдельные ресурсы перенастраиваем систему
Как заработает сообщу дополнительно.


Особенности сортировки в таблице значений

🟡 Если таблица значений сортируется по колонкам со ссылочными значениями, учитывайте: для каждой такой колонки по всем строкам система получает представление ссылки из информационной базы.

🟡 Для этого в метод Сортировать() передавайте объект СравнениеЗначений.

🟡 Это особенно важно для таблиц с сотнями и тысячами строк, когда алгоритм критичен ко времени выполнения.

🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.

#std781
https://v8std.ru/std/781/

Показано 20 последних публикаций.