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

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

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


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


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


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

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

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

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

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


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

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


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

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


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


Поэтому я писал "Значение=ИсходящиеДанные;", а потОм оказалось, что вообще ничего не надо писать.
7. sanjabor 17 04.08.20 11:52 Сейчас в теме +0.09 $m
(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 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день