Синхронизация данных между различными редакциями 1С:ERP (например, переход с 2.2 на 2.4 или постоянный обмен между ними) — задача повышенной сложности. Это связано с тем, что в версии 2.4 была кардинально переработана архитектура многих подсистем: от производства и учета затрат до принципов работы с заказами. Рассмотрим основные способы реализации такого обмена, разберем типичные ошибки при использовании Конвертации данных и определим наиболее стабильную стратегию автоматизации.
При обмене между 1С:ERP 2.2 и 1С:ERP 2.4 мы сталкиваемся с тем, что стандартный механизм РИБ (распределенных информационных баз) не применим, так как конфигурации не идентичны. Основная трудность заключается в сопоставлении объектов. Многие реквизиты в версии 2.4 изменили свой тип, были переименованы или перенесены в отдельные регистры сведений. Использование простого реквизита Дата_изменения для фильтрации данных при обмене кажется логичным, но на практике имеет множество скрытых угроз.
Разберем, почему не стоит полагаться исключительно на программный реквизит Дата_изменения в коде или запросе:
ОбменДанными.Загрузка = Истина, реквизит может не обновиться, и данные не попадут в базу-приемник.Вместо написания сложных запросов по датам, проанализируем стандартный механизм платформы — Планы обмена. Это наиболее надежный способ регистрации изменений.
Рассмотрим алгоритм настройки:
Преимущество этого метода в том, что нам не нужно знать, когда изменился объект. Нам достаточно знать, что он изменился. После успешной выгрузки мы просто очищаем регистрацию для переданных объектов.
Если вы решили использовать Конвертацию данных 2.1 и столкнулись с тем, что при использовании произвольного запроса выгружается 0 объектов (или, наоборот, выгружается всё подряд), разберем технические нюансы настройки Правил выгрузки данных (ПВД).
Часто программисты допускают ошибку, оставляя «Способ выборки: Стандартная выборка», при этом прописывая текст запроса. В этом случае 1С игнорирует запрос и выгружает все объекты метаданных. Чтобы ваш фильтр заработал, необходимо выбрать «Произвольный запрос» и правильно обработать его результат.
Посмотрим на пример правильной настройки в обработчике Перед выгрузкой данных для ПВД:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Дата_изменения >= &НачалоПериода";
Запрос.УстановитьПараметр("НачалоПериода", Параметры.ДатаНачала);
// Важно: результат запроса нужно передать в переменную ВыборкаДанных
ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Важный момент: Если вы используете «Произвольный запрос», структура колонок в результате запроса должна соответствовать реквизитам, используемым в правилах конвертации (ПКО), иначе сопоставление не произойдет.
Для современных версий ERP компания 1С рекомендует использовать технологию Enterprise Data (Конвертация данных 3.0). Это более гибкий подход, который позволяет не зависеть от структуры таблиц конкретной версии.
Проанализируем преимущества ED:
Если данные все равно не переносятся или переносятся некорректно, выполним следующие шаги:
Перед выгрузкой объекта) вывод информации в окно сообщений:
Сообщить("Выгружаем объект: " + Объект.Наименование);
Для реализации надежной синхронизации между 1С:ERP 2.2 и 2.4 рекомендуем отказаться от самописных реквизитов даты изменения в пользу Планов обмена. Если задача разовая или требуется специфическая логика, используйте Конвертацию данных 2.1 с обязательной передачей результата запроса в структуру ВыборкаДанных.
Для долгосрочных проектов и стабильной работы по расписанию лучшим выбором будет настройка синхронизации через Универсальный формат данных (Enterprise Data), что значительно упростит поддержку обмена при последующих обновлениях конфигураций.