Как заменить КПС в документах и регистре бухгалтерии ЕПСБУ в 1С:БГУ 1.0 без перепроведения?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

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

Разберем детально, как устроено хранение КПС, с какими ограничениями платформы предстоит столкнуться и как безопасно выполнить пакетную замену данных.

Особенности хранения данных и возможные риски

Перед тем как приступать к исправлению данных, проанализируем структуру хранения классификаторов в БГУ 1.0:

  1. Эфемерность ручных операций. В документах ОперацияБух (Операция бухгалтерская) и КорректировкаЗаписейРегистров нет собственных табличных частей, где хранились бы проводки. Проводки формируются и существуют исключительно в самом регистре бухгалтерии, где документ выступает лишь регистратором. Если обработка ориентируется только на реквизиты и табличные части метаданных документа, она не затронет движения таких документов.
  2. Опасность перепроведения. Если инструмент замены пытается обновить КПС путем перезаписи реквизитов с последующим выполнением метода Записать(РежимЗаписиДокумента.Проведение), система запустит алгоритмы проведения. В закрытых периодах это может повлечь за собой пересчет сумм, зачетов авансов и расчетных показателей себестоимости.
  3. Риск отката изменений. Если изменить КПС исключительно в регистре бухгалтерии, но оставить старое значение в документе (или в реквизитах его типовой операции), любое случайное перепроведение документа пользователем в будущем вернет старый КПС в проводки. Замена должна быть синхронной.
  4. Связанные регистры сведений. КПС входит в состав аналитики не только проводок, но и регистров сведений (например, ПараметрыОтраженияЗатратПоАмортизацииОС). Замена только в проводках приведет к тому, что при очередном начислении амортизации регламентный документ снова подставит старую классификацию.

Способ 1. Использование типовой обработки «Поиск и замена значений»

Для решения задачи можно применить универсальную обработку с диска ИТС «Поиск и замена значений». Ее ключевое преимущество заключается в том, что она осуществляет прямую замену ссылок во всей базе данных и не вызывает модуль проведения документов.

Рассмотрим алгоритм работы с этой обработкой:

  1. Создание резервной копии. Перед любыми групповыми операциями с ссылками обязательно создаем полную резервную копию информационной базы (файл .dt или бэкап средствами СУБД).
  2. Отключение контроля дат. Проверяем, снята ли дата запрета изменения данных для пользователей с административными правами. В противном случае платформа заблокирует запись наборов движений в закрытых периодах.
  3. Поиск дублей и ссылок. Запускаем обработку, выбираем исходное значение КПС («Что заменять») и новое значение («На что заменять»).
  4. Настройка мест поиска. Нажимаем кнопку поиска ссылок. В списке найденных объектов проверяем наличие как самих документов, так и записей регистра бухгалтерии ЕдиныйПланСчетовБухгалтерскогоУчета.
  5. Выполнение замены. Нажимаем кнопку выполнения операции. Обработка последовательно заменяет ссылки во всех обнаруженных таблицах, включая измерения проводок, без инициализации процедуры перепроведения.

Следует учитывать, что стандартная обработка может пропустить КПС, если он хранится внутри специализированных служебных структур типовых операций или в нестандартных реквизитах. Если после отработки поиска ссылки в проводках КорректировкаЗаписейРегистров не определились, потребуется программный способ.

Способ 2. Программная корректировка через режим загрузки данных

Наиболее надежным и контролируемым решением является написание небольшой внешней обработки. Мы разделим процесс на два этапа: сначала скорректируем записи регистра бухгалтерии, а затем обновим реквизиты документов-регистраторов. Использование свойства ОбменДанными.Загрузка = Истина полностью отключит исполнение обработчиков проведения и исключит пересчет суммовых показателей.

Рассмотрим пример программной корректировки проводок регистра бухгалтерии:


// Этап 1. Замена КПС в проводках регистра ЕПСБУ
СтарыйКПС = Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("СтарыйКод");
НовыйКПС  = Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("НовыйКод");

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

Запрос.УстановитьПараметр("СтарыйКПС", СтарыйКПС);
Результат = Запрос.Выполнить().Выгрузить();

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

Теперь разберем второй этап — замену реквизитов в самих документах, чтобы исключить рассинхронизацию при возможных будущих манипуляциях с документами:


// Этап 2. Корректировка реквизитов документов без проведения
Для Каждого Стр Из Результат Цикл
    ДокОбъект = Стр.Регистратор.ПолучитьОбъект();
    Если ДокОбъект = Неопределено Тогда
        Продолжить;
    КонецЕсли;
    
    ДокументМодифицирован = Ложь;
    
    // Проверяем реквизиты шапки
    МетаданныеДок = ДокОбъект.Метаданные();
    Для Каждого Реквизит Из МетаданныеДок.Реквизиты Цикл
        Если ДокОбъект[Реквизит.Имя] = СтарыйКПС Тогда
            ДокОбъект[Реквизит.Имя] = НовыйКПС;
            ДокументМодифицирован = Истина;
        КонецЕсли;
    КонецЦикла;
    
    // Проверяем табличные части
    Для Каждого ТабЧасть Из МетаданныеДок.ТабличныеЧасти Цикл
        Для Каждого СтрокаТЧ Из ДокОбъект[ТабЧасть.Имя] Цикл
            Для Каждого РеквизитТЧ Из ТабЧасть.Реквизиты Цикл
                Если СтрокаТЧ[РеквизитТЧ.Имя] = СтарыйКПС Тогда
                    СтрокаТЧ[РеквизитТЧ.Имя] = НовыйКПС;
                    ДокументМодифицирован = Истина;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    Если ДокументМодифицирован Тогда
        ДокОбъект.ОбменДанными.Загрузка = Истина;
        ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
    КонецЕсли;
КонецЦикла;

Обязательные действия после пакетной замены

После выполнения прямой записи наборов движений регистров бухгалтерии необходимо выполнить регламентные технические процедуры:

  1. Пересчет итогов регистра бухгалтерии. При прямой записи наборов записей через ОбменДанными.Загрузка = Истина могут возникать расхождения в агрегатных таблицах остатков и оборотов. Переходим в меню Операции → Управление итогами и выполняем полный пересчет итогов для регистра ЕПСБУ (либо запускаем Тестирование и исправление информационной базы с флагом пересчета итогов).
  2. Сверка оборотно-сальдовой ведомости. Формируем ОСВ до и после корректировки. Итоговые обороты и сальдо по счетам в целом должны остаться неизменными, а суммы по старому КПС должны в полном объеме перейти на новый КПС.
  3. Восстановление даты запрета редактирования. Устанавливаем дату запрета обратно на актуальный закрытый период.

Когда прямая замена недопустима: документ «Перенос остатков по КПС»

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

Для плановой смены кодов в БГУ 1.0 предусмотрен штатный документ ПереносОстатковПоКПС. Он проводится в межотчетный период датой 31 декабря в 23:59:59 со специальным признаком отражения в межотчетном периоде. Этот документ закрывает сальдо по старым кодам бюджетной классификации и открывает остатки на новых КПС через счет 0.401.30.000 «Результат прошлых отчетных периодов». В результате отчетность за прошлые годы сохраняет свою историческую достоверность, а учет в новом финансовом году продолжается по актуальным классификаторам.

← На главную