Ограничения на использование Выполнить и Вычислить на сервере
🟡 Не выполняйте на сервере строки кода, собранные из внешних параметров, без строгого контроля источника и содержимого.
🟡 Перед вызовом
🟡 По возможности используйте безопасные обертки БСП вместо прямого вызова
🟡 Код, который нельзя запускать в безопасном режиме, выполняйте только после аудита и только из контролируемого администратором хранилища.
#std770
https://v8std.ru/std/770/
Выполнить и Вычислить на сервере включайте безопасный режим, а в сервисной модели дополнительно включайте безопасный режим разделения данных.Выполнить и Вычислить.#std770
https://v8std.ru/std/770/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Ограничения на использование Выполнить и Вычислить на сервере #std770
Опасность представляет не только прямое выполнение кода пользователя, но и выполнение строк, собранных из параметров и переданных в серверные процедуры/функции.
1👍12🔥5👌3
Транзакции: правила использования
🟡 Начинайте и завершайте транзакцию в одном методе: пары
🟡 Размещайте
🟡 В блоке
🟡 Избегайте лишних, вложенных и длинных транзакций: открывайте их только для действительно неделимых операций.
#std783
https://v8std.ru/std/783/
НачатьТранзакцию и ЗафиксироватьТранзакцию`/`ОтменитьТранзакцию не разносите по разным функциям.ЗафиксироватьТранзакцию последней операцией в блоке Попытка, чтобы после фиксации не возникали новые исключения.Исключение сначала вызывайте ОтменитьТранзакцию, затем выполняйте логирование и завершайте обработку оператором ВызватьИсключение.#std783
https://v8std.ru/std/783/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Транзакции: правила использования #std783
Транзакция - это действие, которое может быть выполнено только целиком. Если часть действия не выполнена - все действие отменяется.
1👍16🔥9👌4❤3💯3🤨1
4🔥55❤🔥16👍12🏆4
Работа с пользовательскими настройками
🟡 Для каждой настройки в хранилище общих настроек используйте уникальный строковый ключ.
🟡 В конфигурации должно быть общее место для редактирования всех пользовательских настроек.
🟡 Если позже будет создан пользователь с прежним именем, он получит ранее сохраненные настройки.
🟡 При необходимости перенос настроек между узлами реализуйте отдельно средствами встроенного языка.
#std557
https://v8std.ru/std/557/
#std557
https://v8std.ru/std/557/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Работа с пользовательскими настройками #std557
Для хранения персональных настроек пользователя используйте ХранилищеОбщихНастроек.
1🔥14👌1
Версия платформы 1С:Предприятие для разработки
🟡 Для решений государственных учреждений при этом новый релиз платформы должен быть сертифицирован в короткие сроки.
🟡 В качестве рекомендуемой версии указывается последний опубликованный релиз 8.3.15, если в нем улучшены функции, важные для пользователей.
🟡 В этом случае пользователи могут продолжать работу на текущем сертифицированном релизе и одновременно получают рекомендацию по обновлению.
🟡 В прикладных решениях для государственных учреждений, оборонных предприятий и корпоративных клиентов рекомендуемая версия может быть выше версии, на которой основан последний сертифицированный релиз.
#std785
https://v8std.ru/std/785/
#std785
https://v8std.ru/std/785/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Версия платформы 1С:Предприятие для разработки #std785
Минимальная версия платформы, на которой обеспечивается работа прикладного решения, устанавливается:
1🤔16❤6
Начальные действия при работе конфигурации
🟡 Для подробного протокола выполненных операций и ошибок используйте журнал регистрации.
🟡 Если в конфигурации используется Библиотека стандартных подсистем, применяйте подсистему Обновление версии ИБ.
🟡 Ситуации, когда обработка выполнена не полностью, должны контролироваться конфигурацией.
🟡 Проверяйте соблюдение стандарта при доработках и перед выпуском релиза.
#std556
https://v8std.ru/std/556/
#std556
https://v8std.ru/std/556/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Начальные действия при работе конфигурации #std556
В конфигурации должен быть механизм, который автоматически:
2🔥9⚡1👌1
Поддержка толстого клиента, управляемое приложение, клиент-сервер
🟡 Не устанавливайте признак Вызов сервера всем модулям с признаком Сервер.
🟡 Для расстановки фрагментов кода с инструкциями препроцессора можно использовать обработку с ИТС.
🟡 Обработчики ОбработкаПолученияДанныхВыбора и ОбработкаПолученияФормы вызываются только на сервере, и это ограничение на них не распространяется.
🟡 В этих модулях часто есть обращения к общим модулям, доступным только на сервере.
#std680
https://v8std.ru/std/680/
#std680
https://v8std.ru/std/680/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Поддержка толстого клиента, управляемое приложение, клиент-сервер #std680
В управляемом режиме иногда требуется поддержка запуска толстого клиента (режим управляемого приложения). Причина — часть возможностей, которые есть в обычном приложении, но...
1🔥11👌1
Технология разветвленной разработки конфигураций
🟡 При сборке исправительной версии рекомендуется устанавливать метку с номером сборки на закладке той версии хранилища, которая идет в сборку.
🟡 При сборке плановой версии рекомендуется устанавливать метку с номером сборки на закладке той версии хранилища, конфигурация которой идет в сборку.
🟡 В исправительной версии не должно быть объемных доработок конфигурации.
🟡 Все изменения по техническому проекту переносите в основное хранилище за одну закладку.
#std709
https://v8std.ru/std/709/
#std709
https://v8std.ru/std/709/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Технология разветвленной разработки конфигураций #std709
Цели внедрения технологии:
1🔥8👍2👌1
Особенности разработки конфигураций для ОС Linux и macOS
🟡 Используйте кроссплатформенные средства платформы для работы с файловой системой.
🟡 Для ключевых функций прикладного решения используйте кроссплатформенные механизмы платформы.
🟡 Если применяется БСП, используйте функции модулей ОбщегоНазначения и ОбщегоНазначенияКлиент.
🟡 В большинстве случаев платформа сама обеспечивает кроссплатформенную работу клиентского и серверного кода.
#std723
https://v8std.ru/std/723/
#std723
https://v8std.ru/std/723/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Особенности разработки конфигураций для ОС Linux и macOS #std723
В большинстве случаев платформа сама обеспечивает кроссплатформенную работу клиентского и серверного кода.
1👍11👌1
Использование значений, влияющих на поведение клиентского приложения
🟡 Если от значения зависит поведение команд или большого числа форм, используйте подход с общим модулем и кешированием на сеанс.
🟡 Если данные влияют только на одну форму или небольшой набор форм, храните их в реквизитах формы и получайте в ПриСозданииНаСервере.
🟡 Такой подход применяйте, когда изменение этих значений в течение сеанса некритично, и в рамках сеанса можно использовать один раз полученное значение.
🟡 Ограничивайте применение клиентских модулей с повторным использованием возвращаемых значений.
#std459
https://v8std.ru/std/459/
#std459
https://v8std.ru/std/459/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование значений, влияющих на поведение клиентского приложения #std459
Если поведение многих форм или команд зависит от одних и тех же значений, для минимизации клиент-серверного взаимодействия используйте #std724: общие модули с повторным...
1🔥8❤1
Несоответствие индексов и условий запроса
🟡 Проверяйте, что для всех условий запроса есть подходящие индексы.
🟡 Если между используемыми полями есть пропуски, индекс применяется только частично.
🟡 Реквизиты справочников и документов рекомендуется индексировать с дополнительным упорядочиванием.
#std652
https://v8std.ru/std/652/
#std652
https://v8std.ru/std/652/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Несоответствие индексов и условий запроса #std652
Проверяйте, что для всех условий запроса есть подходящие индексы.
1🤔5❤2👍2🔥2👌1
Режим разделения итогов для регистров накопления
🟡 При проектировании регистра накопления учитывайте, что остатки по одному набору измерений хранятся в одном ресурсе.
🟡 Если включить разделение итогов, обе записи смогут выполняться параллельно даже при совпадении строк по измерениям.
🟡 Но при включенном контроле остатков разделение итогов не даст ожидаемого прироста, и контроль остатков нужно переносить к концу транзакции.
#std664
https://v8std.ru/std/664/
#std664
https://v8std.ru/std/664/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Режим разделения итогов для регистров накопления #std664
При проектировании регистра накопления учитывайте, что остатки по одному набору измерений хранятся в одном ресурсе.
1👌3
Разработка ролей в библиотеках
🟡 В большинстве случаев библиотека должна поставлять готовый набор ролей для работы со своими данными (справочники, регистры и т.п.).
🟡 В ролях допустимо задавать не только права к объектам, но и ограничения доступа на уровне записей (RLS).
🟡 Если для библиотечных ролей используются правила поставки, для всех ролей задавайте правило Изменения разрешены.
#std668
https://v8std.ru/std/668/
#std668
https://v8std.ru/std/668/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Разработка ролей в библиотеках #std668
При проектировании ролей в библиотеках придерживайтесь общего подхода к границам функциональности библиотеки:
1👍13👌2
Дополнительные индексы
🟡 Не понятно зачем нужен этот пункт "подстилка", ведь для того чтобы не исполнить стандарт разрешение стандарта не нужно :).
🟡 Для таблиц до 1 млн записей должно работать быстро без доп.
🟡 Не делайте несколько веток кода в зависимости от использования доп.
🟡 Для больших таблиц - производительность должна гарантироваться доп.
#std791
https://v8std.ru/std/791/
#std791
https://v8std.ru/std/791/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Дополнительные индексы #std791
Дополнительный индекс – это индекс сразу по нескольким полям объекта метаданных.
1👍5❤2😁1🤮1👌1🤣1
Уточнение сущности объекта метаданных
🟡 Для уточнения сущности объекта используйте отдельные реквизиты, которые явно задают вид или состояние.
🟡 В справочнике Организации использовать только реквизит ГоловнаяОрганизация и по его заполненности определять вид организации: «обычная» или обособленное подразделение.
🟡 Используйте разные типы объектов метаданных для разных сущностей.
🟡 Если у сущности несколько состояний, не заводите несколько булевых реквизитов для каждого состояния.
#std541
https://v8std.ru/std/541/
#std541
https://v8std.ru/std/541/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Уточнение сущности объекта метаданных #std541
Используйте разные типы объектов метаданных для разных сущностей. Например, сущность «организация» описывайте справочником Организации, а сущность «подразделение» - отдельным...
1👍4❤1🥰1😁1
Подсказка и проверка заполнения
🟡 Для документа Заказ клиента реквизит Клиент и табличная часть Товары должны быть обязательными.
🟡 Если хотя бы один сценарий требует обязательного заполнения, ставьте Проверка заполнения = Выдавать ошибку.
🟡 Если проверка заполнения зависит от условий, управляйте автопометкой незаполненного значения через условное оформление формы.
🟡 Для типизированных объектов метаданных, стандартных реквизитов и табличных частей, которые обязательны по логике объекта, устанавливайте свойство Проверка заполнения = Выдавать ошибку.
#std478
https://v8std.ru/std/478/
#std478
https://v8std.ru/std/478/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Подсказка и проверка заполнения #std478
Свойство Подсказка задавайте только для тех реквизитов и объектов, которые пользователь видит в интерфейсе и для которых действительно нужно пояснение.
1🔥5
Использование реквизитов строкового типа
🟡 Для реквизитов строкового типа используйте переменную длину строки: Допустимая длина = Переменная.
🟡 Если используются строковые реквизиты неограниченной длины, учитывайте ограничения языка запросов.
#std432
https://v8std.ru/std/432/
#std432
https://v8std.ru/std/432/
Please open Telegram to view this post
VIEW IN TELEGRAM
Стандарты разработки 1С
Использование реквизитов строкового типа #std432
Для реквизитов строкового типа используйте переменную длину строки: Допустимая длина = Переменная.
1🤔9🔥2
Требования к установке и обновлению прикладных решений
🟡 В каталоге версии вместо точек должны использоваться подчеркивания.
🟡 В строке 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