12. Механизмы оперативного учета
#12

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

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

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

В каком из событий может производиться запись данных в регистр накопления?

При проведении документа
Неправильно: Проведение - самый типичный и рекомендуемый сценарий записи движений, но платформа не ограничивает запись регистров только этим событием. Если в другом обработчике вы сформируете набор записей и вызовете его запись, данные также могут быть записаны.
При записи документа
Неправильно: Действительно, запись документа часто сопровождается записью движений (особенно если вы делаете это вручную в коде), но это не единственно возможное место. Запись набора записей регистра может выполняться из любого кода, где она логически нужна и разрешена правами.
При заполнении документа
Неправильно: При заполнении обычно подготавливают данные самого документа, а движения формируют позже, чтобы избежать лишних записей и дублей. Тем не менее, технически запись в регистр возможна и из этого этапа (если вызвать серверный код записи набора записей), поэтому утверждение «только при заполнении» неверно.
При закрытии документа
Неправильно: Закрытие формы - это событие пользовательского интерфейса, и оно не является единственным допустимым местом для записи регистров. Более того, полагаться на него рискованно (пользователь может закрыть форму без сохранения), поэтому утверждение «только при закрытии» неверно.
Варианты 1 и 2
Неправильно: Эти два события действительно наиболее распространены для формирования движений, но запись в регистр не «привязана» к ним на уровне платформы. Сформировать и записать набор записей можно и в других обработчиках, если это предусмотрено логикой решения.
Верны все ответы
Правильно: Запись в регистр накопления выполняется вызовом записи набора записей (или через механизм движений документа) и может быть инициирована из любого обработчика, где выполняется код. Ключевое условие - корректно сформировать набор записей (включая регистратор/период и измерения/ресурсы) и записывать его в подходящий момент с учетом транзакций и бизнес-логики.

Пояснение

В 1С запись в регистр накопления - это не «особая привязка к проведению», а обычная программная операция: формируется набор записей регистра (или движения документа) и затем вызывается его запись. Поэтому технически это можно сделать из любого места, где выполняется код: при проведении, при записи документа, при заполнении, при закрытии формы и т.д. Однако есть практические нюансы: - **Лучшее место по смыслу** - проведение (или запись) документа, потому что тогда движения отражают зафиксированное хозяйственное событие, а платформа обеспечивает согласованность: документ записан/проведен → движения соответствуют состоянию документа. - **Запись из событий формы (заполнение/закрытие)** возможна, но часто считается рискованной: пользователь может отменить запись документа, закрыть форму без сохранения, повторно открыть и заполнить - и вы получите лишние записи, дубли или несоответствие движений документу. - При ручной записи набора записей важно помнить, что у записей регистра накопления обычно должен быть **регистратор** (документ из списка регистраторов) и корректно задан **период**; иначе движения могут не записаться или будут некорректны. - Также следует учитывать **права доступа**, блокировки и транзакционность: запись регистра выполняйте на сервере и так, чтобы изменения документа и регистра были логически согласованы. Мини-пример логики: при проведении документа формируются движения через свойство «Движения» и записываются вместе с документом; но при необходимости можно сформировать набор записей регистра напрямую (СоздатьНаборЗаписей, заполнить строки, установить регистратор) и записать его из любого обработчика - именно поэтому верен вариант «во всех перечисленных событиях».