Alien900 @ Вчера, 20:12
,
У проверяемых реквизитов объекта должно быть установлено свойство ПроверкаЗаполнения - "Выдавать ошибку"
И вообще:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Сумма = ПроверяемыеРеквизиты.Найти ("Сумма");
Сообщить("Сумма не заполнена",Истина);
Надеюсь реквизит в документе не называется "Сумма", иначе присваивание с вызовом функции "Найти" затирает значение там хранящееся.
Процедура "Сообщить" будет вызываться всегда, и выводить сообщение "Сумма не заполнена".
Вызов процедуры сообщить должен сопровождаться ошибкой "Ошибка при вызове метода контекста (Сообщить)", так как "СтатусСообщения = Истина", надеюсь вы не хотите всех тут присутствующих ввести в заблуждение о том, что это якобы работающий код?
Если ЗначениеЗаполнено(Сумма) Тогда
Сообщить("Значение Заполнено", Истина );
Иначе
Если НЕ ЗначениеЗаполнено(Сумма) Тогда
Сообщить("Сумма не заполнная строка");
КонецЕсли;
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Сумма"));
Метод "Найти" у массива ПроверяемыеРеквизиты возвращает индекс в массиве либо "Неопределено" - если не было найдено, поэтому корректнее писать "Если Сумма = Неопределено Тогда".
Часть условного оператора "Иначе" уже означает, что Сумма не заполнена (вернее не равна Неопределено и содержит корректный индекс в массиве (типа Число)), поэтому не надо второго "Если НЕ ...".
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
"Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения." - вы действительно этого хотели?
П.С. По-моему, вам не мешало бы чуток поучиться разработке в 1С на курсах или почитать учебники.
Сообщение отредактировал andr_andrey - 26.08.18, 15:22