Как изменить порядок генерации процедур &НаКлиенте и &НаСервере при создании команды в 1С?

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

При добавлении новых команд элементов формы разработчики часто используют автоматическое создание обработчиков действий. Выбирая в палитре свойств вариант «Создать на клиенте и процедуру на сервере», платформа автоматически генерирует в модуле формы сразу два метода. Однако в созданном коде первая процедура получает директиву компиляции &НаСервере, а расположенная ниже — &НаКлиенте. Проанализируем, почему платформа работает именно так и какими способами можно организовать правильный и удобный порядок методов.

Ограничения платформы 1С и причины такого поведения

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

С точки зрения логики выполнения управляемого приложения, вызов всегда начинается с клиентской процедуры, которая затем обращается к серверному контексту. По этой причине порядок, когда &НаСервере находится выше &НаКлиенте, неудобен для восприятия при чтении кода сверху вниз.

Способы решения и альтернативные варианты

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

Способ 1. Использование пользовательских шаблонов текста (.tpi)

Разберем создание собственного шаблона кода. В Конфигураторе 1С встроен удобный механизм шаблонов текста, который позволяет быстро вставлять заранее подготовленные конструкции вызовом сочетания клавиш.

  1. Откроем настройку шаблонов в меню Конфигуратора: Сервис — Шаблоны текста.
  2. Создадим новый шаблон и зададим для него краткое сочетание (например, комкс).
  3. Пропишем в теле шаблона код, где первой располагается клиентская процедура, а второй — серверная.

Посмотрим на пример заготовки кода для шаблона:


&НаКлиенте
Процедура ИмяКоманды(Команда)
	ИмяКомандыНаСервере();
КонецПроцедуры

&НаСервере
Процедура ИмяКомандыНаСервере()
	// Логика обработки на сервере
КонецПроцедуры

С помощью специальных управляющих символов шаблона (например, ?) можно настроить автопереход курсора в нужную точку сразу после вставки.

Способ 2. Организация кода с помощью областей (#Область)

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

При автогенерации через палитру свойств Конфигуратор вставляет обе процедуры подряд в место, где находился курсор. Это часто нарушает границы заранее подготовленных областей модуля. Чтобы сохранить правильную структуру, применяют следующий порядок действий:

  1. В модуле заранее выделяются области #Область ОбработчикиКомандФормы и #Область СлужебныеПроцедурыИФункции.
  2. Обработчик с директивой &НаКлиенте размещается в области команд.
  3. Вызываемая процедура с директивой &НаСервере помещается в область серверных служебных процедур.

Способ 3. Использование 1C:EDT и сторонних плагинов

Если разработка ведется в среде 1C:Enterprise Development Tools (EDT) или с применением расширений Конфигуратора (например, Снегопат), порядок генерации кода можно переопределить полностью.

В средах на базе EDT шаблон создания методов настраивается через пользовательские сниппеты (Code Templates) или механизмы быстрой правки (Quick Assist). Это позволяет генерировать процедуры в любом желаемом порядке и автоматически раскладывать их по нужным областям модуля.

← На главную