Как правильно настроить перенос данных между КА 2.4 и КА 1.1 в «Конвертации данных 2.1»?

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

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

Настройка конвертации валюты документа

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

Важно: Проверьте, что в ПКО валюты настроен корректный поиск. Если наименования валют в базах различаются, система не найдет соответствие автоматически. Убедитесь, что поиск настроен по коду или что создано правило поиска по наименованию, которое однозначно идентифицирует объект.

Работа с подчиненными справочниками: Единицы измерения

Одной из частых ошибок является попытка поиска подчиненного справочника (например, ЕдиницыИзмерения) без указания его владельца. Поскольку единица измерения напрямую связана с конкретной номенклатурой, простого поиска по наименованию недостаточно.

Если вы решили использовать программный код в ПКС или событии ПослеЗагрузки, необходимо всегда передавать владельца. Рассмотрим правильный пример кода для поиска:


// Правильный поиск единицы измерения с учетом владельца
Значение = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт", Ложь, , ЭтаСтрока.Номенклатура);

Однако, наилучшей практикой в Конвертации данных 2.1 является использование полноценных правил конвертации. Вместо написания кода в ПКС:

  1. Создайте ПКО для справочника ЕдиницыИзмерения.
  2. В ПКС табличной части документа в настройках свойства укажите созданное ПКО.
  3. Система самостоятельно выполнит поиск и привязку, используя встроенные механизмы обмена, что значительно надежнее ручного поиска.

Почему данные сбрасываются после загрузки?

Часто встречается ситуация, когда вы явно задаете значение (например, СпособСписанияОстаткаТоваров), но после записи документа оно меняется на другое. Причиной этого является логика самой конфигурации КА 1.1. При записи документа или изменении его строк срабатывают типовые процедуры (например, ПриЗаписи или ОбработкаЗаполнения), которые принудительно пересчитывают реквизиты, опираясь на параметры номенклатуры или договора.

Чтобы понять, что именно происходит, разберем способы отладки:


// Проверка работы обработчика После загрузки
Для Каждого ЭтаСтрока из Объект.Товары Цикл
    // Временно вызываем исключение, чтобы проверить срабатывание события
    ВызватьИсключение "Событие После загрузки успешно сработало!";
КонецЦикла;

Рекомендации по стабильному обмену

Для обеспечения стабильной работы переноса данных следуйте этим правилам:

  1. Минимизируйте ручной поиск: Старайтесь избегать НайтиПоНаименованию и НайтиПоКоду в коде конвертации. Чем больше логики вы перенесете на уровень настроек ПКО и ПКС в Конвертации данных, тем меньше ошибок будет возникать при обновлении или изменении структуры данных.
  2. Соблюдайте порядок загрузки: Убедитесь, что справочники (владельцы) загружаются раньше, чем подчиненные им элементы.
  3. Учитывайте алгоритмы приемника: Если конфигурация КА 1.1 требует специфического заполнения (например, чтобы способ списания стал равен 'Из резерва', должны быть корректно заполнены данные о резервировании), убедитесь, что все необходимые реквизиты документа заполняются до того, как сработает механизм Записать().

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

← На главную