КД 2.1 пустое имя при перекачке реквизита справочника в регистр сведений

1. DWZ2 01.08.20 02:00 Сейчас в теме
В базе-источнике есть справочник "Номенклатура" с реквизитом "ШтрихКод" типа "Строка". В базе-приёмнике в справочнике "Номенклатура" реквизита "ШтрихКод" нет, зато есть независимый регистр сведений "НоменклатураПоШтрихКодам" с измерением "ШтрихКод" и ресурсом "Номенклатура" (см. вложение).

Делаю перекачку штрих-кода. Выгружает нормально, но при загрузке ругается:
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6989)}: Поле объекта не обнаружено


Посмотрел в отладчике - пустое имя, заглянул в XML-файл выгрузки (Данные.xml) - действительно, кое-где имя пустое
Свойство Имя=""


В ПКО "НоменклатураПоШтрихКодам" действительно нет приёмника, но там берётся из входящих данных. Пробовал в ПКО "НоменклатураПоШтрихКодам" ставить правило конвертации "Номенклатура" (где формируется структура "ИсходящиеДанные") - для ПКС "Номенклатура" не помогает, для ПКС "ШтрихКод" начинает ругаться ужЕ при выгрузке
Ошибка получения значения свойства объекта (по имени свойства источника)
	ПКО                    =  Номенклатура  (Справочник: Номенклатура)
	ПКС                    =  1  (Код --> Код)
	Объект                 =  К 2,5%  (Строка)
	СвойствоПриемника      =  Код  (Строка)
	ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
	ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8286)
	КодСообщения           =  13
Показать


Что делать? Как всё-таки выгрузить этот несчастный штрих-код?
Прикрепленные файлы:
Инфостарт.zip
Вознаграждение за ответ
Показать полностью
Найденные решения
2. sanjabor 16 02.08.20 11:34 Сейчас в теме +0.1 $m
Нужно использовать ВыгрузитьПоПравилу в событии ПослеВыгрузки ПКО Номенклатура. Сейчас у Вас обработка пытается найти реквизит приемника, соответствующий реквизиту ШтрихКод источника.

Еще нужно в ПКС -> ВидНоменклатуры задать какое-нибудь значение, просто ИсходящиеДанные не выгружаются. Я обычно пишу Значение = 1;
Прикрепленные файлы:
ПравилаОбменаДанными.xml
Drivingblind; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. sanjabor 16 02.08.20 11:34 Сейчас в теме +0.1 $m
Нужно использовать ВыгрузитьПоПравилу в событии ПослеВыгрузки ПКО Номенклатура. Сейчас у Вас обработка пытается найти реквизит приемника, соответствующий реквизиту ШтрихКод источника.

Еще нужно в ПКС -> ВидНоменклатуры задать какое-нибудь значение, просто ИсходящиеДанные не выгружаются. Я обычно пишу Значение = 1;
Прикрепленные файлы:
ПравилаОбменаДанными.xml
Drivingblind; +1 Ответить
5. DWZ2 04.08.20 01:43 Сейчас в теме
(2)

Спасибо, всё работает!

Нужно использовать ВыгрузитьПоПравилу


А есть ли для ВыгрузитьПоПравилу() встроенный help?

Еще нужно в ПКС -> ВидНоменклатуры задать какое-нибудь значение, просто ИсходящиеДанные не выгружаются


У меня выгружаются. Более того, так делать НЕ рекомендуют потому, что будут выгружаться значения, даже если в базе-источнике поле пустое. Например, у меня, если прописать Значение, в справочнике "Единицы" создаются ненужные записи для услуг с пустыми ссылками на Классификатор.

Я обычно пишу Значение = 1;


Так будет ругаться
Ошибка получения значения свойства объекта (по имени свойства источника)


Поэтому я писал "Значение=ИсходящиеДанные;", а потОм оказалось, что вообще ничего не надо писать.
7. sanjabor 16 04.08.20 11:52 Сейчас в теме
(5)
А есть ли для ВыгрузитьПоПравилу() встроенный help?


Это экспортный метод из модуля обработки УниверсальныйОбменДаннымиXML, к нему есть описание (см. УОД_Описание.png)

ПКС -> ВидНоменклатуры ... У меня выгружаются


Посмотрите повнимательнее, не должны. В прилагаемом архиве в файле Данные данных по ВидНоменклатуры нет.

Более того, так делать НЕ рекомендуют потому, что будут выгружаться значения, даже если в базе-источнике поле пустое.


Надо проверку заполненности делать.

Я в той конвертации, которую приложил, ошибся, не обратил внимания, что значения может быть 2.

Там проще в ПКС -> ВидыНоменклатуры

Если Источник.Услуга=Истина Тогда
	Значение = "Услуга";
Иначе
	Значение = "Товар";
КонецЕсли;


А в ПКО ВидыНоменклатуры в его ПКС прописать

Значение = Источник;


Ну и галку Искать по внутреннему идентификатору убрать.
Прикрепленные файлы:
ПравилаОбменаДанными.xml
3. Andy13 03.08.20 10:38 Сейчас в теме
Ругается на позиции номенклатуры, в которых не указан штрих-код. То есть для регистра сведений это и выглядит как Имя="".
Поставьте в ПКО "НоменклатураПоШтрихКодам" условие с отказом на пустую строку.
Или в ПКС "ШтрихКод" перед выгрузкой.
Или в группе где проверяете с отказом на группу добавьте проверку на пустую строку штрих кода. К примеру Отказ=Источник.ЭтоГруппа или ПустаяСтрока(Источник.ШтрихКод);
4. Andy13 03.08.20 10:45 Сейчас в теме
Лучше всего в ПКС "ШтрихКод" перед выгрузкой, где исходящие данные формируются. Обрати внимание, в файле выгрузки пустая запись по позициям номенклатуры являющимися услугами, у которых нет штрих кодов.
6. DWZ2 04.08.20 02:05 Сейчас в теме
(4) Как ни сделаю - всё ругается. :(
8. Andrekaa 11.08.20 11:20 Сейчас в теме
Оставьте свое сообщение
Вопросы с вознаграждением