Перенос документов и сопутствующей нормативно-справочной информации (НСИ) между одинаковыми конфигурациями в 1С:Предприятии 7.7 — распространенная задача при разделении учета, создании чистых баз или выгрузке определенного периода. В отличие от платформы 1С 8.х, в версии 7.7 нет встроенного механизма выгрузки в формате XML «из коробки» и отсутствуют глобальные идентификаторы GUID, поэтому процесс имеет ряд специфических особенностей.
Разберем основные технические нюансы, с которыми приходится сталкиваться, и детально рассмотрим проверенные способы переноса данных.
Особенности структуры и синхронизации данных в 1С 7.7
Прежде чем приступать к переносу, проанализируем ключевые ограничения платформы 7.7:
Идентификация объектов: Поиск существующих элементов выполняется строго по полям синхронизации. Для справочников это Код, Наименование, а также реквизиты вроде ИНН. Для документов ключевыми полями являются ВидДокумента, НомерДок и ДатаДок.
Иерархия ссылок и подчиненные справочники: Документы содержат реквизиты, ссылающиеся на подчиненные справочники (например, Договоры у Контрагентов или Единицы у Номенклатуры). При переносе сначала обязательно должны создаваться объекты-владельцы, затем подчиненные элементы, и только потом — сами документы.
Периодические реквизиты: Такие реквизиты справочников, как цены, курсы валют или учетные ставки, хранят историю значений. Простая перезапись элемента может зафиксировать значение только на текущую дату, поэтому переносить периодические данные необходимо с сохранением дат установки.
Проведение документов и актуальность итогов: Созданный и записанный в базу документ не формирует проводок и записей в регистрах. Загруженные документы необходимо последовательно перепроводить, соблюдая хронологию и положение точки актуальности (ТА).
Способ 1. Использование специализированных внешних обработок выгрузки/загрузки
Рассмотрим применение готовых универсальных обработок для выгрузки и загрузки документов (таких как ExImDocs, Перенос документов.ert и аналогичных решений).
Разберем стандартный алгоритм работы с такими инструментами:
Открываем обработку в базе-источнике через меню «Файл» — «Открыть».
Указываем период выборки документов и отмечаем необходимые виды документов для переноса.
В настройках выгрузки активируем опцию выгрузки связанных объектов НСИ (контрагенты, номенклатура, договоры, склады, банковские счета), чтобы избежать появления пустых ссылок («Объект не найден»).
Формируем файл выгрузки (обычно в формате текстового файла определенной структуры или специализированного формата обмена).
Открываем обработку в базе-приемнике, выбираем сформированный файл и выполняем загрузку.
Проверяем сопоставление справочников и при необходимости запускаем регламентное перепроведение загруженных документов.
Способ 2. Перенос данных через OLE-соединение
Рассмотрим вариант прямого программного переноса, когда обработка запускается в базе-источнике и подключается к базе-приемнику через OLE-автоматизацию. Этот подход позволяет переносить документы с автоматическим поиском и созданием недостающих элементов справочников прямо «на лету».
Посмотрим на пример базового алгоритма создания OLE-соединения и переноса документа:
БазаОле = СоздатьОбъект("V77.Application");
КаталогБазы = "C:\1C_Bases\TargetBase\";
Пользователь = "Администратор";
Пароль = "";
Если БазаОле.Initialize(БазаОле.RMTrade, "/D" + КаталогБазы + " /N" + Пользователь + " /P" + Пароль, "NO_SPLASH_SHOW") = 0 Тогда
Предупреждение("Ошибка подключения к базе-приемнику по OLE!");
Возврат;
КонецЕсли;
// Пример создания документа в базе-приемнике
ДокОле = БазаОле.СоздатьОбъект("Документ.РасходнаяНакладная");
ДокОле.Новый();
ДокОле.ДатаДок = ТекущаяДата();
ДокОле.НомерДок = "000001";
// Синхронизация и подстановка контрагента
СпрКонтрОле = БазаОле.СоздатьОбъект("Справочник.Контрагенты");
Если СпрКонтрОле.НайтиПоКоду("000123", 0) = 1 Тогда
ДокОле.Контрагент = СпрКонтрОле.ТекущийЭлемент();
КонецЕсли;
ДокОле.Записать();
Такой подход обеспечивает полный программный контроль над сопоставлением реквизитов и позволяет сразу вызывать метод проведения Провести() для записанного документа.
Способ 3. Конфигурация «1С:Конвертация данных»
Разберем еще один надежный вариант — настройку правил через конфигурацию «1С:Конвертация данных» (КД). Для идентичных конфигураций правила создаются автоматически:
С помощью внешней обработки выгружаем структуру метаданных обеих конфигураций в XML-файл.
Загружаем описание метаданных в конфигурацию «Конвертация данных».
Создаем правила обмена и используем автоматическую генерацию правил конвертации объектов «один в один».
Выгружаем готовый файл правил обмена.
Используем стандартную обработку выгрузки данных по правилам для 1С 7.7 в базе-источнике, а затем загружаем полученный XML-файл в базу-приемник.
Способ 4. Создание копии через распределенную базу (УРБД)
Если требуется сформировать новую базу на основе существующей с сохранением только части документов или определенной организации, проанализируем возможность использования механизма распределенных информационных баз (УРБД):
В исходной базе настраиваем узел распределенной информационной базы с фильтрацией данных по нужным критериям.
Формируем образ периферийной базы и инициализируем новую информационную базу.
Снимаем признак распределенности в созданной базе (отвязываем базу от центрального узла).
Получаем готовую автономную базу с корректно перенесенными справочниками и историей документов.
Регламентные действия после завершения переноса
После того как импорт документов завершен, выполним обязательные регламентные операции для обеспечения целостности данных:
Групповое перепроведение: Запустим групповое перепроведение перенесенных документов в хронологическом порядке, чтобы корректно сформировались проводки, регистры остатков и партионный учет.
Пересчет итогов: Откроем базу в монопольном режиме и выполним пересчет бухгалтерских и оперативных итогов через меню «Администрирование» — «Пересчет итогов».
Сверка контрольных отчетов: Сформируем оборотно-сальдовую ведомость и ведомости по остаткам в обеих базах за перенесенный период, чтобы убедиться в абсолютной сходимости данных.