Обычное приложение, управляемая форма. Не срабатывает ОбработкаПроверкиЗаполнения
Добрый день!
Проблема вот в чем: в обычном приложении есть документ, у которого есть управляемая форма. У этого документа есть реквизиты, у которых в свойстве Проверка заполнения выбрано Выдавать ошибку. Но, несмотря на это, документ записывается и проводится, если эти реквизиты незаполнены. Смотрю в отладчике — в процедуру ОбработкаПроверкиЗаполнения система не заходит. С чем может быть связано такое поведение системы и как его исправить?
Проблема вот в чем: в обычном приложении есть документ, у которого есть управляемая форма. У этого документа есть реквизиты, у которых в свойстве Проверка заполнения выбрано Выдавать ошибку. Но, несмотря на это, документ записывается и проводится, если эти реквизиты незаполнены. Смотрю в отладчике — в процедуру ОбработкаПроверкиЗаполнения система не заходит. С чем может быть связано такое поведение системы и как его исправить?
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(2)Нет, не создана.
(3)Пишу:
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Отказ = НЕ ПроверитьЗаполнение();
КонецПроцедуры
В модуле объекта выдает ошибку (Процедура или функция с указанным именем не определена (ПроверитьЗаполнение), в модуле формы ничего не меняет. В процедуру ОбработкаПроверкиЗаполнения() не заходит, документ дает сохранить и провести.
(4)Это же процедура модуля объекта, с обработчиками формы ее связывать не нужно, насколько мне известно.
(3)Пишу:
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Отказ = НЕ ПроверитьЗаполнение();
КонецПроцедуры
В модуле объекта выдает ошибку (Процедура или функция с указанным именем не определена (ПроверитьЗаполнение), в модуле формы ничего не меняет. В процедуру ОбработкаПроверкиЗаполнения() не заходит, документ дает сохранить и провести.
(4)Это же процедура модуля объекта, с обработчиками формы ее связывать не нужно, насколько мне известно.
Попробуйте вызывать обработчик принудительно, например,
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
//ПроверитьЗаполнение() возвращает:
//Истина - ошибок не обнаружено,
//Ложь - в противном случае.
Если ПроверитьЗаполнение() = Ложь Тогда
отказ = Истина;
КонецЕсли;
КонецПроцедуры
Показать
(7)И вот спрашивается: зачем всякие проверки значений реквизитов туда засовывать (не только на заполненность, а на равенство другому значению)? Я этот момент в актуальной ЕРП увидел, когда при программном проведении - не ругается на склад, а при интерактивном ругается и документ не проводится.
Хоть тема старая но может и пригодится потомкам. Получил такой же баг на обычной форме. Как выяснилось, предыдущий разработчик сбросил свойство формы "ПроверятьЗаполнениеАвтоматически" и написал все проверки руками. Убил полчаса пока не заметил.
(14) у меня на обычной форме на 8.2.19 эта галочка ни на что не влияет - и с ней и без нее событие формы ОбработкаПроверкиЗаполнения не вызывается.
Зато независимо от нее срабатывает автоматическая проверка на заполение реквизитов у которых в метаданных стоит свойство "Проверка заполнения - Выдавать ошибку".
Похоже на баг платформы.
Зато независимо от нее срабатывает автоматическая проверка на заполение реквизитов у которых в метаданных стоит свойство "Проверка заполнения - Выдавать ошибку".
Похоже на баг платформы.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)