Требования к установке и обновлению прикладных решений
🟡 В каталоге версии вместо точек должны использоваться подчеркивания.
🟡 В строке Catalog файла-манифеста, в наименование шаблона конфигурации (часть значения до символа «/») следует включать в явном виде название разработчика.
#std731
https://v8std.ru/std/731/
#std731
https://v8std.ru/std/731/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Требования к установке и обновлению прикладных решений #std731
Подготовка дистрибутивов установки и обновления прикладных решений (конфигураций) системы 1С:Предприятие 8 должна выполняться в соответствии с рекомендациями, изложенными в главе...
1🔥8❤4👍3
Forwarded from Игорь Апресов | Radio Ingvar
Обратите внимание на проект
https://github.com/itrous/bsl-analyzer
Это LSP сервер по мотивам BSL LS написанный на расте, по примеру rust-analyzer.
Конфиг BSL LS зачитыаается для обратной совместимости.
Под капотом MCP CLI и LSP сразу.
Еще есть HIR, Salsa, cfg и dfg при этом: AST представляется в универсальном формате и динамически пересчитывается вместе с гарафами потока управления и потока данных при редактировании кода.
На УТ:
2.6x быстрее
2.9x меньше памяти
Работает только с форматом xml конфигуратора.
Самое время ковырять!
https://github.com/itrous/bsl-analyzer
Это LSP сервер по мотивам BSL LS написанный на расте, по примеру rust-analyzer.
Конфиг BSL LS зачитыаается для обратной совместимости.
Под капотом MCP CLI и LSP сразу.
Еще есть HIR, Salsa, cfg и dfg при этом: AST представляется в универсальном формате и динамически пересчитывается вместе с гарафами потока управления и потока данных при редактировании кода.
На УТ:
2.6x быстрее
2.9x меньше памяти
Работает только с форматом xml конфигуратора.
Самое время ковырять!
GitHub
GitHub - itrous/bsl-analyzer: Анализатор кода BSL (1С:Предприятие) с поддержкой LSP. Написан на Rust.
Анализатор кода BSL (1С:Предприятие) с поддержкой LSP. Написан на Rust. - itrous/bsl-analyzer
1👍15🔥7❤3👎2
Обеспечение совместимости библиотек
🟡 Размещайте программный интерфейс библиотеки только в общих модулях, а не в модулях объектов, менеджеров, наборов записей и т.п.
🟡 В документации к «концу года» отмечайте, что версия обязательна для перехода, чтобы гарантировать перенос или очистку данных для реструктуризации.
🟡 Если нужно пересмотреть состав параметров, используйте опциональные параметры и добавляйте их в конец списка.
🟡 Если интерфейс и служебная реализация разнесены по разным модулям, для служебного модуля используйте постфикс Служебный (Internal).
#std644
https://v8std.ru/std/644/
#std644
https://v8std.ru/std/644/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Обеспечение совместимости библиотек #std644
При разработке библиотек обеспечивайте обратную совместимость между версиями в пределах одной #std483: подредакции.
1👍11🔥1
Упорядочивание результатов запроса
🟡 Если алгоритм обработки зависит от порядка записей или результат показывается пользователю, в тексте запроса следует использовать УПОРЯДОЧИТЬ ПО.
🟡 Если используется РАЗЛИЧНЫЕ, сортируйте только по полям, включенным в ВЫБРАТЬ.
🟡 В остальных случаях АВТОУПОРЯДОЧИВАНИЕ также не рекомендуется, так как разработчик не контролирует поля сортировки.
🟡 Причины использования АВТОУПОРЯДОЧИВАНИЕ нужно указывать в комментарии непосредственно перед текстом запроса.
#std412
https://v8std.ru/std/412/
#std412
https://v8std.ru/std/412/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Упорядочивание результатов запроса #std412
Если алгоритм обработки зависит от порядка записей или результат показывается пользователю, в тексте запроса следует использовать УПОРЯДОЧИТЬ ПО.
1👍15🔥3
Использование управляемого режима блокировки
🟡 В конфигурациях следует использовать управляемый режим блокировок (свойство конфигурации Режим управления блокировкой данных устанавливается в значение Управляемый) и учитывать его особенности.
🟡 Они связаны с особенностями механизмов блокировок в самой СУБД и с тем, что СУБД не учитывает физический смысл и структуру объектов метаданных 1С:Предприятия.
🟡 Одновременно могут возникать избыточные блокировки на уровне СУБД.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std460
https://v8std.ru/std/460/
#std460
https://v8std.ru/std/460/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование управляемого режима блокировки #std460
В конфигурациях следует использовать управляемый режим блокировок (свойство конфигурации Режим управления блокировкой данных устанавливается в значение Управляемый) и учитывать его...
1❤🔥8🔥5👍3
Обработчик события ОбработкаЗаполнения
🟡 Если нужно ограничить ввод по команде Создать на основании, выполняйте проверку в обработчике ОбработкаЗаполнения модуля объекта (или набора записей).
🟡 Не выносите такую проверку в отдельные команды ввода на основании и их обработчики.
🟡 При возможности используйте свойство метаданных Значение заполнения.
🟡 Сначала выполняйте специальное заполнение в зависимости от типа ДанныеЗаполнения.
#std396
https://v8std.ru/std/396/
#std396
https://v8std.ru/std/396/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Обработчик события ОбработкаЗаполнения #std396
Если нужно ограничить ввод по команде Создать на основании, выполняйте проверку в обработчике ОбработкаЗаполнения модуля объекта (или набора записей).
1👍15❤1
Проверка прав доступа
🟡 Если роль не дает прав на объекты метаданных и служит только маркером дополнительного права, используйте РольДоступна.
🟡 Не используйте ролевую настройку видимости в командном интерфейсе конфигурации, интерфейсе основного раздела и рабочей области начальной страницы.
🟡 Такой подход повышает устойчивость кода к пересмотру состава ролей.
#std737
https://v8std.ru/std/737/
#std737
https://v8std.ru/std/737/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Проверка прав доступа #std737
Если в конфигурации много ролей (от нескольких десятков), не используйте ролевую настройку видимости в элементах форм:
1🔥8👍6💯3❤1
Forwarded from Игорь Апресов | Radio Ingvar
v8std-search-benchmark-results.pdf
119.9 KB
https://v8std.ru/mcp/
Я тут докрутил mcp к базе стандартов.
Можно локально у себя поднять можно готовый подключить.
Он по фрагменту кода находит применимые к нему стандарты
Получает стандарты в маркдауне чистом виде
По коду диагностик апк бсл и едт находит описание диагностики и пункт стандарта.
Ну и просто умеет искать по произвольным фразам стандарты)
Я тут докрутил mcp к базе стандартов.
Можно локально у себя поднять можно готовый подключить.
Он по фрагменту кода находит применимые к нему стандарты
Получает стандарты в маркдауне чистом виде
По коду диагностик апк бсл и едт находит описание диагностики и пункт стандарта.
Ну и просто умеет искать по произвольным фразам стандарты)
1🔥16👍9❤3
Forwarded from Игорь Апресов | Radio Ingvar
https://ai.v8std.ru/monitoring/
Добавил статистику публичную:
Что за последние 24 часа использовали и как в MCP.
Для разъяснений кода не стал включать трекер и сохранение фрагментов кода.
А вот запросы на поиск решил сохранять чтобы помониторить как именно LLM формулирует запросы. Это прям интересно получается.
Отдельно по логам собирается трек запросов скраберов которые пытаются выдернуть все что плохо лежит - тоже для интересующихся можно посмотреть что пытаются запрашивать злоумышленники.
Добавил статистику публичную:
Что за последние 24 часа использовали и как в MCP.
Для разъяснений кода не стал включать трекер и сохранение фрагментов кода.
А вот запросы на поиск решил сохранять чтобы помониторить как именно LLM формулирует запросы. Это прям интересно получается.
Отдельно по логам собирается трек запросов скраберов которые пытаются выдернуть все что плохо лежит - тоже для интересующихся можно посмотреть что пытаются запрашивать злоумышленники.
1🔥11👍6❤4
Общие требования по разработке оптимальных запросов
🟡 Не следует любой ценой переносить выполнение задачи в СУБД: простые запросы СУБД обычно выполняет эффективнее, чем избыточно сложные универсальные.
🟡 Для сложных запросов проверяйте, что СУБД выбирает эффективный план выполнения.
🟡 В большинстве случаев следует минимизировать и общее количество запросов к СУБД.
🟡 Если нужно выполнять свертку, сортировку или вычисления, сначала проверьте, можно ли переложить эти операции на СУБД и сразу получить готовый результат.
#std729
https://v8std.ru/std/729/
#std729
https://v8std.ru/std/729/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Общие требования по разработке оптимальных запросов #std729
Прежде чем переходить к продвинутым приемам оптимизации, убедитесь, что сам запрос адекватен задаче.
1🔥13👍8❤4
Как вы заметили, пока постов нет.
Майская передышка до 15 мая :)
Потом продолжим.
Майская передышка до 15 мая :)
Потом продолжим.
1👍34👌16😢4🎉3🤬1
Майская передышка пролетела, Кунг-фу в Екатеринбурге провели, продолжаем посты по стандартам 🙂
1👍13
Безопасность программного обеспечения, вызываемого через открытые интерфейсы
🟡 При использовании интеграции со сторонними приложениями с помощью открытых интерфейсов (в частности, с помощью COM) требуется отключать исполнение произвольного кода средствами вызываемого приложения.
🟡 В частности, перед программным открытием документов Microsoft Word и Microsoft Excel через COM следует запрещать исполнение макросов.
🟡 Разрешить запуск только подписанных макросов .
#std775
https://v8std.ru/std/775/
#std775
https://v8std.ru/std/775/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Безопасность программного обеспечения, вызываемого через открытые интерфейсы #std775
При интеграции со сторонними приложениями через открытые интерфейсы (в частности, COM) отключайте исполнение произвольного кода средствами вызываемого приложения.
1👍15🔥6✍3❤1
Стандартные роли
🟡 Если пользователю нужен неограниченный просмотр всех данных, для него отключайте (не задавайте) условия ограничения доступа на уровне записей (RLS).
🟡 Если в конфигурации есть разграничение прав доступа, настраивайте доступ только ролями.
🟡 При разработке расширений не рекомендуется заимствовать и изменять роли АдминистраторСистемы и ПолныеПрава.
#std488
https://v8std.ru/std/488/
#std488
https://v8std.ru/std/488/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Стандартные роли #std488
Если в конфигурации есть разграничение прав доступа, настраивайте доступ только ролями.
1🔥11❤3
Порядок записи движений документов
🟡 Не используйте явную запись наборов записей регистров методом Записать() в процедуре обработки проведения документа.
🟡 Исключение: данные из регистров нужны в последующих алгоритмах, которые выполняются до выхода из процедуры проведения.
🟡 Запись должна выполняться системой неявно, при завершении процедуры проведения.
🟡 Иначе при параллельной работе пользователей возможны взаимные блокировки при проведении документов.
#std450
https://v8std.ru/std/450/
#std450
https://v8std.ru/std/450/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Порядок записи движений документов #std450
Не используйте явную запись наборов записей регистров методом Записать() в процедуре обработки проведения документа.
1👍22🤔3🔥2
Использование определяемых типов
🟡 Для определения простого типа и его квалификаторов, если тип имеет прикладной смысл и используется в разных реквизитах, ресурсах, реквизитах форм, макетах и т.д.
🟡 Если это не внедряемая подсистема и тип не предполагается расширять, не нужно создавать отдельный определяемый тип из единственного типа Контрагенты «на всякий случай».
🟡 Без определяемого типа пришлось бы задавать состав типов во всех этих местах вручную и снимать объекты подсистемы с поддержки.
#std704
https://v8std.ru/std/704/
#std704
https://v8std.ru/std/704/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование определяемых типов #std704
Определяемые типы используйте для данных, которые:
1👍13❤3
Общие сведения об избыточных блокировках
🟡 В этом контексте ресурсом считается неделимая совокупность данных, которая блокируется только целиком.
🟡 Ожидание блокировки возникает, когда разные сеансы 1С:Предприятия пытаются захватить один и тот же ресурс.
🟡 Поэтому при проектировании важно понимать, какие ресурсы захватываются при каждой операции и насколько «мелко» нарезаны данные.
🟡 Ошибки в проектировании структуры объектов метаданных могут привести к большому количеству избыточных блокировок и заметному падению производительности системы.
#std659
https://v8std.ru/std/659/
#std659
https://v8std.ru/std/659/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Общие сведения об избыточных блокировках #std659
Ошибки в проектировании структуры объектов метаданных могут привести к большому количеству избыточных блокировок и заметному падению производительности системы.
1👍13❤🔥1
Безопасное хранение паролей
🟡 Не храните пароли и другие конфиденциальные данные в реквизитах тех же объектов метаданных, с которыми ведется повседневная работа.
🟡 В этих случаях допустимо хранение паролей в ИБ, но пользователей нужно предупредить о рисках.
🟡 Если пароль уже сохранен, в реквизит формы записывается уникальный идентификатор, который эмулирует наличие пароля.
🟡 Если используется БСП, применяйте безопасное хранилище паролей.
#std740
https://v8std.ru/std/740/
#std740
https://v8std.ru/std/740/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Безопасное хранение паролей #std740
При разработке подсистем, которые работают с внешними ресурсами (почта, веб-сервисы, FTP и т. п.), обычно нужно передавать данные аутентификации: логин и пароль.
1👍12🔥6
Имена объектов метаданных в иерархии библиотек
🟡 Для разрешения конфликтов рекомендуется закреплять приоритет выбора имени за библиотекой более низкого уровня.
🟡 В конечных конфигурациях-потребителях и библиотеках более высокого уровня используйте более специфичные названия предметной области.
🟡 Наиболее универсальные имена используйте в библиотеках нижнего уровня иерархии.
🟡 Для независимых одноуровневых библиотек конфликты имен могут обнаружиться поздно - при внедрении или после него.
#std552
https://v8std.ru/std/552/
#std552
https://v8std.ru/std/552/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Имена объектов метаданных в иерархии библиотек #std552
Если конфигурация использует одну или несколько #std551: библиотек, избегайте конфликтов имен объектов метаданных (справочников, документов, общих модулей и др.) между библиотеками...
1👍10❤3
Блокирующее чтение остатков в начале транзакции
🟡 Если после проведения остатки становятся отрицательными, транзакцию нужно отменять.
🟡 В ряде задач нужно выполнять блокирующее чтение итогов.
🟡 Чтобы снизить влияние этой блокировки, переносите проверку как можно ближе к концу транзакции.
🟡 Нужно запретить двум пользователям одновременно читать один и тот же остаток за период, счет и значения измерений.
#std661
https://v8std.ru/std/661/
#std661
https://v8std.ru/std/661/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Блокирующее чтение остатков в начале транзакции #std661
В ряде задач нужно выполнять блокирующее чтение итогов. Типовой случай - контроль остатков при проведении документа.
1🔥7👍4🤔1
Вызов исключений в коде
🟡 Проверяйте внешний вид исключений без отладки и без режима технического специалиста: поведение окна исключения зависит от режима запуска.
🟡 В общем случае исключения в коде вызывать не требуется.
🟡 Для остальных случаев рекомендуется задавать категорию (ОшибкаРаботыСПринтером, ОшибкаСети, НарушениеПравДоступа и т.п.).
#std790
https://v8std.ru/std/790/
#std790
https://v8std.ru/std/790/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Вызов исключений в коде #std790
В общем случае исключения в коде вызывать не требуется.
👍8