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