Как перенести документы и связанные справочники между идентичными базами 1С 7.7?

Программист 1С v7.7 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

Перенос документов и сопутствующей нормативно-справочной информации (НСИ) между одинаковыми конфигурациями в 1С:Предприятии 7.7 — распространенная задача при разделении учета, создании чистых баз или выгрузке определенного периода. В отличие от платформы 1С 8.х, в версии 7.7 нет встроенного механизма выгрузки в формате XML «из коробки» и отсутствуют глобальные идентификаторы GUID, поэтому процесс имеет ряд специфических особенностей.

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

Особенности структуры и синхронизации данных в 1С 7.7

Прежде чем приступать к переносу, проанализируем ключевые ограничения платформы 7.7:

  1. Идентификация объектов: Поиск существующих элементов выполняется строго по полям синхронизации. Для справочников это Код, Наименование, а также реквизиты вроде ИНН. Для документов ключевыми полями являются ВидДокумента, НомерДок и ДатаДок.
  2. Иерархия ссылок и подчиненные справочники: Документы содержат реквизиты, ссылающиеся на подчиненные справочники (например, Договоры у Контрагентов или Единицы у Номенклатуры). При переносе сначала обязательно должны создаваться объекты-владельцы, затем подчиненные элементы, и только потом — сами документы.
  3. Периодические реквизиты: Такие реквизиты справочников, как цены, курсы валют или учетные ставки, хранят историю значений. Простая перезапись элемента может зафиксировать значение только на текущую дату, поэтому переносить периодические данные необходимо с сохранением дат установки.
  4. Проведение документов и актуальность итогов: Созданный и записанный в базу документ не формирует проводок и записей в регистрах. Загруженные документы необходимо последовательно перепроводить, соблюдая хронологию и положение точки актуальности (ТА).

Способ 1. Использование специализированных внешних обработок выгрузки/загрузки

Рассмотрим применение готовых универсальных обработок для выгрузки и загрузки документов (таких как ExImDocs, Перенос документов.ert и аналогичных решений).

Разберем стандартный алгоритм работы с такими инструментами:

  1. Открываем обработку в базе-источнике через меню «Файл» — «Открыть».
  2. Указываем период выборки документов и отмечаем необходимые виды документов для переноса.
  3. В настройках выгрузки активируем опцию выгрузки связанных объектов НСИ (контрагенты, номенклатура, договоры, склады, банковские счета), чтобы избежать появления пустых ссылок («Объект не найден»).
  4. Формируем файл выгрузки (обычно в формате текстового файла определенной структуры или специализированного формата обмена).
  5. Открываем обработку в базе-приемнике, выбираем сформированный файл и выполняем загрузку.
  6. Проверяем сопоставление справочников и при необходимости запускаем регламентное перепроведение загруженных документов.

Способ 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С:Конвертация данных» (КД). Для идентичных конфигураций правила создаются автоматически:

  1. С помощью внешней обработки выгружаем структуру метаданных обеих конфигураций в XML-файл.
  2. Загружаем описание метаданных в конфигурацию «Конвертация данных».
  3. Создаем правила обмена и используем автоматическую генерацию правил конвертации объектов «один в один».
  4. Выгружаем готовый файл правил обмена.
  5. Используем стандартную обработку выгрузки данных по правилам для 1С 7.7 в базе-источнике, а затем загружаем полученный XML-файл в базу-приемник.

Способ 4. Создание копии через распределенную базу (УРБД)

Если требуется сформировать новую базу на основе существующей с сохранением только части документов или определенной организации, проанализируем возможность использования механизма распределенных информационных баз (УРБД):

  1. В исходной базе настраиваем узел распределенной информационной базы с фильтрацией данных по нужным критериям.
  2. Формируем образ периферийной базы и инициализируем новую информационную базу.
  3. Снимаем признак распределенности в созданной базе (отвязываем базу от центрального узла).
  4. Получаем готовую автономную базу с корректно перенесенными справочниками и историей документов.

Регламентные действия после завершения переноса

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

  1. Групповое перепроведение: Запустим групповое перепроведение перенесенных документов в хронологическом порядке, чтобы корректно сформировались проводки, регистры остатков и партионный учет.
  2. Пересчет итогов: Откроем базу в монопольном режиме и выполним пересчет бухгалтерских и оперативных итогов через меню «Администрирование» — «Пересчет итогов».
  3. Сверка контрольных отчетов: Сформируем оборотно-сальдовую ведомость и ведомости по остаткам в обеих базах за перенесенный период, чтобы убедиться в абсолютной сходимости данных.
← На главную