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