Имя: Пароль:
1C
1С v8
Проверка заполнения по условию
0 kogotaz
 
17.05.26
17:03
Управляемая форма констант. Константы: Поле1 (булево), Поле2 (строка).
Почему не работает код? В Поле1 ставлю "истина", Поле2 не заполняю. Дает записать форму.

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