Перейти к содержанию

Реестр диагностик по стандартам

#std402: Настройка расписания регламентных заданий 2 проверки · 0 пунктов
#std404: Открытие форм 4 проверки · 2 пункта
#std409: Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение 3 проверки · 1 пункт
#std412: Упорядочивание результатов запроса 2 проверки · 2 пункта
#std418: Ограничение на использование метода Сообщить 3 проверки · 0 пунктов
#std432: Использование реквизитов строкового типа 1 проверка · 1 пункт

п. 1.1 — Для реквизитов строкового типа используйте переменную длину строки:

#std434: Использование ключевых слов "ОБЪЕДИНИТЬ" и "ОБЪЕДИНИТЬ ВСЕ" в запросах 2 проверки · 0 пунктов
#std435: Ограничение на использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах 2 проверки · 1 пункт
#std436: Многократное выполнение однотипных запросов 1 проверка · 1 пункт
#std437: Оформление текстов запросов 4 проверки · 5 пунктов

п. 1 — Все ключевые слова языка запросов пишутся заглавными буквами

п. 2 — Указывайте необязательные части запроса

п. 2а — Для полей – реквизитов других полей, например Касса.Валюта.Наименование автоматически присваиваемые псевдонимы собираются как ВалютаНаименование, а не Наименование

п. 2б — Пишите ключевое слово КАК перед псевдонимом поля источника

п. 6.2 — Старайтесь, чтобы каждая часть формируемого запроса открывалась в конструкторе запросов:

Стандарт в целом

#std438: Проверка на пустой результат выполнения запроса 1 проверка · 1 пункт
#std439: Использование директив компиляции и инструкций препроцессора 6 проверок · 3 пункта
#std440: Использование дублирующего кода 2 проверки · 1 пункт
#std441: Общие требования к построению конструкций встроенного языка 5 проверок · 2 пункта
#std444: Перенос выражений 4 проверки · 3 пункта
#std450: Порядок записи движений документов 1 проверка · 1 пункт
#std451: Программное создание прикладных объектов 2 проверки · 1 пункт
#std453: Описание процедур и функций 38 проверок · 11 пунктов

п. 1 — Описывайте процедуры и функции в комментарии к ним

п. 2 — Комментируйте процедуры и функции, входящие в программный интерфейс модулей

п. 5 — Размещайте комментарий перед объявлением процедуры (функции) и используйте следующий формат

п. 5.1 — Секция // Описание

п. 5.2 — Секция // Параметры:

п. 5.2.1 — Описание параметра начинается с новой строки: имя параметра, затем дефис и список типов (), затем дефис и текстовое описание параметра

п. 5.2.3 — Для параметров типа Массив указывайте тип элементов с помощью ключевого слова Из

п. 5.2.6 — Описания также могут задаваться с помощью ссылки на функцию-конструктор в формате // см

п. 5.3 — Секция // Возвращаемое значение:

п. 5.6 — В любом месте документирующего комментария можно добавить переход к другим объектам конфигурации, процедурам и функциям (в том числе к функциям-конструкторам структур)

п. 5.7 — Если нужно пометить процедуру (функцию) как устаревшую, в первой строке описания используйте слово // Устарела

Стандарт в целом

#std454: Правила образования имен переменных 3 проверки · 2 пункта
#std455: Структура модуля 33 проверки · 12 пунктов

п. 1.1 — Старайтесь выделить из модуля следующие разделы:

п. 1.3 — Разделы и подразделы оформляйте в виде областей

п. 1.4 — Шаблон общего модуля:

п. 1.5 — Шаблон модулей объектов, менеджеров, наборов записей, обработок, отчетов:

п. 1.6 — Шаблон модулей форм:

п. 1.7 — Шаблон модулей команд:

п. 1.8 — Не оставляйте пустых областей в модуле

п. 2.2 — Пример описания переменных:

п. 2.3 — Программный интерфейс располагается сразу после описания переменных

п. 2.4.3 — Для каждого события создавайте свой обработчик

п. 2.6 — Служебные процедуры и функции модуля размещайте в модуле следом за обработчиками событий

