В практике работы с 1С:ERP часто возникает задача: необходимо провести документ в оперативном (управленческом) контуре, чтобы он изменил остатки на складах или зафиксировал факт перемещения, но при этом документ не должен формировать проводок в бухгалтерском и налоговом учете. Стандартная попытка просто очистить движения в модуле документа часто приводит к тому, что процедура «Закрытие месяца» все равно «видит» документ и пытается отразить его в регламентированном учете. Разберем подробно, почему так происходит и как правильно реализовать подобную доработку.
Проанализируем архитектуру 1С:ERP. В отличие от простых конфигураций, в ERP реализовано отложенное отражение в регламентированном учете. Это означает, что проводки по плану счетов формируются не в момент нажатия кнопки «Провести», а специальным фоновым заданием или в рамках этапа закрытия месяца. Система ориентируется на специальные служебные регистры, которые содержат очередь документов, ожидающих отражения. Если вы просто программно удалите проводки, система зафиксирует расхождение и при очередном запуске регламентных операций создаст их заново.
Выясним причину, по которой «Закрытие месяца» находит ваш документ. За это отвечает регистр сведений ОтражениеДокументовВРеглУчете. При проведении любого финансово значимого документа система делает запись в этот регистр со статусом «К отражению».
Чтобы документ игнорировался механизмом закрытия месяца, нам необходимо исключить его из этого регистра или изменить его состояние. Рассмотрим пример кода, который можно разместить в обработке проведения или в подписке на событие ПриЗаписи:
// Пример исключения записи из регистра сведений
НаборЗаписей = РегистрыСведений.ОтражениеДокументовВРеглУчете.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
НаборЗаписей.Записать(); // Записываем пустой набор, удаляя очередь на отражение
Однако помните, что при перепроведении документа стандартные механизмы могут снова создать эту запись. Поэтому надежнее использовать расширение для модификации логики формирования этой очереди.
Рассмотрим более глубокий уровень кастомизации. В 1С:ERP за формирование данных для проводок отвечают запросы, расположенные в модулях менеджеров документов. Обычно это функции, возвращающие текст запроса, например, ТекстОтраженияВРеглУчете() или аналогичные процедуры в общем модуле ОтражениеДокументовВРеглУчете.
Проанализируем алгоритм действий:
ПеремещениеТоваров) процедуру, отвечающую за подготовку данных для формирования проводок.&Вместо или &После к процедуре формирования временных таблиц.НеОтражатьВРеглУчете).Пример изменения текста запроса в расширении:
&Вместо("ТекстОтраженияВРеглУчете")
Функция Мой_ТекстОтраженияВРеглУчете(Параметры)
ТекстЗапроса = ПродолжитьВызов(Параметры);
// Добавляем условие фильтрации по нашему реквизиту
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"ГДЕ",
"ГДЕ НЕ ТаблицаДокумента.НеОтражатьВРеглУчете И ");
Возврат ТекстЗапроса;
КонецФункции
Это самый критичный момент. Даже если вы отключите проводки, в регистрах накопления (таких как СебестоимостьТоваров или ВыручкаИСебестоимостьПродаж) данные по регламентированному учету все равно могут остаться. В 1С:ERP ресурсы этих регистров часто разделены: Стоимость (УУ) и СтоимостьРегл (БУ/НУ).
Если в регистре накопления зафиксирована СтоимостьРегл, но проводок по счету 10 или 41 нет — вы получите разрыв в отчете «Сверка данных оперативного и регламентированного учета». Разберем, как этого избежать:
СебестоимостьТоваров.СтоимостьРегл, НДСРегл, СтоимостьЗатратРегл записываются как 0.Важно: Если вы оставите количественный учет в БУ, но уберете суммовой, это может привести к ошибкам при расчете себестоимости в конце месяца, так как система не сможет определить стоимость списания для партий, не имеющих оценки в регламентированном контуре.
Вместо сложной доработки кода, рассмотрим штатные возможности системы, которые позволяют достичь похожего результата:
В 1С:ERP можно создать организацию и установить ей признак «Управленческая организация». Документы, оформленные от имени такой организации, отражаются в управленческом балансе, но не попадают в регламентированную отчетность компании. Это наиболее безопасный путь, не требующий вмешательства в программный код.
Посмотрим на настройки ГФУ номенклатуры или складов. Для специфических операций (например, учет отходов) можно создать отдельную ГФУ, где в качестве счетов учета будут указаны забалансовые счета (например, счет 003 или специально созданный субсчет). В этом случае документ будет формировать проводки, но они не будут влиять на основные счета баланса и не «раздуют» налогооблагаемую базу.
Проанализируем возможные проблемы при обновлении и эксплуатации:
Подведем итог: наиболее корректным техническим решением является сочетание очистки регистра ОтражениеДокументовВРеглУчете и обнуления ресурсов СтоимостьРегл в регистрах накопления через механизмы расширений. Однако перед внедрением такой доработки обязательно рассмотрите вариант с использованием функционала «Управленческой организации».