Использование Журнала регистрации
🟡 Не используйте выборки из журнала регистрации там, где критична высокая скорость.
🟡 Текст типа события должен быть локализуемым и задаваться на основном языке конфигурации.
🟡 Журнал регистрации хранит события, которые возникают в работе пользователей с информационной базой.
🟡 Одна запись журнала должна соответствовать одному событию.
#std498
https://v8std.ru/std/498/
#std498
https://v8std.ru/std/498/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование Журнала регистрации #std498
Журнал регистрации хранит события, которые возникают в работе пользователей с информационной базой.
1👍5❤🔥3
Разрешение итогов для периодических регистров сведений
🟡 Исключение: случаи, когда актуализация итогов при записи была отключена вызовом РегистрСведенийМенеджер.УстановитьИспользованиеИтогов(Ложь).
🟡 Если все условия выше выполняются, включение свойства Разрешить итоги: срез последних может существенно ускорить такие запросы: выборка идет из дополнительных таблиц с первыми/последними значениями.
🟡 Во всех остальных случаях итоги для периодических регистров сведений разрешать не следует.
🟡 Также следует рассматривать пересмотр запросов к регистру, чтобы условия для использования итогов выполнялись.
#std708
https://v8std.ru/std/708/
#std708
https://v8std.ru/std/708/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Разрешение итогов для периодических регистров сведений #std708
Для периодических регистров сведений рекомендуется разрешать итоги, если одновременно выполняются все условия:
1👍2🔥1
Большое обновление v8std.ru: диагностики теперь связаны с конкретными пунктами стандартов
Обновили сайт [v8std.ru](https://v8std.ru/) — теперь от сообщения диагностики можно перейти не просто к стандарту, а сразу к тому пункту, который объясняет проблему и требования к исправлению.
Что появилось:
• 691 диагностика АПК
Описания и рекомендации извлечены непосредственно из АПК версии 1.2.9.80.
• 186 диагностик BSL Language Server
• 172 диагностики EDT v8-code-style
Для каждой связи мы проверили, действительно ли диагностика соответствует указанному пункту стандарта. Устаревшие, неточные и ошибочные ссылки исправлены, а неподтверждённые связи исключены.
Например, страница [АПК 384](https://v8std.ru/diagnostics/acc/384/) теперь ведёт на актуальный пункт 6 стандарта о формировании печатных форм. При этом отдельно отмечено, что в самой выгрузке АПК указан прежний номер пункта — 7.
Что ещё сделано:
• добавлены полноценные описания диагностик из первичных источников;
• сформированы общие каталоги диагностик АПК, BSL LS и EDT;
• добавлены обратные ссылки со стандартов на связанные диагностики;
• обновлены поисковый индекс, LLMS-выгрузки и MCP-каталог;
• сохранена совместимость со старыми идентификаторами диагностик;
Каталог АПК:
https://v8std.ru/diagnostics/acc/
Диагностики BSL Language Server:
https://v8std.ru/diagnostics/bslls/
Диагностики EDT v8-code-style:
https://v8std.ru/diagnostics/v8-code-style/
Обновили сайт [v8std.ru](https://v8std.ru/) — теперь от сообщения диагностики можно перейти не просто к стандарту, а сразу к тому пункту, который объясняет проблему и требования к исправлению.
Что появилось:
• 691 диагностика АПК
Описания и рекомендации извлечены непосредственно из АПК версии 1.2.9.80.
• 186 диагностик BSL Language Server
• 172 диагностики EDT v8-code-style
Для каждой связи мы проверили, действительно ли диагностика соответствует указанному пункту стандарта. Устаревшие, неточные и ошибочные ссылки исправлены, а неподтверждённые связи исключены.
Например, страница [АПК 384](https://v8std.ru/diagnostics/acc/384/) теперь ведёт на актуальный пункт 6 стандарта о формировании печатных форм. При этом отдельно отмечено, что в самой выгрузке АПК указан прежний номер пункта — 7.
Что ещё сделано:
• добавлены полноценные описания диагностик из первичных источников;
• сформированы общие каталоги диагностик АПК, BSL LS и EDT;
• добавлены обратные ссылки со стандартов на связанные диагностики;
• обновлены поисковый индекс, LLMS-выгрузки и MCP-каталог;
• сохранена совместимость со старыми идентификаторами диагностик;
Каталог АПК:
https://v8std.ru/diagnostics/acc/
Диагностики BSL Language Server:
https://v8std.ru/diagnostics/bslls/
Диагностики EDT v8-code-style:
https://v8std.ru/diagnostics/v8-code-style/
Стандарты разработки 1С
Стандарты разработки 1С для практической разработки
Практический гид по стандартам разработки 1С: ключевые правила, диагностики BSLLS, ACC и EDT.
2🔥12👍8❤🔥3🎉2
Использование общих реквизитов
🟡 Не переносите в общие реквизиты обычные прикладные поля вроде Ответственный, Комментарий, Организация только ради удобства.
🟡 Учитывайте, что права на общие реквизиты настраиваются отдельно от прав на объекты, куда они добавлены.
🟡 Порядок общих реквизитов-разделителей в дереве метаданных выбирайте в соответствии с порядком установки связанных параметров сеанса.
🟡 Общие реквизиты без разделения данных используйте только для инфраструктурных задач конфигурации, когда данные нужно хранить прямо в прикладных объектах.
#std677
https://v8std.ru/std/677/
#std677
https://v8std.ru/std/677/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование общих реквизитов #std677
Общие реквизиты применяйте для двух задач:
1🔥3👍2❤1
Обновление оформления
Реестр диагностик https://v8std.ru/diagnostics/ теперь отрисовывает диагностики по конкретным пунктам сводно по всем стандартам чтобы быстро изучить покрытие
Сами диагностики теперь оформлены чипами и визуально смотрятся приятнее в том числе в тексте стандартов
Реестр диагностик https://v8std.ru/diagnostics/ теперь отрисовывает диагностики по конкретным пунктам сводно по всем стандартам чтобы быстро изучить покрытие
Сами диагностики теперь оформлены чипами и визуально смотрятся приятнее в том числе в тексте стандартов
1🔥9🥰6🎉3
Автоформатирование кода 1С
Не все нарушения стандартов обязательно исправлять вручную. Обработка «Автоформатирование кода и локализация» умеет автоматически применять 34 преобразования: форматировать код, исправлять структуру модулей, комментарии, локализацию и другие элементы конфигурации.
Мы сопоставили автозамены с конкретными пунктами стандартов. Теперь возле поддерживаемых пунктов отображается тег
В ней собраны:
— получение обработки с ИТС;
— пакетный запуск;
— работа с файловой и серверной базой;
— XML-выгрузка и проект EDT;
— получение и фиксация изменений в хранилище;
— настройка отбора стандартов и отдельных пунктов.
Подробнее: https://v8std.ru/diagnostics/autoformat/
Не все нарушения стандартов обязательно исправлять вручную. Обработка «Автоформатирование кода и локализация» умеет автоматически применять 34 преобразования: форматировать код, исправлять структуру модулей, комментарии, локализацию и другие элементы конфигурации.
Мы сопоставили автозамены с конкретными пунктами стандартов. Теперь возле поддерживаемых пунктов отображается тег
autoformat со ссылкой на инструкцию.В ней собраны:
— получение обработки с ИТС;
— пакетный запуск;
— работа с файловой и серверной базой;
— XML-выгрузка и проект EDT;
— получение и фиксация изменений в хранилище;
— настройка отбора стандартов и отдельных пунктов.
Подробнее: https://v8std.ru/diagnostics/autoformat/
1🔥17👍8❤3
Переопределение общих модулей в условиях иерархии библиотек
🟡 В самом переопределяемом модуле размещайте не реализацию, а только вызов.
🟡 В библиотеках более высокого уровня реализацию процедур и функций базового переопределяемого модуля доопределяйте при необходимости.
🟡 В конечной конфигурации-потребителе реализация переопределяемого модуля строится как цепочка вызовов библиотек плюс прикладная часть.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std554
https://v8std.ru/std/554/
#std554
https://v8std.ru/std/554/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Переопределение общих модулей в условиях иерархии библиотек #std554
При разработке нескольких библиотек, стоящих на поддержке друг у друга, снижайте трудоемкость обновления #std553: переопределяемых общих модулей.
2🔥6
Обработчик события ПриЗаписи
🟡 К моменту вызова ПриЗаписи объект уже записан в базе данных.
🟡 Закрепите ключевые правила стандарта «Обработчик события ПриЗаписи» в code review и внутренних чек-листах.
🟡 Для спорных случаев фиксируйте выбранный подход в комментариях к коду и документации.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std465
https://v8std.ru/std/465/
#std465
https://v8std.ru/std/465/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Обработчик события ПриЗаписи #std465
В обработчике ПриЗаписи модуля объекта (набора записей, значения константы) выполняйте действия, связанные с уже записанным объектом:
1🔥6👍3
Ограничения на использование вложенных запросов в условии соединения
🟡 Рекомендуемый подход - вынести вычисления во временную таблицу и затем соединять уже готовый результат.
🟡 Типовой проблемный сценарий: в условии соединения используется вложенный запрос, чтобы получить «срез последних» на конец предыдущего периода, причем для каждой номенклатуры период может отличаться.
🟡 Это может существенно замедлить запрос и в ряде случаев сделать его неработоспособным на отдельных СУБД.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std656
https://v8std.ru/std/656/
#std656
https://v8std.ru/std/656/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Ограничения на использование вложенных запросов в условии соединения #std656
Не используйте вложенные запросы в условии соединения. Это может существенно замедлить запрос и в ряде случаев сделать его неработоспособным на отдельных СУБД.
🔥4👍1
Переопределяемые и поставляемые объекты библиотеки
🟡 Не вызывайте процедуры переопределяемых модулей напрямую из кода конфигурации-потребителя.
🟡 Такие объекты должны присутствовать во всех конфигурациях, использующих библиотеку.
🟡 Переопределяемые общие модули должны содержать только экспортные процедуры, которые вызываются из кода библиотеки.
🟡 Через них настраивают поведение библиотечных подсистем и подключают библиотечную функциональность к объектам конфигурации-потребителя.
#std553
https://v8std.ru/std/553/
#std553
https://v8std.ru/std/553/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Переопределяемые и поставляемые объекты библиотеки #std553
Для настройки библиотеки в конфигурации-потребителе делите объекты на три категории:
🔥3
Общие сведения об организации хранения данных
🟡 Для хранения списка характеристик, когда состав списка, тип характеристик и их состав определяет пользователь, используйте «План видов характеристик».
🟡 Для хранения результатов расчета учета начислений и удержаний используйте «Регистр расчета».
🟡 Для хранения плана счетов по принципам двойной записи используйте объект метаданных «План счетов».
🟡 Для хранения данных учета с использованием принципа двойной записи используйте «Регистр бухгалтерии».
#std683
https://v8std.ru/std/683/
#std683
https://v8std.ru/std/683/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Общие сведения об организации хранения данных #std683
При проектировании системы одна из ключевых задач - выбрать типы объектов метаданных для хранения сущностей предметной области.
👍5💯2🔥1
Эффективные условия запросов
🟡 В дополнительном условии оператор ИЛИ можно использовать без ограничений.
🟡 В основном условии МЕЖДУ можно использовать для последнего (или единственного) поля индекса.
🟡 В основном условии ПОДОБНО можно применять для последнего (или единственного) используемого поля индекса.
🟡 Арифметические операции над полями выполняйте только в дополнительных условиях.
#std658
https://v8std.ru/std/658/
#std658
https://v8std.ru/std/658/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Эффективные условия запросов #std658
Условия запросов пишите с учетом производительности. Цель: не допускать существенного роста времени выполнения при увеличении объема данных.
👍10❤4
Июльское обновление стандартов 1С: один новый, два переписаны
1С обновила систему стандартов разработки. Коротко о том, что поменялось и что стоит проверить в своём коде.
Новый стандарт: Разработка правил регистраций (#std799)
Правила регистрации — алгоритмы проверок, фильтров и отборов данных, которые участвуют в обменах. Обычно их хранят в макете плана обмена: так их выгружает Конвертация данных. Теперь стандарт требует размещать правила в модулях конфигурации, например отдельным общим модулем — менеджером регистрации.
Зачем: код в модуле попадает в синтаксическую проверку платформы и в остальные проверки конфигурации, его проще отлаживать без внешних обработок и дешевле переводить при выпуске WE-версий.
Ещё два требования:
— в правилах регистрации запрещено переключать привилегированный и безопасный режимы;
— исправления ошибок в правилах обмена поставлять расширениями (патчами).
#std411: параметры выбора — три новых пункта
Самое заметное: не задавайте Режим изменения связанного значения = Очищать. Безусловная очистка ломает два сценария:
— повторный выбор того же ведущего значения обнуляет зависимый реквизит, хотя ничего не изменилось;
— если зависимое значение допустимо для нескольких ведущих, оно очистится, оставаясь корректным.
Вместо этого — код условной очистки. В стандарте есть готовый пример: запрос выбирает первые две подходящие характеристики и возвращает текущее значение, если оно всё ещё годится.
Исключение (п. 4.1): если повторно выбрать то же ведущее значение технически невозможно (например, это флажок) и связь строго один-к-одному — Очищать допустимо.
Ещё два пункта:
— параметры выбора стоит задавать и для объектов, которые не редактируются интерактивно: они работают в отборах отчётов и динамических списков;
— префикс Отбор. в имени параметра выбора — тогда значения приедут в ДанныеЗаполнения обработчика ОбработкаЗаполнения и новый объект создастся уже заполненным.
#std542: доступ к файловой системе — переписан целиком
Стандарт переструктурирован: шесть разделов вместо прежних пяти, два из них новые.
«Работа с двоичными данными и потоками». Не гоняйте данные через временные файлы, если хватит ПотокВПамяти. Классический антипаттерн: записать ТекстовыйДокумент во временный файл, прочитать из него ДвоичныеДанные, удалить файл — хотя данные и так были в памяти. И закрывайте потоки после чтения, иначе течёт память.
«Безопасность файловой системы» — восемь пунктов, которые полезно прогнать по своему коду:
— нельзя хранить путь или имя файла в реквизитах формы: на клиенте их подменят сторонними средствами, и серверный код полезет в произвольный файл;
— нельзя передавать путь к файлу в параметры серверных процедур форм и экспортных методов серверных общих модулей — их тоже можно вызвать с клиента;
— расширение файла, пришедшее с клиента, проверять по белому списку;
— перед работой с файлом на сервере убеждаться, что он лежит во временном каталоге или другом специально предусмотренном месте.
Плюс актуализированы методы передачи файлов: ПоместитьФайлНаСерверАсинх, НачатьПомещениеФайлаНаСервер и парные для скачивания вместо старых ПоместитьФайл и НачатьПомещениеФайла.
Разборы с примерами кода и скриншотами:
https://v8std.ru/std/799/
https://v8std.ru/std/411/
https://v8std.ru/std/542/
#std799 #std411 #std542
1С обновила систему стандартов разработки. Коротко о том, что поменялось и что стоит проверить в своём коде.
Новый стандарт: Разработка правил регистраций (#std799)
Правила регистрации — алгоритмы проверок, фильтров и отборов данных, которые участвуют в обменах. Обычно их хранят в макете плана обмена: так их выгружает Конвертация данных. Теперь стандарт требует размещать правила в модулях конфигурации, например отдельным общим модулем — менеджером регистрации.
Зачем: код в модуле попадает в синтаксическую проверку платформы и в остальные проверки конфигурации, его проще отлаживать без внешних обработок и дешевле переводить при выпуске WE-версий.
Ещё два требования:
— в правилах регистрации запрещено переключать привилегированный и безопасный режимы;
— исправления ошибок в правилах обмена поставлять расширениями (патчами).
#std411: параметры выбора — три новых пункта
Самое заметное: не задавайте Режим изменения связанного значения = Очищать. Безусловная очистка ломает два сценария:
— повторный выбор того же ведущего значения обнуляет зависимый реквизит, хотя ничего не изменилось;
— если зависимое значение допустимо для нескольких ведущих, оно очистится, оставаясь корректным.
Вместо этого — код условной очистки. В стандарте есть готовый пример: запрос выбирает первые две подходящие характеристики и возвращает текущее значение, если оно всё ещё годится.
Исключение (п. 4.1): если повторно выбрать то же ведущее значение технически невозможно (например, это флажок) и связь строго один-к-одному — Очищать допустимо.
Ещё два пункта:
— параметры выбора стоит задавать и для объектов, которые не редактируются интерактивно: они работают в отборах отчётов и динамических списков;
— префикс Отбор. в имени параметра выбора — тогда значения приедут в ДанныеЗаполнения обработчика ОбработкаЗаполнения и новый объект создастся уже заполненным.
#std542: доступ к файловой системе — переписан целиком
Стандарт переструктурирован: шесть разделов вместо прежних пяти, два из них новые.
«Работа с двоичными данными и потоками». Не гоняйте данные через временные файлы, если хватит ПотокВПамяти. Классический антипаттерн: записать ТекстовыйДокумент во временный файл, прочитать из него ДвоичныеДанные, удалить файл — хотя данные и так были в памяти. И закрывайте потоки после чтения, иначе течёт память.
«Безопасность файловой системы» — восемь пунктов, которые полезно прогнать по своему коду:
— нельзя хранить путь или имя файла в реквизитах формы: на клиенте их подменят сторонними средствами, и серверный код полезет в произвольный файл;
— нельзя передавать путь к файлу в параметры серверных процедур форм и экспортных методов серверных общих модулей — их тоже можно вызвать с клиента;
— расширение файла, пришедшее с клиента, проверять по белому списку;
— перед работой с файлом на сервере убеждаться, что он лежит во временном каталоге или другом специально предусмотренном месте.
Плюс актуализированы методы передачи файлов: ПоместитьФайлНаСерверАсинх, НачатьПомещениеФайлаНаСервер и парные для скачивания вместо старых ПоместитьФайл и НачатьПомещениеФайла.
Разборы с примерами кода и скриншотами:
https://v8std.ru/std/799/
https://v8std.ru/std/411/
https://v8std.ru/std/542/
#std799 #std411 #std542
Стандарты разработки 1С
Разработка правил регистраций #std801
Правила регистрации — алгоритмы, которые описывают проверки, фильтры и отборы данных, участвующих в синхронизации данных (обменах). Под данными понимаются как ссылочные, так и не...
🔥7❤3👍3🥰1🙏1
Использование модуля объекта, модуля менеджера объекта и общих модулей
🟡 Для функций модуля менеджера не должен требоваться экземпляр объекта данных (СправочникОбъект, ДокументОбъект и т.п.).
🟡 Размещайте в нем процедуры и функции, которые работают с данными объекта (ЭтотОбъект и переменные модуля), в том числе когда объект еще не записан в базу.
🟡 Учитывайте, что для вызова экспортных процедур и функций из других модулей обычно нужно сначала получить экземпляр через ПолучитьОбъект().
🟡 Если функциональность нельзя однозначно отнести к одному объекту метаданных, она считается общей для нескольких объектов.
#std486
https://v8std.ru/std/486/
#std486
https://v8std.ru/std/486/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование модуля объекта, модуля менеджера объекта и общих модулей #std486
Модуль объекта отвечает за поведение конкретного экземпляра объекта (СправочникОбъект, ДокументОбъект и т.п.).
🔥9👍2
Использование ключевых слов "ОБЪЕДИНИТЬ" и "ОБЪЕДИНИТЬ ВСЕ" в запросах
🟡 В общем случае при объединении результатов нескольких запросов используйте ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ.
🟡 Исключение: ситуации, когда удаление дубликатов является обязательным условием корректного результата запроса.
🟡 Причина: ОБЪЕДИНИТЬ удаляет полностью одинаковые строки, и это требует дополнительного времени даже тогда, когда одинаковых строк заведомо быть не может.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std434
https://v8std.ru/std/434/
#std434
https://v8std.ru/std/434/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование ключевых слов "ОБЪЕДИНИТЬ" и "ОБЪЕДИНИТЬ ВСЕ" в запросах #std434
В общем случае при объединении результатов нескольких запросов используйте ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ.
👍9😁2
Режим разделения итогов для регистров бухгалтерии
🟡 Если при этом выполняется контроль остатков, эффект от разделения итогов ограничен.
🟡 Если движения по бухгалтерскому регистру записываются оперативно в многопользовательском режиме, рекомендуется включить разделение итогов.
🟡 Устройство и использование режима разделения итогов регистров (статья на ИТС).
🟡 В конфигурации есть регистр Хозрасчетный с измерениями Организация и Валюта.
#std663
https://v8std.ru/std/663/
#std663
https://v8std.ru/std/663/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Режим разделения итогов для регистров бухгалтерии #std663
Если движения по бухгалтерскому регистру записываются оперативно в многопользовательском режиме, рекомендуется включить разделение итогов.
👍2