6. Объектная модель прикладного решения
#32

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Если вы доработали документ «Ведомость в кассу» и в процедуре «ОбработкаПроведения» хотите запретить проведение (например, когда ведомость заполнилась автоматически, но обнаружено несоответствие способа выплаты или табличная часть пустая), что нужно сделать в коде обработчика?

Установить параметр обработчика «Отказ» в значение Истина.
Правильно: в обработчике проведения параметр «Отказ» предназначен для прерывания действия - если присвоить ему Истина, проведение будет отменено и движения документа не должны формироваться.
Перевести документ в режим «Отмена проведения» через параметр «РежимЗаписи».
Неправильно: в «ОбработкаПроведения» отмена проведения выполняется через «Отказ», а не через переключение режима записи; попытка управлять режимом записи в этом месте либо не применима, либо не гарантирует прерывание проведения.
Присвоить параметру «Отказ» значение Ложь.
Неправильно: значение Ложь, наоборот, означает, что обработчик не отменяется, и проведение может продолжаться.
Вернуть код 0 через вызов «СтатусВозврата(0)».
Неправильно: «СтатусВозврата» не является штатным механизмом отмены проведения документа в обработчике проведения и не заменяет установку «Отказ = Истина».
Установить параметр «Режим» в значение Ложь.
Неправильно: параметр режима в обработчике проведения используется для определения контекста проведения (оперативный/неоперативный), а присваивание ему Ложь не является корректным способом отмены проведения.

Пояснение

Практический смысл отмены проведения «Ведомости в кассу» чаще всего появляется как «защита от ошибок» после автоматического заполнения по кнопке «Заполнить». Как обычно работает автозаполнение ведомости (что важно для проверок перед проведением): 1) Отбор сотрудников идет по настройкам выплаты (кто получает наличными/через кассу, а не через банк) и по параметрам ведомости (организация, период/вид выплаты, касса/место выплаты). 2) Суммы формируются по данным учета: в ведомость подтягивается то, что действительно подлежит выплате (невыплаченный остаток/задолженность по выбранному виду выплаты). Если остаток уже закрыт другой ведомостью, строк может не быть. 3) Если в процессе работы поменяли способ выплаты сотруднику (например, с банка на кассу или наоборот), уже созданная ведомость может начать «конфликтовать» с новыми настройками. Типовая практика - закрыть документ и создать новую ведомость заново, затем снова нажать «Заполнить». Когда уместно отменять проведение через «Отказ = Истина»: - Табличная часть пустая после «Заполнить», а пользователь пытается провести документ. - Ведомость содержит сотрудников, у которых способ выплаты не соответствует типу ведомости (например, в кассовой ведомости оказался сотрудник с выплатой через банк). - В ведомости указан один способ/место выплаты, а задолженность по сотруднику «ожидает» другой способ (частая причина, почему ведомость не заполняется или почему при проведении возникает несоответствие). Рекомендованный шаблон поведения в обработчике проведения: - Сначала вывести понятное сообщение пользователю (что именно не так: неверный способ выплаты, не выбрана касса, нет сумм к выплате, несоответствие настроек). - Затем установить «Отказ = Истина» и завершить процедуру (обычно через «Возврат»), чтобы документ не сформировал движения и не был проведен. Мини-пример сценария проверки (логика без кода): - Если ведомость на кассу, а у сотрудника место выплаты - банк → сообщить пользователю, отменить проведение. - Если после автозаполнения сумма к выплате равна 0 и строка не должна существовать → либо удалить строку при заполнении, либо запретить проведение пустой ведомости. Такой подход помогает держать ведомости «чистыми»: автозаполнение делает подбор и расчет, а «Отказ = Истина» не дает провести документ, если настройки выплаты и параметры ведомости противоречат друг другу.