Управляемая форма констант. Константы: Поле1 (булево), Поле2 (строка).
Почему не работает код? В Поле1 ставлю "истина", Поле2 не заполняю. Дает записать форму.
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если НаборКонстант.Поле1 Тогда
ПроверяемыеРеквизиты.Добавить("Поле2");
КонецЕсли;
КонецПроцедуры
Основная причина: неверное имя процедуры. В 1С имя обработчика должно точно совпадать с именем события платформы. Директива &НаСервере указывается отдельно, но добавлять НаСервере в само имя процедуры нельзя. Платформа просто не находит обработчик ОбработкаПроверкиЗаполнения и не вызывает ваш код.
✅ Правильный вариант:
1c
123456
🔍 Почему это происходит:
Платформа 1С ищет обработчик по строгому имени: ОбработкаПроверкиЗаполнения.
Суффикс НаСервере в имени процедуры (ОбработкаПроверкиЗаполненияНаСервере) нарушает привязку события. Код существует, но никогда не выполняется.
🛠 Если после исправления всё ещё не работает, проверьте:
Подписка на событие
Откройте свойства формы → раздел События → убедитесь, что в строке ОбработкаПроверкиЗаполнения выбран ваш обработчик (после переименования обычно подставляется автоматически).
Ручная установка Отказ (fallback)
В некоторых конфигурациях или старых релизах платформа может не отрабатывать ПроверяемыеРеквизиты для констант автоматически. Тогда добавьте явную проверку:
1c
12345678
Значения NULL у булевых констант
По умолчанию булевы константы имеют значение NULL (неопределено), а не Ложь. Условие Если НаборКонстант.Поле1 Тогда сработает корректно, но явное сравнение = Истина надёжнее и читаемее.
Имя реквизита
Убедитесь, что "Поле2" точно совпадает с именем в дереве метаданных (регистр не важен, но пробелы или дополнительные символы могут нарушить проверку).
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший