Ситуация, когда в рабочей базе «1С:Управление производственным предприятием» (УПП) нарушаются итоги прошлых лет из-за случайного перепроведения документов или некорректных правок, является критической. Особенно остро эта проблема проявляется в конфигурациях, использующих расширенную аналитику учета затрат (РАУЗ), где любое изменение в 2017 году неизбежно приводит к «эффекту домино» и искажению себестоимости во всех последующих месяцах, включая текущий. Рассмотрим подробно, как выйти из этой ситуации, имея на руках корректный архив данных.
Разберем типичную ошибку. Бухгалтер или администратор, заметив расхождения в оборотно-сальдовой ведомости (ОСВ), пытается запустить групповое перепроведение документов или повторный расчет себестоимости с момента возникновения ошибки. В УПП 1.3 это часто приводит к еще худшим последствиям. Проанализируем причины:
Самым надежным способом восстановления является превращение архивной (корректной) базы в новую рабочую путем «догрузки» в нее актуальных данных за последние дни. Рассмотрим этот алгоритм по шагам.
Шаг 1. Подготовка эталонной базы
Возьмем ваш «нормальный» архив (базу, где данные верны до 05.10.2020). Создадим на его основе новую рабочую копию. Назовем ее Эталонная_Рабочая. Все действия будем производить в ней, чтобы не повредить имеющийся архив.
Шаг 2. Идентификация измененных данных
Нам необходимо четко определить, какие данные были внесены в «испорченную» рабочую базу после даты создания архива (с 06.10.2020 по текущий момент). Выясним, были ли изменения в старых периодах. Для этого воспользуемся отчетом «Журнал регистрации». Настроим фильтр по периоду событий и по действиям «Изменение» документов, дата которых меньше 06.10.2020.
Шаг 3. Использование обработки «Выгрузка и загрузка данных XML»
Для переноса данных между идентичными конфигурациями (версия УПП 1.3.147.1 в обеих базах) лучше всего подходит универсальная обработка ВыгрузкаЗагрузкаДанныхXML.epf. Ее главное преимущество — сохранение GUID (уникальных идентификаторов) объектов. Это гарантирует, что при загрузке документов в новую базу они «сцепятся» с уже существующими контрагентами и номенклатурой, а не создадут дубли.
Посмотрим, как правильно настроить выгрузку из «плохой» рабочей базы:
Шаг 4. Загрузка данных в эталон
В созданной базе Эталонная_Рабочая запускаем ту же обработку в режиме «Загрузка» и выбираем файл, сформированный на предыдущем шаге. Поскольку в архиве данных после 05.10.2020 нет, документы просто добавятся.
Проанализируем ситуацию: если мы просто перенесем документы, они будут «непроведенными». Если мы их проведем в новой базе, расчет себестоимости за октябрь может «поплыть», если за эти 3 дня были специфические операции.
Профессиональный подход заключается в том, чтобы вместе с документами перенести и их движения по регистрам (таблицы РегистрНакопления). Обработка ВыгрузкаЗагрузкаДанныхXML позволяет это сделать автоматически при выгрузке объектов. В этом случае документ в новой базе сразу станет «проведенным» с точно такими же цифрами в регистрах, как в исходной базе, без необходимости запуска обработки проведения.
Если документов за 3 дня слишком много (>1000 в день), или если изменения в старых периодах были точечными, можно рассмотреть альтернативный вариант — сравнение баз. Рассмотрим, как это сделать:
Для программного восстановления движений одного документа можно использовать следующий пример кода (для понимания логики):
// Пример логики восстановления движений через COM-соединение
// (упрощенно, требует адаптации под конкретные регистры)
Процедура ВосстановитьДвиженияИзАрхива(ДокументСсылка, АрхивныйДокументОбъект)
Для Каждого НаборДвижений Из ДокументСсылка.ПолучитьОбъект().Движения Цикл
ИмяРегистра = НаборДвижений.Метаданные().Имя;
НаборДвижений.Прочитать();
НаборДвижений.Очистить();
// Копируем строки из архивного набора движений
Для Каждого СтрокаАрхива Из АрхивныйДокументОбъект.Движения[ИмяРегистра] Цикл
НоваяСтрока = НаборДвижений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаАрхива);
КонецЦикла;
НаборДвижений.Записать(Истина);
КонецЦикла;
КонецПроцедуры
Чтобы ситуация не повторилась, после успешного восстановления необходимо предпринять административные меры. Выясним, что нужно сделать в первую очередь:
1. Установка даты запрета редактирования. Это обязательное условие. В УПП 1.3 дата запрета устанавливается в меню «Сервис» — «Установка даты запрета изменения данных». Установите дату 01.10.2020 для всех пользователей, включая администраторов. Если требуется открыть период для Гл. бухгалтера, это должно делаться только по официальному запросу и на минимальное время.
2. Ограничение прав на проведение. Проанализируем роль пользователей. Зачастую полные права раздаются слишком широкому кругу лиц. Проверьте, чтобы право ИнтерактивноеПроведениеНеоперативное было только у ответственных лиц.
3. Регулярный контроль Журнала Регистрации. Настройте автоматическую выгрузку критических событий (изменение документов прошлых периодов) в отдельный отчет для технического специалиста.
Восстановление УПП через архив — это наиболее безопасный путь, который гарантирует сохранение сданной отчетности. Помните, что «самолечение» базы через групповое перепроведение за несколько лет в 99% случаев приводит к необратимым искажениям финансового результата. Всегда делайте резервную копию перед любыми манипуляциями с переносом данных!