Как правильно оформлять программный код в 1С: стандарты, мифы и инструменты автоматизации

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Вопрос о том, как правильно писать код в системе 1С:Предприятие 8, — это не просто спор об эстетике или «красоте» текста. Это вопрос профессиональной этики, удобства командной разработки и, что немаловажно, эффективности отладки приложений. В этой статье мы подробно разберем, какие рекомендации дает фирма 1С, почему нельзя писать условия в одну строку и как автоматизировать проверку своих модулей.

Стандарты оформления логических условий

Разберем классический пример, который часто вызывает споры у начинающих разработчиков. Как правильно написать условие: в одну строку или в несколько? Рассмотрим два варианта:

Вариант 1 (Неправильный):

Если а = б Тогда Возврат; КонецЕсли;

Вариант 2 (Правильный по ИТС):


Если а = б Тогда 
    Возврат; 
КонецЕсли;

Проанализируем ситуацию с точки зрения официальных стандартов. Система стандартов и методик разработки конфигураций (публикуемая на ИТС) однозначно утверждает: каждый оператор должен располагаться на отдельной строке. Это фундаментальное правило. Конструкция Если — Тогда — КонецЕсли должна занимать как минимум три строки.

Почему это важно? Выясним причину. Основная цель — обеспечить удобство отладки. Представим, что вы установили точку останова на строке с условием. Если всё написано в одну строку, Конфигуратор остановится на ней, но вы не сможете визуально понять: зашла ли программа внутрь условия или просто перешла к следующей команде. В многострочном варианте вы четко видите переход курсора на строку Возврат;, что подтверждает истинность условия.

Пробелы и знаки операций

Посмотрим на пример из форума: Если А=Б или Если А = Б? Согласно методическим материалам, бинарные операторы (сравнение, математические операции) всегда должны отделяться пробелами с обеих сторон. Это значительно повышает читаемость кода, особенно в сложных формулах.

Разберем правильное оформление математических и логических выражений:


Результат = (СуммаБезНДС * СтавкаНалога) / 100;
Если (Значение > 0) И (ТипОперации = Предоплата) Тогда
    // Логика
КонецЕсли;

Использование пробелов позволяет глазу быстрее выцеплять ключевые переменные и операторы, не сливая их в «кашу». Подобная читаемость важна и при программном формировании отчетов, где СКДБилдер значительно сокращает объем текста. Это касается и логических операторов И, ИЛИ, НЕ.

Миф о производительности переноса строк

В ходе обсуждения часто всплывает мнение (сообщение №7 на форуме), что уменьшение количества строк или удаление пробелов может ускорить выполнение кода, особенно внутри циклов. Давайте разберем этот миф.

Платформа 1С работает не напрямую с исходным текстовым кодом (модулем), который мы пишем в Конфигураторе. Перед выполнением текст модуля компилируется в промежуточный байт-код. В процессе этой компиляции все лишние пробелы, комментарии и символы переноса строк игнорируются. Байт-код для однострочного условия и для многострочного будет абсолютно идентичным.

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

Автоматизация форматирования в Конфигураторе

Для того чтобы привести уже написанный текст в порядок, не обязательно расставлять все отступы вручную. Разберем по шагам, как воспользоваться встроенным инструментом:

  1. Выделите фрагмент текста или весь модуль (Ctrl + A).
  2. Перейдите в меню Текст — Блок — Форматировать (или используйте горячие клавиши, если они настроены).
  3. Редактор проанализирует синтаксические конструкции и автоматически расставит отступы (табуляцию) в соответствии с вложенностью блоков Если, Для, Пока, Процедура.

Важно помнить: встроенный форматировщик Конфигуратора хорошо справляется с отступами (левым краем), но он не умеет переносить оператор Возврат; на новую строку, если вы уже написали его в одну строку с Тогда. Это придется делать самостоятельно или использовать более продвинутые инструменты.

Продвинутые инструменты: 1С:EDT и SonarQube

Современная разработка на платформе 1С выходит за рамки обычного Конфигуратора. Если вы хотите, чтобы ваш код соответствовал стандартам «автоматически», рассмотрим следующие инструменты:

1С:EDT (Enterprise Development Tools) — это среда разработки на базе Eclipse. В неё встроен мощный механизм проверки кода в реальном времени (линтинг). Как только вы напишете условие в одну строку, среда подсветит это как предупреждение и предложит исправить согласно стандартам.

BSL Language Server / SonarQube — это внешние инструменты статического анализа. Они позволяют проверять код на наличие ошибок, избыточности и нарушений стиля. Например, они могут найти:

Использование функций работы с датой

В контексте обсуждения стиля кода затронем важный методический вопрос — использование функции ТекущаяДата(). Рассмотрим разницу между ней и ТекущаяДатаСеанса().

Согласно стандартам для управляемого приложения, рекомендуется использовать ТекущаяДатаСеанса(). Выясним причину: ТекущаяДата() возвращает время сервера, на котором запущен рабочий процесс. Если сервер находится в Москве, а пользователь во Владивостоке, время будет отличаться на 7 часов. ТекущаяДатаСеанса() учитывает часовой пояс, установленный в настройках пользователя, что критически важно для корректного отражения времени совершения операций в распределенных системах.

Структура модуля и пустые строки

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

Пример правильной структуры:


Процедура РассчитатьЗаказы()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ...";
    
    // Выполнение запроса
    Результат = Запрос.Выполнить();
    
КонецПроцедуры


Процедура Печать()
    // Следующая процедура через 2 строки
КонецПроцедуры

Заключение

Соблюдение стандартов 1С — это залог того, что ваш код будет понятен любому другому разработчику, а процесс отладки не превратится в гадание на кофейной гуще. Используйте автоматизированные средства проверки, не пренебрегайте пробелами и всегда помните: код пишется для людей, а не для машины. Машина поймет любой синтаксически верный набор символов, а человеку важно видеть структуру и логику вашей мысли.

← На главную