Стандарты 1С v8std
2.26K subscribers
16 photos
6 videos
1 file
96 links
Download Telegram
Общие требования по разработке оптимальных запросов

🟡 Не следует любой ценой переносить выполнение задачи в СУБД: простые запросы СУБД обычно выполняет эффективнее, чем избыточно сложные универсальные.

🟡 Для сложных запросов проверяйте, что СУБД выбирает эффективный план выполнения.

🟡 В большинстве случаев следует минимизировать и общее количество запросов к СУБД.

🟡 Если нужно выполнять свертку, сортировку или вычисления, сначала проверьте, можно ли переложить эти операции на СУБД и сразу получить готовый результат.

#std729
https://v8std.ru/std/729/
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥13👍84
Как вы заметили, пока постов нет.

Майская передышка до 15 мая :)

Потом продолжим.
1👍34👌16😢4🎉3🤬1
Майская передышка пролетела, Кунг-фу в Екатеринбурге провели, продолжаем посты по стандартам 🙂
1👍13
Безопасность программного обеспечения, вызываемого через открытые интерфейсы

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

🟡 В частности, перед программным открытием документов Microsoft Word и Microsoft Excel через COM следует запрещать исполнение макросов.

🟡 Разрешить запуск только подписанных макросов .


#std775
https://v8std.ru/std/775/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍15🔥631
Стандартные роли

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

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

🟡 При разработке расширений не рекомендуется заимствовать и изменять роли АдминистраторСистемы и ПолныеПрава.

#std488
https://v8std.ru/std/488/
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥113
Порядок записи движений документов

🟡 Не используйте явную запись наборов записей регистров методом Записать() в процедуре обработки проведения документа.

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

🟡 Запись должна выполняться системой неявно, при завершении процедуры проведения.

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

#std450
https://v8std.ru/std/450/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍22🤔3🔥2
Использование определяемых типов

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

🟡 Если это не внедряемая подсистема и тип не предполагается расширять, не нужно создавать отдельный определяемый тип из единственного типа Контрагенты «на всякий случай».

🟡 Без определяемого типа пришлось бы задавать состав типов во всех этих местах вручную и снимать объекты подсистемы с поддержки.

#std704
https://v8std.ru/std/704/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍133
Общие сведения об избыточных блокировках

🟡 В этом контексте ресурсом считается неделимая совокупность данных, которая блокируется только целиком.

🟡 Ожидание блокировки возникает, когда разные сеансы 1С:Предприятия пытаются захватить один и тот же ресурс.

🟡 Поэтому при проектировании важно понимать, какие ресурсы захватываются при каждой операции и насколько «мелко» нарезаны данные.

🟡 Ошибки в проектировании структуры объектов метаданных могут привести к большому количеству избыточных блокировок и заметному падению производительности системы.

#std659
https://v8std.ru/std/659/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍13❤‍🔥1
Безопасное хранение паролей

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

🟡 В этих случаях допустимо хранение паролей в ИБ, но пользователей нужно предупредить о рисках.

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

🟡 Если используется БСП, применяйте безопасное хранилище паролей.

#std740
https://v8std.ru/std/740/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍12🔥6
Имена объектов метаданных в иерархии библиотек

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

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

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

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

#std552
https://v8std.ru/std/552/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍103
Блокирующее чтение остатков в начале транзакции

🟡 Если после проведения остатки становятся отрицательными, транзакцию нужно отменять.

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

🟡 Чтобы снизить влияние этой блокировки, переносите проверку как можно ближе к концу транзакции.

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

#std661
https://v8std.ru/std/661/
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥7👍4🤔1
Вызов исключений в коде

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

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

🟡 Для остальных случаев рекомендуется задавать категорию (ОшибкаРаботыСПринтером, ОшибкаСети, НарушениеПравДоступа и т.п.).

#std790
https://v8std.ru/std/790/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Многократное выполнение однотипных запросов

🟡 Запросы к разным таблицам тоже рекомендуется объединять в один с помощью ОБЪЕДИНИТЬ ВСЕ или пакета запросов.

🟡 При этом выигрыш по времени выполнения может быть незначительным.

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

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

#std436
https://v8std.ru/std/436/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102
Предварительная инициализация локальных переменных

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

🟡 Эта рекомендация особенно важна для больших блоков Если / ИначеЕсли / Иначе, где визуально сложно проверить все ветки инициализации.

🟡 Это снижает риск ошибок времени выполнения, когда переменная остается Неопределено, а следующий код ожидает конкретный тип.


#std494
https://v8std.ru/std/494/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
Минимизация количества серверных вызовов и трафика

🟡 Если массив хранится как ДанныеФормыКоллекция, форма может передать его неполностью, и платформа выполнит дополнительное дочитывание данных с сервера.

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

🟡 Если форма открывается из кода, выполняйте это за один вызов ОткрытьФорму.

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

#std487
https://v8std.ru/std/487/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Денежные поля: требования по локализации

🟡 При использовании функции Формат, а также при задании формата в свойствах элементов формы, полей наборов СКД и т.п.

🟡 Используйте функцию, которая возвращает описание на основе определяемого типа.

🟡 Если используется БСП, не применяйте конструктор типа Число для описания типа денежного поля.

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

#std778
https://v8std.ru/std/778/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Нумерация редакций и версий

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

🟡 Каждая часть содержит минимум одну цифру и при необходимости может быть длиннее.

🟡 Новая редакция получает следующий целый номер относительно предыдущей.

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

#std483
https://v8std.ru/std/483/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Использование модулей с повторным использованием возвращаемых значений

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

🟡 Чтобы получить значение из кеша, вызывайте функцию через имя модуля явно.

🟡 Ограничение также распространяется на использование таких значений во временном хранилище.

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

#std724
https://v8std.ru/std/724/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62