п. 2.7 — Пример инициализации переменных:

#std456: Тексты модулей 21 проверка · 9 пунктов

п. 1 — Пишите код на русском языке

п. 1.1 — Не используйте букву ё в коде программы

п. 1.2 — Не используйте в коде программы неразрывные пробелы   и знак минус - − в других начертаниях (короткое – –, длинное тире — —)

п. 2 — Удаляйте мертвый код

п. 3 — Удалите закомментированный код и код связанный с процессом разработки (отладочный код, служебные отметки:

п. 4 — Пишите один оператор на одной строке

п. 5 — Код программы оформляйте отступом

п. 6 — Длина строки: 120 символов

п. 7.3 — Большие комментарии или комментарии к фрагменту кода пишите перед кодом отдельной строкой

Стандарт в целом

#std460: Использование управляемого режима блокировки 4 проверки · 0 пунктов
#std464: Обработчик события ПередЗаписью 3 проверки · 1 пункт
#std465: Обработчик события ПриЗаписи 3 проверки · 1 пункт
#std467: Общие требования к конфигурации 74 проверки · 7 пунктов

п. 1.1 — Используйте только штатные и документированные возможности платформы

п. 1.2 — Платформа может работать в различных СУБД, операционных системах, браузерах

п. 1.3 — Исправляйте ошибки обнаруженные при проверке конфигурации

п. 1.4 — Для обратной совместимости с собственными и сторонними решениями, внешними обработками и отчетами, разработанными для платформы 1С:Предприятие 8.0 и 8.1, обеспечьте поддержку обоих режимов только для администраторов (пользователей с полными правами):

п. 2.1 — Пишите тексты грамотно

п. 2.2 — Не оставляйте после себя мертвый код и мертвые объекты метаданных

п. 2.3 — Метаданные верхнего уровня сортируйте по имени

Стандарт в целом

#std468: Пользовательские представления объектов 9 проверок · 5 пунктов
#std469: Правила создания общих модулей 28 проверок · 8 пунктов

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

п. 2.2 — Серверные общие модули для вызова с клиента содержат серверные процедуры и функции,

п. 2.3 — Клиентские общие модули содержат клиентскую бизнес-логику

п. 2.4 — Чтобы избежать дублирования кода,

п. 3.1 — Имена общих модулей формируйте по общим правилам именования

п. 3.2.1 — Для глобальных модулей используйте постфикс Глобальный (Global)

п. 3.2.2 — Для модулей с признаком Привилегированный

п. 3.2.3 — Для модулей с функциями повторного использования возвращаемых значений

#std473: Использование кодов (номеров) объектов конфигурации 2 проверки · 1 пункт

п. 3 — Длину кода (номера) устанавливайте в зависимости от назначения кода и способа его получения

#std474: Имя, синоним, комментарий 24 проверки · 8 пунктов

п. 1.1 — Синоним объекта заполняйте обязательно

п. 1.5 — Для стандартных реквизитов Родитель и Владелец всегда задавайте синонимы, отличные от значений по умолчанию

п. 2.1 — Имя объекта рекомендуется строить на основе синонима:

п. 2.3 — Имена объектов метаданных не должны превышать 80 символов

п. 2.4 — Для подчиненных объектов (реквизиты, измерения, ресурсы) не используйте имена, совпадающие с именами объектов-владельцев

п. 2.5 — Не используйте имена, совпадающие с именами таблиц языка запросов (Документ, Справочник, РегистрСведений и т.п.)

п. 3.2 — Комментарий начинайте с прописной буквы

п. 4 — В именах, синонимах и комментариях не используйте букву ё

Стандарт в целом

#std477: Самодостаточность регистров 1 проверка · 0 пунктов
#std478: Подсказка и проверка заполнения 3 проверки · 1 пункт
#std482: Заполнение свойств конфигурации информацией о выпуске 10 проверок · 9 пунктов
#std483: Нумерация редакций и версий 2 проверки · 1 пункт
#std485: Использование привилегированного режима 1 проверка · 1 пункт

п. 3 — Неоправданное использование привилегированного режима создает риски безопасности

#std487: Минимизация количества серверных вызовов и трафика 2 проверки · 2 пункта

п. 8.3 — При работе с временным хранилищем используйте один из двух вариантов:

п. 12 — Не возвращайте с сервера обратно параметры, которые пришли с клиента

#std488: Стандартные роли 39 проверок · 17 пунктов

п. 2 — В конфигурации должны быть обязательные роли:

п. 2.1 — ПолныеПрава (FullAccess) должна:

п. 2.3 — ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок

п. 2.4 — Роли ПолныеПрава, АдминистраторСистемы и

п. 3 — Для общих прав работы с информационной базой

п. 3.1 — Администрирование (Administration) предоставляет права:

п. 3.2 — ВыводНаПринтерФайлБуферОбмена (OutputToPrinterFileClipboard) предоставляет право:

п. 3.3 — ЗапускAutomation (StartAutomation) предоставляет право:

п. 3.4 — ЗапускВебКлиента (StartWebClient) предоставляет право:

п. 3.5 — ЗапускВнешнегоСоединения (StartExternalConnection) предоставляет право:

п. 3.6 — ЗапускТолстогоКлиента (StartThickClient) предоставляет право:

п. 3.7 — ЗапускТонкогоКлиента (StartThinClient) предоставляет право:

п. 3.9 — ОбновлениеКонфигурацииБазыДанных (UpdateDatabaseConfiguration)

п. 3.10 — ПросмотрЖурналаРегистрации (ViewEventLog)

п. 3.12 — СохранениеДанныхПользователя (SaveUserData)

п. 4.3 — Если роли построены по отдельным функциям,

п. 5 — Ни в одной роли, включая ПолныеПрава и АдминистраторСистемы,

#std489: Ограничения при использовании динамических списков 2 проверки · 1 пункт
#std490: Блокировка данных объекта для редактирования из кода 2 проверки · 1 пункт
#std492: Обработчики событий модуля формы, подключаемые из кода 2 проверки · 1 пункт
#std496: Чтение отдельных реквизитов объекта из базы данных 2 проверки · 0 пунктов
#std498: Использование Журнала регистрации 9 проверок · 3 пункта
#std499: Перехват исключений в коде 6 проверок · 5 пунктов
#std500: Общие правила построения интерфейсов 2 проверки · 1 пункт
#std501: Общие интерфейсы 2 проверки · 1 пункт
#std503: Имя элемента управления 1 проверка · 0 пунктов
#std504: Изменения размера колонки табличного поля 1 проверка · 0 пунктов
#std505: Размеры формы 2 проверки · 0 пунктов
#std506: Подсказки 2 проверки · 0 пунктов
#std507: Использование флагов "Автовыбор незаполненного" и "Автоотметка незаполненного" 1 проверка · 0 пунктов
#std511: Использование закладок 1 проверка · 0 пунктов
#std515: Разделители 2 проверки · 0 пунктов
#std516: Кнопки 3 проверки · 0 пунктов
#std524: Стили 10 проверок · 2 пункта
#std531: Реквизит «Комментарий» у документов 4 проверки · 1 пункт
#std532: Установка прав для новых объектов и полей объектов 3 проверки · 2 пункта
#std534: Удаление устаревших объектов метаданных из конфигурации 6 проверок · 2 пункта

п. 1.1 — Не удаляйте устаревшие объекты и реквизиты сразу

п. 1.4 — Замените по всей конфигурации обращения к устаревшим объектам и реквизитам на новые

Стандарт в целом

#std540: Общие требования к регламентным заданиям 2 проверки · 2 пункта
#std542: Доступ к файловой системе из кода конфигурации 6 проверок · 4 пункта

п. 1 — При обращении к файлам и каталогам из кода конфигурации учитывайте права пользователя ОС, от имени которого запущено приложение

п. 1 — Для получения имени временного файла используйте ПолучитьИмяВременногоФайла() (исключение: веб-клиент, см

п. 1 — Если один и тот же файл обрабатывается и на клиенте, и на сервере, передавайте его через временное хранилище

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

#std543: Использование подсистем 3 проверки · 3 пункта
#std544: Ограничения на использование экспортных процедур и функций 3 проверки · 0 пунктов
#std547: Ограничение на использование оператора Перейти 5 проверок · 2 пункта
#std548: Формирование печатных форм 1 проверка · 1 пункт

п. 6 — При подготовке табличного документа на сервере

#std551: Разработка конфигураций с повторным использованием общего кода и объектов метаданных 2 проверки · 1 пункт
#std554: Переопределение общих модулей в условиях иерархии библиотек 7 проверок · 1 пункт
#std585: Сообщения пользователю 2 проверки · 2 пункта

п. 1.1 — Сообщения должны быть информативными и содержательными

п. 1.2 — Не используйте восклицательные знаки и повелительный тон,

#std587: Поля "Ответственный" и "Комментарий" 2 проверки · 2 пункта
#std598: Тексты 1 проверка · 0 пунктов
#std620: Командная панель формы 1 проверка · 0 пунктов
#std630: Правила создания модулей форм 2 проверки · 1 пункт
#std639: Использование переменных в программных модулях 2 проверки · 1 пункт

п. 2.1 — Чтобы передавать параметры между подписками на события и обработчиками событий модуля объекта из внешнего кода, используйте свойство ДополнительныеСвойства

#std640: Параметры процедур и функций 23 проверки · 6 пунктов
#std641: Структуры и таблицы значений в качестве параметров процедур и функций 1 проверка · 1 пункт

п. 1.1 — Помимо функции, которая реализует прикладную функциональность (далее по тексту: вызываемая функция), определите функцию-конструктор параметров, возвращающую:

#std642: Длительные операции на сервере 2 проверки · 2 пункта
#std643: Работа в разных часовых поясах 4 проверки · 2 пункта

п. 2.1 — Используйте ТекущаяДатаСеанса вместо ТекущаяДата в серверном контексте

п. 3.1 — Не используйте ТекущаяДата на клиенте

#std644: Обеспечение совместимости библиотек 13 проверок · 4 пункта

п. 2.1 — Разделяйте программный интерфейс

п. 2.2 — Раздел Программный интерфейс может содержать

п. 3.1 — Если нужно переименовать или удалить экспортную функцию/процедуру,

п. 3.6 — Чтобы скрывать детали реализации от потребителя,

Стандарт в целом

#std647: Имена процедур и функций 2 проверки · 2 пункта

п. 4 — Не используйте типы в названиях процедур и функций

п. 6.1 — Имена функций берите от описания возвращаемого значения

#std648: Ответственное чтение данных 2 проверки · 1 пункт
#std654: Разыменование ссылочных полей составного типа в языке запросов 3 проверки · 2 пункта
#std655: Ограничения на соединения с вложенными запросами и виртуальными таблицами 4 проверки · 2 пункта
#std657: Обращения к виртуальным таблицам 2 проверки · 1 пункт
#std658: Эффективные условия запросов 4 проверки · 1 пункт

п. 2.1 — В основном условии ИЛИ допустим только для последнего (или единственного) поля индекса,

#std667: Элементы стиля 10 проверок · 1 пункт
#std669: Ограничение на выполнение внешнего кода 13 проверок · 5 пунктов

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

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

п. 6.1 — Внешние компоненты можно размещать:

п. 6.4 — Используйте БСП для подключение внешних компонент

п. 7 — Загружать код из внешнего удаленного источника следует:

#std674: Заголовок отчета 1 проверка · 1 пункт
#std678: Безопасность прикладного программного интерфейса сервера 1 проверка · 1 пункт
#std679: Ограничение на установку признака «Вызов сервера» у общих модулей 1 проверка · 1 пункт
#std680: Поддержка толстого клиента, управляемое приложение, клиент-сервер 4 проверки · 2 пункта
#std686: Работа с параметром "Отказ" в обработчиках событий 3 проверки · 1 пункт
#std689: Настройка ролей и прав доступа 35 проверок · 14 пунктов

п. 1.2 — Роли ПолныеПрава и АдминистраторСистемы обеспечивают максимальный доступ

п. 1.7 — Для документов с проведением обычно включайте привилегированный режим проведения и отмены проведения

п. 1.8 — Для функциональных опций обычно включайте привилегированный режим получения

п. 1.10 — Для неконфиденциальных и общедоступных данных права чтения включайте в:

п. 1.11 — Одна роль не должна объединять права на объекты разных библиотек и разных подсистем

п. 3.1 — Для функций со ссылочными объектами и независимыми регистрами сведений обычно создавайте две роли:

п. 4 — Журналы документов

п. 5.1 — Если константу должен менять только администратор, права изменения должны быть только у ПолныеПрава и/или АдминистраторСистемы

п. 5.2 — Если константу может менять пользователь, добавляйте права в существующую настроечную роль или создавайте отдельную роль Изменение<ИмяКонстанты>

п. 5.4 — Для конфиденциальных констант создавайте отдельную роль чтения, если это действительно нужно

п. 6.1 — Для каждой подсистемы верхнего уровня создавайте роль Подсистема<ИмяПодсистемы> (Subsystem<SubsystemName>) с правом просмотра

п. 8.2 — Права на вспомогательные обработки и обработки с общим служебным кодом назначайте в роли БазовыеПрава<ИмяБиблиотеки>

п. 9.1 — Для команды без изменения данных назначайте право просмотра тем же ролям, которые дают чтение соответствующего объекта

п. 12 — Права к устаревшим объектам

Стандарт в целом

#std690: Обработчики обновления информационной базы 2 проверки · 2 пункта

п. 1.3 — Обработчик обновления состоит из двух частей:

п. 3.2.3 — Вместо простого вызова:

#std693: Использование объектов типа Структура 10 проверок · 3 пункта
#std697: Использование предопределенных элементов 7 проверок · 2 пункта
#std700: Установка внешних компонент и расширений платформы 2 проверки · 2 пункта
#std702: Реквизит Ссылка и признак "Использовать всегда" в динамических списках объектов 6 проверок · 2 пункта
#std703: Ограничение на использование модальных окон и синхронных вызовов 3 проверки · 2 пункта
#std705: Отнесение объектов библиотек к подсистемам 1 проверка · 1 пункт
#std709: Технология разветвленной разработки конфигураций 2 проверки · 1 пункт

п. 5.3 — Номер сборки

#std710: Условное оформление в формах 3 проверки · 1 пункт
#std712: Панель разделов 2 проверки · 1 пункт

п. 2.1 — Общая длина названия раздела не должна превышать 35 символов с учетом пробелов

#std714: Навигация внутри раздела 1 проверка · 1 пункт
#std723: Особенности разработки конфигураций для ОС Linux и macOS 2 проверки · 1 пункт

п. 2.5.2 — Не формируйте вручную разделители пути и маску всех файлов

#std724: Использование модулей с повторным использованием возвращаемых значений 6 проверок · 2 пункта
#std726: Особенности использования в запросах оператора ПОДОБНО 2 проверки · 1 пункт
#std728: Ограничения на использование реквизитов составного типа 4 проверки · 2 пункта
#std737: Проверка прав доступа 14 проверок · 5 пунктов
#std740: Безопасное хранение паролей 6 проверок · 3 пункта
#std741: Открытие параметризированных форм 3 проверки · 1 пункт
#std744: История выбора при вводе 3 проверки · 3 пункта
#std748: Таймауты при работе с внешними ресурсами 3 проверки · 2 пункта
#std752: Обработчик события ПередУдалением 3 проверки · 1 пункт
#std758: Псевдонимы источников данных в запросах 1 проверка · 1 пункт
#std759: Несущественные предупреждения проверки конфигурации 21 проверка · 1 пункт
#std760: Ограничения на регламентные задания при работе в модели сервиса 3 проверки · 2 пункта

п. 1 — В прикладных решениях, ориентированных на работу в модели сервиса по Технологии 1cFresh, не должно быть регламентных заданий, включенных в состав любого из разделителей

п. 2 — Если нужно регулярно выполнять программный код в приложениях пользователя в разделенной ИБ, используйте подсистему БТС Очередь заданий или аналогичный механизм очереди

#std761: Интерфейсные тексты в коде: требования по локализации 18 проверок · 8 пунктов

п. 1 — Если в модулях конфигурации есть строки для интерфейса пользователя (сообщения, надписи на формах, тексты команд, выражения в настройках СКД и т.п.), обеспечивайте их локализацию

п. 2 — Для составных строк, где части зависят от условий, используйте логически завершенные фразы и подстановку параметров через СтрШаблон

п. 3 — Если в конфигурации используется БСП, для составных форматированных строк вместо объекта ФорматированнаяСтрока применяйте функцию ФорматированнаяСтрока модулей СтроковыеФункции или СтроковыеФункцииКлиент

п. 4 — В НСтр строку ограничивайте одинарными кавычками

п. 5 — Не выводите пользователю имена объектов метаданных и внутренние идентификаторы из кода

п. 6 — При использовании функций ЧислоПрописью, ПредставлениеПериода, СтрокаСЧислом не указывайте параметр Л= (L=) в строке форматирования

п. 7 — Не вызывайте функцию ПолучитьСклоненияСтрокиПоЧислу, так как она предназначена только для русскоязычного интерфейса

п. 8 — В редких случаях (например, длинный лог действий пользователя) допустимо собирать сообщение конкатенацией, а не шаблоном

Стандарт в целом

#std762: Запросы, динамические списки и отчеты на СКД: требования по локализации 10 проверок · 3 пункта
#std763: Форматирование даты, числа, Булево: требования по локализации 4 проверки · 4 пункта

п. 1 — При использовании функции Формат в ряде случаев применяйте НСтр для форматной строки

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

п. 1.2 — Для чисел применяйте НСтр к форматной строке, когда:

п. 1.3 — Для вывода пользователю значений Булево всегда применяйте НСтр к форматной строке

#std764: Строковые константные выражения в коде: требования по локализации 9 проверок · 2 пункта
#std765: Элементы форм: требования по локализации 8 проверок · 5 пунктов
#std766: Макеты: требования по локализации и поддержке разных языков интерфейса 3 проверки · 2 пункта

п. 1 — Обычно перевод табличных, текстовых и HTML-макетов не требует специальных подготовительных действий

п. 5 — Используйте в макетах кодировку UTF-8

#std767: Регламентные задания: требования по локализации 2 проверки · 1 пункт
#std768: Программное переопределение текстов запросов динамических списков 3 проверки · 3 пункта
#std769: Поставка международной версии конфигурации 4 проверки · 0 пунктов

Стандарт в целом

#std770: Ограничения на использование Выполнить и Вычислить на сервере 8 проверок · 3 пункта
#std771: Интеграция прикладных решений через формат EnterpriseData 3 проверки · 1 пункт
#std773: Использование признака ОбменДанными.Загрузка в обработчиках событий объекта 3 проверки · 1 пункт
#std774: Безопасность запуска приложений 3 проверки · 2 пункта

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

п. 2.4 — Для запуска исполняемых файлов, системных команд и серверных команд, а также для получения stdout/stderr используйте:

#std775: Безопасность программного обеспечения, вызываемого через открытые интерфейсы 3 проверки · 2 пункта
#std777: Использование временных таблиц 1 проверка · 1 пункт

п. 3 — Временные таблицы следует индексировать, когда это дает прирост производительности

#std783: Транзакции: правила использования 22 проверки · 3 пункта

п. 1.1 — Исключение не отменяет транзакцию

п. 1.2 — Начало транзакции и ее завершение (фиксацию) выполняйте в одном методе

п. 1.3 — Используйте следующий паттерн для работы с транзакциями:

Стандарт в целом

#std784: Автогенерированные данные в информационной базе: требования по локализации 10 проверок · 2 пункта
#std787: Вычисление количества записей в запросах 1 проверка · 1 пункт