Как настроить синхронизацию данных между базами 1С:ERP разных версий

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет IT и автоматизация бизнеса
← На главную

Синхронизация данных между различными редакциями 1С:ERP (например, переход с 2.2 на 2.4 или постоянный обмен между ними) — задача повышенной сложности. Это связано с тем, что в версии 2.4 была кардинально переработана архитектура многих подсистем: от производства и учета затрат до принципов работы с заказами. Рассмотрим основные способы реализации такого обмена, разберем типичные ошибки при использовании Конвертации данных и определим наиболее стабильную стратегию автоматизации.

Анализ проблемы: Различия в версиях и реквизитах

При обмене между 1С:ERP 2.2 и 1С:ERP 2.4 мы сталкиваемся с тем, что стандартный механизм РИБ (распределенных информационных баз) не применим, так как конфигурации не идентичны. Основная трудность заключается в сопоставлении объектов. Многие реквизиты в версии 2.4 изменили свой тип, были переименованы или перенесены в отдельные регистры сведений. Использование простого реквизита Дата_изменения для фильтрации данных при обмене кажется логичным, но на практике имеет множество скрытых угроз.

Почему фильтрация по дате изменения — это плохой подход

Разберем, почему не стоит полагаться исключительно на программный реквизит Дата_изменения в коде или запросе:

  1. Пропуск объектов: Если документ был изменен задним числом или программно с отключенным флагом ОбменДанными.Загрузка = Истина, реквизит может не обновиться, и данные не попадут в базу-приемник.
  2. Производительность: Поиск по полю даты, которое обычно не индексировано, в базе ERP с миллионами записей приведет к существенному замедлению работы системы.
  3. Отсутствие контроля очереди: В случае сбоя сети или ошибки выгрузки вам придется вручную высчитывать период, за который данные не дошли.

Решение 1: Использование Планов обмена (Рекомендуемый метод)

Вместо написания сложных запросов по датам, проанализируем стандартный механизм платформы — Планы обмена. Это наиболее надежный способ регистрации изменений.

Рассмотрим алгоритм настройки:

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

Преимущество этого метода в том, что нам не нужно знать, когда изменился объект. Нам достаточно знать, что он изменился. После успешной выгрузки мы просто очищаем регистрацию для переданных объектов.

Решение 2: Работа с Конвертацией данных 2.1 и «Произвольным запросом»

Если вы решили использовать Конвертацию данных 2.1 и столкнулись с тем, что при использовании произвольного запроса выгружается 0 объектов (или, наоборот, выгружается всё подряд), разберем технические нюансы настройки Правил выгрузки данных (ПВД).

Часто программисты допускают ошибку, оставляя «Способ выборки: Стандартная выборка», при этом прописывая текст запроса. В этом случае 1С игнорирует запрос и выгружает все объекты метаданных. Чтобы ваш фильтр заработал, необходимо выбрать «Произвольный запрос» и правильно обработать его результат.

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    |   Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |   Номенклатура.Дата_изменения >= &НачалоПериода";

Запрос.УстановитьПараметр("НачалоПериода", Параметры.ДатаНачала);

// Важно: результат запроса нужно передать в переменную ВыборкаДанных
ВыборкаДанных = Запрос.Выполнить().Выгрузить();

Важный момент: Если вы используете «Произвольный запрос», структура колонок в результате запроса должна соответствовать реквизитам, используемым в правилах конвертации (ПКО), иначе сопоставление не произойдет.

Решение 3: Универсальный формат Enterprise Data (ED)

Для современных версий ERP компания 1С рекомендует использовать технологию Enterprise Data (Конвертация данных 3.0). Это более гибкий подход, который позволяет не зависеть от структуры таблиц конкретной версии.

Проанализируем преимущества ED:

Отладка и поиск ошибок

Если данные все равно не переносятся или переносятся некорректно, выполним следующие шаги:

  1. Консоль запросов: Вынесите запрос из правил конвертации в обычную консоль запросов в базе-источнике. Убедитесь, что он возвращает именно те ссылки, которые вы ожидаете увидеть.
  2. Метод Сообщить: Вставьте в обработчики правил (например, Перед выгрузкой объекта) вывод информации в окно сообщений:

    Сообщить("Выгружаем объект: " + Объект.Наименование);

    Это поможет понять, на каком этапе «теряется» объект.
  3. Проверка ПКО: Убедитесь, что для каждого выгружаемого типа объекта создано Правило конвертации объектов (ПКО) и правильно настроены поля поиска (например, по ГУИД или по Уникальному идентификатору).

Итоги и рекомендации

Для реализации надежной синхронизации между 1С:ERP 2.2 и 2.4 рекомендуем отказаться от самописных реквизитов даты изменения в пользу Планов обмена. Если задача разовая или требуется специфическая логика, используйте Конвертацию данных 2.1 с обязательной передачей результата запроса в структуру ВыборкаДанных.

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

← На главную