Как массово заполнить измерение Подразделение в регистре Хозрасчетный в 1С:Бухгалтерия КОРП

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При ведении учета в конфигурации 1С:Бухгалтерия КОРП часто возникает ситуация, когда организация начинает использовать обособленные подразделения. Если ранее учет велся без разделения по подразделениям, во всех исторических записях регистра бухгалтерии Хозрасчетный измерение Подразделение остается незаполненным (пустая ссылка). Главный бухгалтер может потребовать привести данные в порядок, чтобы обеспечить сопоставимость отчетности, заполнив пустые значения подразделением "Основное".

В этой статье мы рассмотрим, как технически реализовать задачу массового заполнения подразделений, не прибегая к полному перепроведению документов за прошлые годы, и разберем сопутствующие риски для учета на 10-х счетах.

Анализ проблемы и выбор методики

Прежде всего, проанализируем ситуацию. В версии КОРП подразделение является балансовым измерением регистра бухгалтерии. Это означает, что остатки и обороты хранятся в разрезе этого измерения. Простое изменение реквизита в документе через стандартную обработку "Групповое изменение реквизитов" не изменит данные в самом регистре (в проводках), пока документ не будет перепроведен.

Однако перепроведение документов за прошлые годы (особенно если была сделана свертка базы) — это критическая операция, которая может привести к:

Рассмотрим по шагам два основных способа решения задачи: безопасный стандартный и профессиональный программный.

Способ 1: Использование стандартной обработки Групповое изменение реквизитов

Этот способ подходит, если количество документов невелико и периоды не закрыты для редактирования. Разберем алгоритм работы:

  1. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. В поле "Изменять" выберем типы документов, которые формируют проводки по счетам 10.04, 10.05, 10.10 (например, "Поступление товаров и услуг", "Требование-накладная").
  3. Настроим отбор: Подразделение "Не заполнено" И Дата в нужном диапазоне.
  4. В колонке "Новое значение" установим наше подразделение "Основное".
  5. Важно: В дополнительных настройках обработки необходимо убедиться, что включен режим записи проводок, иначе изменения коснутся только шапки документа.

Главный минус этого способа — система инициирует стандартные механизмы записи документа, что может потребовать перепроведения всей цепочки. Если база большая и периоды "свернуты", этот метод не подходит.

Способ 2: Программное изменение записей регистра через НаборЗаписей

Для решения задачи в закрытых периодах без изменения движений по суммам и количеству мы воспользуемся объектом РегистрБухгалтерииНаборЗаписей. Этот метод позволяет напрямую редактировать таблицу проводок.

Разберем пример кода, который выполняет замену подразделения для конкретных счетов учета материалов:


// Создаем выборку документов, по которым есть проводки с пустым подразделением
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |   Хозрасчетный.Регистратор КАК Регистратор
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |   Хозрасчетный.Подразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
    |   И Хозрасчетный.СчетДт В (&Счета) ИЛИ Хозрасчетный.СчетКт В (&Счета)";

СписокСчетов = Новый Массив;
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.04"));
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"));
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.10"));
Запрос.УстановитьПараметр("Счета", СписокСчетов);

Выборка = Запрос.Выполнить().Выбрать();
ПодразделениеОсновное = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию("Основное");

Пока Выборка.Следующий() Цикл
    // Работаем с набором записей конкретного документа
    НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
    НаборЗаписей.Прочитать();
    
    Для Каждого Запись Из НаборЗаписей Цикл
        // Проверяем соответствие счета и пустоту подразделения
        Если (СписокСчетов.Найти(Запись.СчетДт) <> Неопределено ИЛИ СписокСчетов.Найти(Запись.СчетКт) <> Неопределено) 
             И Запись.Подразделение.Пустая() Тогда
            Запись.Подразделение = ПодразделениеОсновное;
        КонецЕсли;
    КонецЦикла;
    
    // Ключевой момент: запись без проверок и перепроведения
    НаборЗаписей.ОбменДанными.Загрузка = Истина;
    НаборЗаписей.Записать();
КонецЦикла;

Проанализируем этот код. Использование свойства ОбменДанными.Загрузка = Истина позволяет обойти встроенные в конфигурацию проверки (например, контроль остатков или проверку закрытого периода). Это самый быстрый и "хирургический" способ внесения правок.

Особенности работы после свертки базы

Выясним причину, по которой обычное изменение документов может не сработать после свертки. При свертке формируются документы Ввод остатков. Если мы изменим подразделение в текущих оборотах, но не изменим его в документах ввода остатков, в ОСВ возникнет "разрыв":

Поэтому проанализируем ситуацию со счетами 10.04, 10.05 и 10.10. Если по ним ведется учет по складам, то подразделение в проводках должно соответствовать подразделению, к которому привязан склад. Проверьте карточки складов перед запуском обработки!

Методологические риски (Налоги и НДС)

Рассмотрим подробнее последствия для налогового учета. В 1С:БП КОРП подразделение используется для:

  1. Налога на прибыль: Расчет долей прибыли по обособленным подразделениям. Если вы массово заполните подразделение "Основное" за прошлые периоды, это может формально изменить базу для распределения налога, хотя фактически до появления второго подразделения вся прибыль и так относилась к голове.
  2. Раздельного учета НДС: Если в базе включен раздельный учет, записи в регистры накопления (НДС Предъявленный, Раздельный учет НДС) делаются в момент проведения документа. Программная правка регистра бухгалтерии (как в Способе 2) не затронет регистры НДС. Это приведет к расхождению между данными БУ и данными в специализированных отчетах по НДС.

Важнейший этап: Обновление итогов

После прямого изменения регистра бухгалтерии через НаборЗаписей, данные в отчетах (например, в Оборотно-сальдовой ведомости) могут отображаться некорректно. Выясним причину: 1С хранит итоги в агрегированных таблицах. Прямая запись набора записей не всегда корректно обновляет эти таблицы в реальном времени.

Посмотрим, что нужно сделать обязательно:

Рекомендации по выполнению задачи

Подведем итог. Чтобы выполнить задачу безопасно, придерживайтесь следующего алгоритма:

  1. Выполните операцию только на копии базы.
  2. Проверьте счета 10.х в ОСВ: если там уже есть обороты по "Основному" и "Пустому" подразделениям, выясните, не возникнет ли двойного сальдо.
  3. Используйте программный метод с ОбменДанными.Загрузка = Истина, чтобы не затронуть суммы и закрытые периоды.
  4. Обязательно обработайте документы Ввод остатков, если была свертка.
  5. После выполнения пересчитайте итоги регистра бухгалтерии.
  6. Сверьте ОСВ по счету 10 (в разрезе подразделений) до и после процедуры. Общая сумма по счету должна остаться неизменной.

Такой системный подход позволит удовлетворить требования бухгалтерии без риска "сломать" учет в информационной базе.

← На главную