При переносе данных из внешних источников, например из Excel, разработчики часто сталкиваются с задачей автоматизации создания бухгалтерских движений. Одной из частых проблем в 1С:ERP 2.0 является вопрос: как программно включить режим «Ручная корректировка проводок» для документа Расходный кассовый ордер? Давайте разберем, почему стандартные методы из 1С:Бухгалтерии предприятия здесь не работают и как правильно решить эту задачу.
Первое, что необходимо осознать — 1С:ERP 2.0 кардинально отличается от 1С:БП по принципам организации учета. В 1С:Бухгалтерии документ и его проводки — это часто единое целое. В 1С:ERP реализовано четкое разделение на оперативный контур и регламентированный учет. Документ Расходный кассовый ордер отвечает исключительно за движение денежных средств в оперативном учете.
Проводки по регламентированному учету формируются в ERP с помощью подсистемы «Отражение документов в регламентированном учете». Именно поэтому вы не найдете реквизит РучнаяКорректировка непосредственно в метаданных документа РКО. Его там физически не существует, так как логика формирования проводок вынесена за пределы самого документа.
Это самый идеологически верный способ в 1С:ERP. Если типовой механизм формирования проводок для РКО не подходит или требует специфической ручной правки, мы не пытаемся «сломать» сам документ, а создаем дополняющий документ Операция (регламентированный учет).
Алгоритм действий:
РКО для фиксации оперативных движений.Операция (регламентированный учет), который будет содержать необходимые нам проводки.В документе Операция вы можете вручную задать любые счета учета, субконто и суммы, что полностью закрывает потребность в «ручной корректировке» без изменения типовой логики работы РКО.
Если ваша задача требует прямого вмешательства в движения документа РКО, необходимо работать с РегистромБухгалтерии.Хозрасчетный. Однако будьте осторожны: если вы просто запишете данные, при следующем перепроведении документа фоновое задание или пользовательское действие может затереть ваши изменения.
Чтобы зафиксировать изменения, необходимо программно установить признак ручной корректировки в записях регистра. Для этого разберем пример работы с набором записей:
// Пример программного доступа к движениям документа
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаРКО);
НаборЗаписей.Прочитать();
// Установка признака ручной корректировки
Для каждого Запись Из НаборЗаписей Цикл
Запись.РучнаяКорректировка = Истина;
КонецЦикла;
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
Важно помнить, что перед выполнением этого кода необходимо убедиться, что в настройках системы включена функциональная опция «Ручное изменение проводок документов» в разделе НСИ и администрирование -> Регламентированный учет. Без этой настройки система может игнорировать попытки ручной правки движений.
Если вы хотите глубже понять, как именно система управляет статусом корректировки, рекомендуем использовать Замер производительности или Журнал регистрации в процессе работы пользователя:
РКО.Чаще всего в ERP 2.0 статус ручной корректировки хранится не только в самом регистре бухгалтерии, но и в служебных регистрах сведений, определяющих параметры отражения документа в регламентированном учете. Поиск через Конфигуратор по метаданным позволит вам найти регистры, имеющие реквизит РучнаяКорректировка, и понять, какие именно сущности влияют на запрет автоматического перепроведения.
Применяя эти методы, вы сможете корректно автоматизировать создание документов, не нарушая целостность конфигурации 1С:ERP и обеспечивая корректность бухгалтерских данных.