При добавлении новых команд элементов формы разработчики часто используют автоматическое создание обработчиков действий. Выбирая в палитре свойств вариант «Создать на клиенте и процедуру на сервере», платформа автоматически генерирует в модуле формы сразу два метода. Однако в созданном коде первая процедура получает директиву компиляции &НаСервере, а расположенная ниже — &НаКлиенте. Проанализируем, почему платформа работает именно так и какими способами можно организовать правильный и удобный порядок методов.
Выясним причину, почему порядок процедур оказывается именно таким. В классическом Конфигураторе платформы «1С:Предприятие» последовательность генерации кода при нажатии на кнопку выбора «Действие» жестко зафиксирована в ядре платформы. В настройках Конфигуратора отсутствуют штатные параметры, позволяющие поменять местами порядок создания клиентской и серверной процедур.
С точки зрения логики выполнения управляемого приложения, вызов всегда начинается с клиентской процедуры, которая затем обращается к серверному контексту. По этой причине порядок, когда &НаСервере находится выше &НаКлиенте, неудобен для восприятия при чтении кода сверху вниз.
Рассмотрим по шагам несколько практических вариантов, которые помогают упорядочить процедуры в модуле формы согласно вашим предпочтениям.
Разберем создание собственного шаблона кода. В Конфигураторе 1С встроен удобный механизм шаблонов текста, который позволяет быстро вставлять заранее подготовленные конструкции вызовом сочетания клавиш.
комкс).Посмотрим на пример заготовки кода для шаблона:
&НаКлиенте
Процедура ИмяКоманды(Команда)
ИмяКомандыНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИмяКомандыНаСервере()
// Логика обработки на сервере
КонецПроцедуры
С помощью специальных управляющих символов шаблона (например, ?) можно настроить автопереход курсора в нужную точку сразу после вставки.
Проанализируем структурирование кода по стандартам 1С. Согласно официальным стандартам разработки, код модуля формы рекомендуется разделять с помощью инструкций препроцессора #Область и #КонецОбласти.
При автогенерации через палитру свойств Конфигуратор вставляет обе процедуры подряд в место, где находился курсор. Это часто нарушает границы заранее подготовленных областей модуля. Чтобы сохранить правильную структуру, применяют следующий порядок действий:
#Область ОбработчикиКомандФормы и #Область СлужебныеПроцедурыИФункции.&НаКлиенте размещается в области команд.&НаСервере помещается в область серверных служебных процедур.Если разработка ведется в среде 1C:Enterprise Development Tools (EDT) или с применением расширений Конфигуратора (например, Снегопат), порядок генерации кода можно переопределить полностью.
В средах на базе EDT шаблон создания методов настраивается через пользовательские сниппеты (Code Templates) или механизмы быстрой правки (Quick Assist). Это позволяет генерировать процедуры в любом желаемом порядке и автоматически раскладывать их по нужным областям модуля.