Имя: Пароль:
1C
1С v8
Конвертация данных. 7.7 -> 8. Как использовать исходящие данные?
0 distorter
 
27.01.16
11:39
Источник - ТиС 9.2 (7.7). Переношу документ. Номенклатура из него переносится по ссылке. У этой номенклатуры есть подчиненный справочник ЕдиницыИзмерения. В котором хранится штрихкод. Штрихкод можно получить, обратившись к реквизиту Номенклатура.БазоваяЕдиница.Штрихкод.

Приемник - Розница 2.1. Требуется добавить штрихкод только для вновь созданной номенклатуры в регистр сведений Штрихкоды.

Для номенклатуры добавляю ПКС Комментарий -> Описание.

В модуле обработчика перед выгрузкой пишу:

Если Источник.ЭтоГруппа() = 1 Тогда
Отказ = 1;
КонецЕсли;

Значение = 1;
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.ДобавитьЗначение(Источник,"Владелец");
ИсходящиеДанные.ДобавитьЗначение(Источник.БазоваяЕдиница.Штрихкод,"Штрихкод");


Но не работает. В 7.7 вообще можно использовать исходящие данные?
1 distorter
 
27.01.16
20:21
Может как-то по-другому, без входящих данных можно вызвать ПКО для штрихкодов?
2 KoZuB
 
27.01.16
20:45
(1) Ты ЕдиницыИзмерения переносишь? ПКО для них есть?
3 KoZuB
 
27.01.16
20:52
(1) Сори, невнимателен. Зачем ИсходящиеДанные? Просто используй ВыгрузитьПоПравилу(Источник,,,,"Штрихкоды"). Отчего нет?
4 Franchiser
 
гуру
27.01.16
22:32
У тебя цикличность ссылок будет, т.к. ед. измерения имею ссылку на владельца, и в то же самое время в номенклатуре ссылка на единицы измерения. В этом случае нужно добиться того чтобы единицы выгрузились раньше чем номенклатура, иначе в номенклатуре не поставится ед. измерения. Это делается несколькими способами: 1. если выгружать по гуид то ед. измерения не используй поиск по владельцу, 2. Напиши код в ед. измерениях чтобы сначала произошла выгрузка владельца (могу поискать у себя). Если вообще без вариантов, то попробуй поставить галочку "не запоминать выгруженные" у номенклатуры.
5 Franchiser
 
гуру
27.01.16
22:45
В ед. измерениях пишешь перед выгрузкой:
Если Правила.Номенклатура.Выгруженные[Источник.Владелец] = Неопределено Тогда
    ВыгрузитьПоПравилу(Источник.Владелец);
концессии

Тут же через исходящие данные или через параметры можешь передать сведения о штрихкоде.
6 Franchiser
 
гуру
27.01.16
22:53
попробуй передать так:
1. ИсходящиеДанные ->ПКО Номенклатура
2. ИсходящиеДанные из ПКО Номенклатуры в ПКО Ед. Измерения
3. ИсходящиеДанные из  ПКО Ед. Измерения в ПКО Номенклатуру.
7 distorter
 
28.01.16
01:35
(3) Спасибо! То, что нужно.
(5) Спасибо за развернутые рекомендации. Я не переношу ЕдиницыИзмерения (которые в ТиС подчинены Номенклатуре) в новую базу. Мне от них нужен только ШК и сопоставление с общим справочником Единиц, который в Рознице. ВСе потому, что в Рознице у Номенклатуры Единица одна-единственная и она выбирается из общего классификатора, а не из подчиненного справочника.

То есть У Номенклатуры реквизит Единица измерения заполняется так:
Значение = Источник.БазоваяЕдиница.ОКЕИ;

С использованием ПКО СправочникСсылка.ОКЕИ -> СправочникСсылка.БазовыеЕдиницыИзмерения

А со штрихкодами все получилось так:
в ПКО Номенклатура в обработчике перед выгрузкой я написал:

ВыгрузитьПоПравилу(Источник.БазоваяЕдиница,
,
,
,
"Штрихкоды",
,
,
);
8 KoZuB
 
28.01.16
02:10
(7) Если нужно переносить только новые можно "не замещать существующие..." в ПКО отметить.