В практике сопровождения конфигурации «1С:Бухгалтерия государственного учреждения 1.0» нередко возникает задача массовой замены классификационных признаков счетов (КПС). Это может потребоваться при обнаружении ошибок ввода или уточнении бюджетной классификации. Основная сложность заключается в том, что КПС должен измениться одновременно в реквизитах первичных документов и в проводках регистра бухгалтерии ЕдиныйПланСчетовБухгалтерскогоУчета (ЕПСБУ). При этом категорически нельзя допустить массового перепроведения документов прошлых периодов, так как это приведет к пересчету средних цен списания материальных запасов, искажению амортизации и закрытия счетов.
Разберем детально, как устроено хранение КПС, с какими ограничениями платформы предстоит столкнуться и как безопасно выполнить пакетную замену данных.
Перед тем как приступать к исправлению данных, проанализируем структуру хранения классификаторов в БГУ 1.0:
ОперацияБух (Операция бухгалтерская) и КорректировкаЗаписейРегистров нет собственных табличных частей, где хранились бы проводки. Проводки формируются и существуют исключительно в самом регистре бухгалтерии, где документ выступает лишь регистратором. Если обработка ориентируется только на реквизиты и табличные части метаданных документа, она не затронет движения таких документов.Записать(РежимЗаписиДокумента.Проведение), система запустит алгоритмы проведения. В закрытых периодах это может повлечь за собой пересчет сумм, зачетов авансов и расчетных показателей себестоимости.ПараметрыОтраженияЗатратПоАмортизацииОС). Замена только в проводках приведет к тому, что при очередном начислении амортизации регламентный документ снова подставит старую классификацию.Для решения задачи можно применить универсальную обработку с диска ИТС «Поиск и замена значений». Ее ключевое преимущество заключается в том, что она осуществляет прямую замену ссылок во всей базе данных и не вызывает модуль проведения документов.
Рассмотрим алгоритм работы с этой обработкой:
.dt или бэкап средствами СУБД).ЕдиныйПланСчетовБухгалтерскогоУчета.Следует учитывать, что стандартная обработка может пропустить КПС, если он хранится внутри специализированных служебных структур типовых операций или в нестандартных реквизитах. Если после отработки поиска ссылки в проводках КорректировкаЗаписейРегистров не определились, потребуется программный способ.
Наиболее надежным и контролируемым решением является написание небольшой внешней обработки. Мы разделим процесс на два этапа: сначала скорректируем записи регистра бухгалтерии, а затем обновим реквизиты документов-регистраторов. Использование свойства ОбменДанными.Загрузка = Истина полностью отключит исполнение обработчиков проведения и исключит пересчет суммовых показателей.
Рассмотрим пример программной корректировки проводок регистра бухгалтерии:
// Этап 1. Замена КПС в проводках регистра ЕПСБУ
СтарыйКПС = Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("СтарыйКод");
НовыйКПС = Справочники.КлассификационныеПризнакиСчетов.НайтиПоКоду("НовыйКод");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЕПСБУ.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.ЕдиныйПланСчетовБухгалтерскогоУчета КАК ЕПСБУ
|ГДЕ
| (ЕПСБУ.КПСДт = &СтарыйКПС ИЛИ ЕПСБУ.КПСКт = &СтарыйКПС)";
Запрос.УстановитьПараметр("СтарыйКПС", СтарыйКПС);
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из Результат Цикл
Набор = РегистрыБухгалтерии.ЕдиныйПланСчетовБухгалтерскогоУчета.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Стр.Регистратор);
Набор.Прочитать();
БылИзменен = Ложь;
Для Каждого Проводка Из Набор Цикл
Если Проводка.КПСДт = СтарыйКПС Тогда
Проводка.КПСДт = НовыйКПС;
БылИзменен = Истина;
КонецЕсли;
Если Проводка.КПСКт = СтарыйКПС Тогда
Проводка.КПСКт = НовыйКПС;
БылИзменен = Истина;
КонецЕсли;
КонецЦикла;
Если БылИзменен Тогда
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();
КонецЕсли;
КонецЦикла;
Теперь разберем второй этап — замену реквизитов в самих документах, чтобы исключить рассинхронизацию при возможных будущих манипуляциях с документами:
// Этап 2. Корректировка реквизитов документов без проведения
Для Каждого Стр Из Результат Цикл
ДокОбъект = Стр.Регистратор.ПолучитьОбъект();
Если ДокОбъект = Неопределено Тогда
Продолжить;
КонецЕсли;
ДокументМодифицирован = Ложь;
// Проверяем реквизиты шапки
МетаданныеДок = ДокОбъект.Метаданные();
Для Каждого Реквизит Из МетаданныеДок.Реквизиты Цикл
Если ДокОбъект[Реквизит.Имя] = СтарыйКПС Тогда
ДокОбъект[Реквизит.Имя] = НовыйКПС;
ДокументМодифицирован = Истина;
КонецЕсли;
КонецЦикла;
// Проверяем табличные части
Для Каждого ТабЧасть Из МетаданныеДок.ТабличныеЧасти Цикл
Для Каждого СтрокаТЧ Из ДокОбъект[ТабЧасть.Имя] Цикл
Для Каждого РеквизитТЧ Из ТабЧасть.Реквизиты Цикл
Если СтрокаТЧ[РеквизитТЧ.Имя] = СтарыйКПС Тогда
СтрокаТЧ[РеквизитТЧ.Имя] = НовыйКПС;
ДокументМодифицирован = Истина;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если ДокументМодифицирован Тогда
ДокОбъект.ОбменДанными.Загрузка = Истина;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЦикла;
После выполнения прямой записи наборов движений регистров бухгалтерии необходимо выполнить регламентные технические процедуры:
ОбменДанными.Загрузка = Истина могут возникать расхождения в агрегатных таблицах остатков и оборотов. Переходим в меню Операции → Управление итогами и выполняем полный пересчет итогов для регистра ЕПСБУ (либо запускаем Тестирование и исправление информационной базы с флагом пересчета итогов).Проанализируем методологическую сторону вопроса. Если замена КПС связана с изменением бюджетной классификации с начала очередного финансового года, править прошлые периоды и исторические проводки строго запрещено инструкциями по бюджетному учету.
Для плановой смены кодов в БГУ 1.0 предусмотрен штатный документ ПереносОстатковПоКПС. Он проводится в межотчетный период датой 31 декабря в 23:59:59 со специальным признаком отражения в межотчетном периоде. Этот документ закрывает сальдо по старым кодам бюджетной классификации и открывает остатки на новых КПС через счет 0.401.30.000 «Результат прошлых отчетных периодов». В результате отчетность за прошлые годы сохраняет свою историческую достоверность, а учет в новом финансовом году продолжается по актуальным классификаторам.