При разработке на управляемых формах 1С:Предприятие 8 мы часто встречаем процедуру ПриСозданииНаСервере. В её сигнатуре присутствует параметр СтандартнаяОбработка. Многие разработчики задаются вопросом: что именно он отменяет и в каких случаях его нужно устанавливать в значение Ложь? Давайте разберем этот механизм детально, чтобы понимать, как платформа управляет созданием формы.
Когда платформа создает форму, выполнение кода в процедуре ПриСозданииНаСервере — это лишь часть процесса. После того как ваш программный код завершил работу, система выполняет свои скрытые от разработчика действия. К ним относятся:
ОткрытьФорму).Параметр СтандартнаяОбработка — это своего рода «рубильник», который позволяет вам сказать платформе: «Не выполняй автоматическую финальную настройку, я подготовил форму самостоятельно». Если оставить значение по умолчанию (Истина), система «докрутит» настройки, которые могут перетереть ваши изменения.
Рассмотрим ситуацию, когда мы пытаемся изменить поведение списка в форме выбора справочника. Допустим, мы хотим ограничить выбор только элементами, но платформа по умолчанию настроена иначе.
Если мы напишем так:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Список.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
КонецПроцедуры
В этом случае при открытии формы мы можем увидеть, что наше изменение игнорируется, и выбор групп все еще доступен. Это происходит потому, что платформа после нашего кода применила свои стандартные настройки. Чтобы наши изменения зафиксировались, нам нужно отключить стандартную обработку:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.Список.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;
КонецПроцедуры
После установки СтандартнаяОбработка = Ложь система «забывает» о своих настройках по умолчанию для этого события, и наши параметры применяются корректно.
Важно не путать СтандартнаяОбработка и Отказ. Это принципиально разные механизмы:
Отказ = Истина: Вы полностью запрещаете создание формы. Процесс прерывается, форма не открывается, и вызывающий код получает уведомление о невозможности операции.СтандартнаяОбработка = Ложь: Вы разрешаете создание формы, но запрещаете платформе выполнять автоматические донастройки интерфейса. Сама форма благополучно откроется, события ПриОткрытии и другие отработают в штатном режиме.Применять СтандартнаяОбработка = Ложь стоит в следующих случаях:
ДинамическийСписок.Теперь мы понимаем, что СтандартнаяОбработка — это не отказ от самой процедуры ПриСозданииНаСервере, а отказ от «автопилота» платформы. Используйте этот параметр осознанно: только тогда, когда стандартное поведение системы мешает вашей реализации. В большинстве случаев достаточно стандартных настроек, и вмешательство требуется лишь при разработке сложных, нестандартных интерфейсов.