Сопоставление реквизитов ТЧ по условию

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. temsan89 12.05.16 08:43 Сейчас в теме
Добрый день. Подскажите, пожалуйста:

Задача: Есть ТЧ источника, в нём есть реквизит ДопПредставлениеНоменклатуры(тип строка), необходимо условие - если этот реквизит заполнен, искать в приемнике номенклатуру по реквизиту ДопПредставелниеНоменклатуры, если не заполнен - брать стандартный реквизит номенклатура из источника. Как можно реализовать данный функционал? Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. temsan89 12.05.16 10:26 Сейчас в теме
Создал ПКС - пустой источник, приемник - номенклатура.

Если ЗначениеЗаполнено(ОбъектКоллекции.ДопПредставелниеНоменклатуры) Тогда

Значение = ОбъектКоллекции.ДопПредставелниеНоменклатуры;
Иначе

Значение = ОбъектКоллекции.Номенклатура;

КонецЕсли;

Сообщить(Значение);

В сообщалке вижу что выгружается корректно, в приемнике всё равно пустое значение :/
3. Rinnous 1 12.05.16 11:33 Сейчас в теме
как вариант: в ПКО цикл по таблице
4. v3rter 12.05.16 12:11 Сейчас в теме
А так?
Значение = Строка(ОбъектКоллекции.Номенклатура);
или
Значение = ОбъектКоллекции.Номенклатура.Наименование;
5. temsan89 12.05.16 12:19 Сейчас в теме
Смотрю XMLину, выгружает мое представление номенклатуры

-<Свойство Имя="Номенклатура">

<Значение>Бензин 95</Значение>

</Свойство>

Но приемник не заполняет....

На получение в приемнике может влияет не заполненное поле в ПКС - "Правило". Если его заполняю правилом Номенклатура, на выходе получаю ошибку:

ТипОбъекта = Документ объект: Реализация товаров и услуг
Объект = Реализация товаров и услуг СПб00000324 от 23.01.2016 16:58:41
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 5 (Наименование --> Наименование)
Объект = Бензин 95 (Строка)
СвойствоПриемника = Наименование (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.ОбменДаннымиXML(8059)
КодСообщения = 13
ПозицияМодуля = Обработка.ОбменДаннымиXML(1635)
КодСообщения = 72
УзелПланаОбмена = Бухгалтерия предприятия
6. Rinnous 1 12.05.16 12:24 Сейчас в теме
а приемник точно номенклатура?
7. temsan89 12.05.16 12:28 Сейчас в теме
8. Rinnous 1 12.05.16 12:28 Сейчас в теме
тогда тут не соответствие типов
9. Rinnous 1 12.05.16 12:29 Сейчас в теме
в приемнике по всей видимости справочник, а источник строка
10. temsan89 12.05.16 12:46 Сейчас в теме
Дада Именно в Источнике Строка, а в применике - справочник.номенклатура, подскажите, как сопоставить правильно?
11. temsan89 12.05.16 12:46 Сейчас в теме
По сути мне нужно найти по наименованию номенклатуру при загрузке в приемник.
12. Rinnous 1 12.05.16 13:12 Сейчас в теме
тогда можно таким алгоритмом:
1) добавляем параметр (тип – таблица значений);
2) заполняем данными табличной части (до выгрузки) в ПКО;
3) после загрузки выполняем слияние табличной части объекта (приемника) и параметра.
13. temsan89 12.05.16 18:23 Сейчас в теме
Разобрался... книга по КД Бояркин/Филатов, страница 135.

Решение:

Для табличной части, ПКС Номенклатура :

Источник: Пусто
Приемник: Номенклатура

Правило: обазтельно создаем новый ПКО (Источник - пусто, Приемник - Номенклатура). Для него создаем единсвтенное ПКС - Источник: Пусто, Приемник: Наименвание.
Добавляем в событие "Перед загрузкой" Значение = источник

---- Теперь доработаем ПКС табличной части. После того как заполнили источник, приемник, правило, добавляем:
Событие "Перед загрузкой":

Если ЗначениеЗаполнено(ОбъектКоллекции.ДопПредставлениеНоменклатуры) Тогда	
	Значение = СокрЛП(ОбъектКоллекции.ДопПредставлениеНоменклатуры);
Иначе
	Значение = СокрЛП(ОбъектКоллекции.Номенклатура);	
КонецЕсли;



Большое спасибо v3rter, Rinnous за подсказки.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот