Перенос данных между различными редакциями или версиями конфигураций 1С — задача всегда ответственная, особенно когда речь идет о переходе с обычной Бухгалтерии предприятия (ПРОФ) на версию КОРП. Сложность заключается не только в разнице метаданных, но и в необходимости сохранить ссылочную целостность, аналитику и корректность остатков по конкретной организации, не затрагивая при этом данные других компаний в целевой базе. В данной статье мы разберем наиболее эффективные методики решения этой задачи, проанализируем возможные ошибки и предложим пошаговый алгоритм действий.
Рассмотрим типовую ситуацию: у нас есть исходная информационная база (ИБ-1), в которой ведется учет по двум организациям (Орг1 и Орг2). Нам необходимо перенести все данные только по Орг2 в уже существующую рабочую базу Бухгалтерия предприятия КОРП (ИБ-2), где уже есть свои данные по другой организации (Орг1-корп). Важное условие — перенос должен включать всю историю документов, справочников и движений по регистрам, чтобы оборотно-сальдовая ведомость в новой базе сошлась "копейка в копейку" с исходной.
Основные сложности, с которыми мы можем столкнуться:
Подразделение.Проанализируем стратегию, которая позволяет максимально сохранить целостность данных. Этот метод заключается в выделении данных одной организации в отдельную базу той же версии, с последующим повышением ее статуса до КОРП.
Шаг 1: Создание частичной копии через РИБ
В исходной базе ПРОФ настроим синхронизацию данных через механизм РИБ (Распределенная информационная база) с фильтром по организации. Рассмотрим, как это сделать:
Шаг 2: Апгрейд конфигурации до КОРП
Теперь нашу промежуточную базу нужно превратить из ПРОФ в КОРП. Для этого выполним следующие действия:
.cfu) или файл полной конфигурации КОРП (.cf).Шаг 3: Объединение с целевой базой КОРП
Когда у нас есть база Орг2 в формате КОРП, ее данные можно перелить в целевую базу ИБ-2 (где уже живет Орг1-корп) с помощью обработки "Выгрузка и загрузка данных XML". Поскольку конфигурации теперь идентичны, проблем с несовпадением полей не возникнет.
Если вариант с РИБ кажется избыточным, можно воспользоваться универсальной выгрузкой, но с соблюдением строгих правил синхронизации GUID (уникальных идентификаторов).
Выясним причину появления дублей: при загрузке данных в новую базу система ищет объекты по внутреннему идентификатору. Если в целевой базе уже есть справочник Валюты (например, "руб."), созданный вручную или загруженный из другого источника, его GUID не совпадет с GUID рубля из исходной базы, и система создаст второй "руб.".
Рекомендации по синхронизации:
Валюты, КлассификаторЕдиницИзмерения, СтраныМира.Разберем важный программный нюанс. При использовании обработки "Универсальный обмен данными XML" крайне важно, чтобы загрузка происходила в режиме обмена. Это отключает проверки в модулях объектов, которые могут помешать записи исторических данных.
// Пример логики, которую использует обработка при включенном режиме загрузки
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Даже при самой тщательной подготовке дубли справочников могут возникнуть. Рассмотрим, как эффективно их устранить:
Важное предостережение: В некоторых обсуждениях упоминается очистка дублей напрямую через SQL-запросы. Мы настоятельно не рекомендуем использовать этот метод. Прямое удаление записей в таблицах SQL игнорирует объектную логику 1С и может привести к появлению "битых ссылок" (<Объект не найден>) во всей базе, что потребует сложного технического восстановления.
Проанализируем ситуацию с аналитикой Подразделение. В обычной БП подразделения часто используются только в затратных счетах и кадровом учете. В КОРП версии подразделение может быть балансовым измерением на счетах учета денежных средств, расчетов и т.д.
После переноса данных необходимо:
Подразделение заполнено корректно (обычно заполняется основным подразделением по умолчанию).Рассмотрим краткий план работы для успешного результата:
GUID.Такой системный подход гарантирует, что история учета будет сохранена в полном объеме, а работа Орг1-корп в целевой базе не будет нарушена.