При ведении учета в конфигурации 1С:Бухгалтерия КОРП часто возникает ситуация, когда организация начинает использовать обособленные подразделения. Если ранее учет велся без разделения по подразделениям, во всех исторических записях регистра бухгалтерии Хозрасчетный измерение Подразделение остается незаполненным (пустая ссылка). Главный бухгалтер может потребовать привести данные в порядок, чтобы обеспечить сопоставимость отчетности, заполнив пустые значения подразделением "Основное".
В этой статье мы рассмотрим, как технически реализовать задачу массового заполнения подразделений, не прибегая к полному перепроведению документов за прошлые годы, и разберем сопутствующие риски для учета на 10-х счетах.
Прежде всего, проанализируем ситуацию. В версии КОРП подразделение является балансовым измерением регистра бухгалтерии. Это означает, что остатки и обороты хранятся в разрезе этого измерения. Простое изменение реквизита в документе через стандартную обработку "Групповое изменение реквизитов" не изменит данные в самом регистре (в проводках), пока документ не будет перепроведен.
Однако перепроведение документов за прошлые годы (особенно если была сделана свертка базы) — это критическая операция, которая может привести к:
Рассмотрим по шагам два основных способа решения задачи: безопасный стандартный и профессиональный программный.
Этот способ подходит, если количество документов невелико и периоды не закрыты для редактирования. Разберем алгоритм работы:
Подразделение "Не заполнено" И Дата в нужном диапазоне.Главный минус этого способа — система инициирует стандартные механизмы записи документа, что может потребовать перепроведения всей цепочки. Если база большая и периоды "свернуты", этот метод не подходит.
Для решения задачи в закрытых периодах без изменения движений по суммам и количеству мы воспользуемся объектом РегистрБухгалтерииНаборЗаписей. Этот метод позволяет напрямую редактировать таблицу проводок.
Разберем пример кода, который выполняет замену подразделения для конкретных счетов учета материалов:
// Создаем выборку документов, по которым есть проводки с пустым подразделением
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Хозрасчетный.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Подразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
| И Хозрасчетный.СчетДт В (&Счета) ИЛИ Хозрасчетный.СчетКт В (&Счета)";
СписокСчетов = Новый Массив;
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.04"));
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.10"));
Запрос.УстановитьПараметр("Счета", СписокСчетов);
Выборка = Запрос.Выполнить().Выбрать();
ПодразделениеОсновное = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию("Основное");
Пока Выборка.Следующий() Цикл
// Работаем с набором записей конкретного документа
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
// Проверяем соответствие счета и пустоту подразделения
Если (СписокСчетов.Найти(Запись.СчетДт) <> Неопределено ИЛИ СписокСчетов.Найти(Запись.СчетКт) <> Неопределено)
И Запись.Подразделение.Пустая() Тогда
Запись.Подразделение = ПодразделениеОсновное;
КонецЕсли;
КонецЦикла;
// Ключевой момент: запись без проверок и перепроведения
НаборЗаписей.ОбменДанными.Загрузка = Истина;
НаборЗаписей.Записать();
КонецЦикла;
Проанализируем этот код. Использование свойства ОбменДанными.Загрузка = Истина позволяет обойти встроенные в конфигурацию проверки (например, контроль остатков или проверку закрытого периода). Это самый быстрый и "хирургический" способ внесения правок.
Выясним причину, по которой обычное изменение документов может не сработать после свертки. При свертке формируются документы Ввод остатков. Если мы изменим подразделение в текущих оборотах, но не изменим его в документах ввода остатков, в ОСВ возникнет "разрыв":
Поэтому проанализируем ситуацию со счетами 10.04, 10.05 и 10.10. Если по ним ведется учет по складам, то подразделение в проводках должно соответствовать подразделению, к которому привязан склад. Проверьте карточки складов перед запуском обработки!
Рассмотрим подробнее последствия для налогового учета. В 1С:БП КОРП подразделение используется для:
После прямого изменения регистра бухгалтерии через НаборЗаписей, данные в отчетах (например, в Оборотно-сальдовой ведомости) могут отображаться некорректно. Выясним причину: 1С хранит итоги в агрегированных таблицах. Прямая запись набора записей не всегда корректно обновляет эти таблицы в реальном времени.
Посмотрим, что нужно сделать обязательно:
Подведем итог. Чтобы выполнить задачу безопасно, придерживайтесь следующего алгоритма:
ОбменДанными.Загрузка = Истина, чтобы не затронуть суммы и закрытые периоды.Ввод остатков, если была свертка.Такой системный подход позволит удовлетворить требования бухгалтерии без риска "сломать" учет в информационной базе.