Перенос данных между конфигурациями с разной структурой, такими как Комплексная автоматизация 2.4 и Комплексная автоматизация 1.1, часто сопровождается рядом технических трудностей. Разберем основные проблемы, с которыми сталкиваются разработчики при настройке правил конвертации, и научимся их эффективно решать.
Если при переносе документов поле ВалютаДокумента не заполняется, в первую очередь необходимо убедиться, что для самого справочника Валюты создано отдельное Правило конвертации объектов (ПКО). Механизм конвертации не может просто сопоставить ссылки, если объекты в базе-источнике и базе-приемнике не синхронизированы.
Важно: Проверьте, что в ПКО валюты настроен корректный поиск. Если наименования валют в базах различаются, система не найдет соответствие автоматически. Убедитесь, что поиск настроен по коду или что создано правило поиска по наименованию, которое однозначно идентифицирует объект.
Одной из частых ошибок является попытка поиска подчиненного справочника (например, ЕдиницыИзмерения) без указания его владельца. Поскольку единица измерения напрямую связана с конкретной номенклатурой, простого поиска по наименованию недостаточно.
Если вы решили использовать программный код в ПКС или событии ПослеЗагрузки, необходимо всегда передавать владельца. Рассмотрим правильный пример кода для поиска:
// Правильный поиск единицы измерения с учетом владельца
Значение = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт", Ложь, , ЭтаСтрока.Номенклатура);
Однако, наилучшей практикой в Конвертации данных 2.1 является использование полноценных правил конвертации. Вместо написания кода в ПКС:
ПКО для справочника ЕдиницыИзмерения.ПКС табличной части документа в настройках свойства укажите созданное ПКО.Часто встречается ситуация, когда вы явно задаете значение (например, СпособСписанияОстаткаТоваров), но после записи документа оно меняется на другое. Причиной этого является логика самой конфигурации КА 1.1. При записи документа или изменении его строк срабатывают типовые процедуры (например, ПриЗаписи или ОбработкаЗаполнения), которые принудительно пересчитывают реквизиты, опираясь на параметры номенклатуры или договора.
Чтобы понять, что именно происходит, разберем способы отладки:
ПослеЗагрузки и проследите, какие значения установлены на этапе завершения обмена.
// Проверка работы обработчика После загрузки
Для Каждого ЭтаСтрока из Объект.Товары Цикл
// Временно вызываем исключение, чтобы проверить срабатывание события
ВызватьИсключение "Событие После загрузки успешно сработало!";
КонецЦикла;
Для обеспечения стабильной работы переноса данных следуйте этим правилам:
НайтиПоНаименованию и НайтиПоКоду в коде конвертации. Чем больше логики вы перенесете на уровень настроек ПКО и ПКС в Конвертации данных, тем меньше ошибок будет возникать при обновлении или изменении структуры данных.КА 1.1 требует специфического заполнения (например, чтобы способ списания стал равен 'Из резерва', должны быть корректно заполнены данные о резервировании), убедитесь, что все необходимые реквизиты документа заполняются до того, как сработает механизм Записать().Проанализировав ситуацию, можно сделать вывод, что успех переноса зависит не только от написанного кода, но и от понимания архитектуры метаданных обеих конфигураций. Постоянное использование отладки и предпочтение типовым механизмам конвертации — залог того, что ваши данные будут перенесены корректно.