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