Имя: Пароль:
1C
 
Конвертация данных 7.7 - 8
,
0 Wefast
 
19.06.18
09:52
В 7 есть Номенклатура. У нее есть подчиненный справочник Штрихкоды.
В Штрихкдах есть реквизит Размер

В 8 у номенклатуры есть Характеристики и Штрихкоды.
Характеристика это Размер из 7
А ШК это Номенклатура + Характеристика

Как мне организовать выгрузку всех сопутствующих данных из 7?

Т.е. надо чтобы сначала Выгрузилась Номенклатура
Потом характеристика
А потом штрихкод.

Как понимаю это нужно делать в ПВД в событие После выгрузки(но вот тут не очень понимаю в ПВД ли это вообще делается)

Сформировать 2 набора данных.
И написать ВыгрузитьПоправилу() в той последовательности что нужна мне. Но и тут не уверен работает ли это так и будет ли при загрузке штрихкода существовать номенклатура с характеристикой

Есть вариант сделать 3 ПВД, для номенклатуры, характеристики и штрихкода. И перебирая галочки при выгрузки последовательно загружать. Но не уверен что не будет косяков при таком подходе. Ну и долго это
1 MaxS
 
19.06.18
10:01
Если это разовая процедура, то можно воспользоваться готовым инструментом - загрузить в 8-ку из Excel.
Первое что нашлось: "Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки" ;)

Тогда основная задача сведётся к созданию плоского отчета в 7-ке, где будут все данные. Если данных много, сохраняем в mxl и отдаём обработке в 8-ку.
2 azt-yur
 
19.06.18
10:08
3 правила самый простой и быстрый вариант. Выгружать можешь только Штрихкоды, номенклатура и характеристика перенесутся по ссылкам
3 Wefast
 
19.06.18
13:37
Так. В ПВД Номенклатура в событие ПослеВыгрузки написал:

    ШК = СоздатьОбъект("Справочник.ШтрихКод");
    ШК.ИспользоватьВладельца(Объект);
    
    ШК.ВыбратьЭлементы();
    
    Пока ШК.ПолучитьЭлемент()=1 Цикл
        ВходящиеДанные1 = СоздатьОбъект("СписокЗначений");
        ВходящиеДанные1.Установить("Характеристика", ШК.ТекущийЭлемент().Размер);
        ВходящиеДанные1.Установить("Владелец", Объект.ТекущийЭлемент());
        ВходящиеДанные1.Установить("Штрихкод", ШК.ТекущийЭлемент().Наименование);
        
        ВыгрузитьПоПравилу(,, ВходящиеДанные1, , "Штрихкоды",);
    КонецЦикла;

В ПКО Штрихкоды событии ПередВыгрузкой написал:
ИсходящиеДанные = ВходящиеДанные; (1)

В ПКС Характеристика события ПослеВыгрузки написал: В этом ПКС указано правило где создается характеристика

Для Инд = 1 По ИсходящиеДанные.РазмерСписка() Цикл
    Сообщить("ИсходящиеДанные[" + Инд + "] = " + ИсходящиеДанные.ПолучитьЗначение(Инд));
КонецЦикла;

// Если не перебираю, то почему то по индексу ничего получить не могу.  (2)

qwe = ИсходящиеДанные.ПолучитьЗначение(1);
asd = ИсходящиеДанные.ПолучитьЗначение(2);

Сообщить(qwe);
Сообщить(asd);

ВходящиеДанные = СОздатьОбъект("СписокЗначений");
ВходящиеДанные.Установить("Владелец",asd);
ВходящиеДанные.Установить("Наименование",Строка(qwe));


В ПКО ХарактерестикаНом в событии ПередВыгрузкой пишу:
Для Инд = 1 По ВходящиеДанные.РазмерСписка() Цикл
    Сообщить("ВходящиеДанные[" + Инд + "] = " + ВходящиеДанные.ПолучитьЗначение(Инд));
КонецЦикла;

// Он выдает мне оба переданных значения

Но Если я пишу Сообщить(ВходящиеДанные.Наименование) то он выдает ошибку (3)


Можете поправить меня?
в (1) я не понимаю зачем такое вообще писать. Но если не писать, то ни во входящих, ни в исходящих ничего нет. В описание события написано:

ИсходящиеДанные - Произвольный - произвольные вспомогательные данные. Данные передаются по следующим правилам:

1.      ПВД.ИсходящиеДанные -> ПКО.ВходящиеДанные

2.      ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные

3.      ПКС.ИсходящиеДанные -> ПКО.ВходящиеДанные


И я не понимаю как это работает и что это значит.

В ПКО у меня есть ВходящиеДанные которые я получить из ПВД другого правила.
Почему мне пришлось писать эту тарабарщину если ИсходящиеДанные по написанному выше и делать не надо.
Да и не уверен что так можно скопировать Список значений, там же копировать надо вроде, метод есть.
Абсолютно не понимаю эту проклятую схему со стрелками.

в (2) вообще не понимаю какого черта происходит. Никак иначе примудрости семерки где нужно написать ТекущийЭлемент() чтобы получить что то, и тут что то вроде.

в (3) видимо Наименование нельзя использовать в списке значений и он наверное меняет на какое то другое слово. Но что тогда делать?
4 hhhh
 
19.06.18
13:42
(3) ну у вас самый простейший случай из всех возможных. Конечно Исходящие и вхождящие данные вряд ли понадобятся.
Может просто проостановкой галочек в конвертации ограничитесь.
5 Wefast
 
19.06.18
13:50
(4) я не понял о чем вы.

Как это без входящих\исходящих данных все это я могу сделать?

Я выгружаю номенклатуру.

В ПВД получаю все штрихкоды с размерами(размер это характеристика в 8).

В цикле вызываю правило ШТрихкоды передавая туда Владельца - Номенклатуру
Штрихкод и Размер

В правиле Штрихкодов мне нужно создать Характеристику. Для этого не достаточно передать в нее только Имя этой характеристики же.
Поэтому я создаю Список значенийй с владельцем(Номенклатура) и Размером(Характеристикой в 8)

В правиле Характеристики Владелец заполняется. А Имя - нет
6 Wefast
 
19.06.18
13:53
Или то что я создал в ПКС Характеристика ВходящиеДанные не работает. и владелец как то сам определился? Но как? Перехожу же я из правила Штрихкоды, т.е. откуда взяться владельцу с типом Номенклатура

Но видимо так и есть, потому что в ПКС Наименование ПКО Характеристика я пишу Значение = Строка(Источник) и все ок
7 hhhh
 
19.06.18
13:56
(5) зачем такая фигня? в цикле.

просто пишешь три пко:

штрихкод -> штрихкод
штрихкод -> характеристика
номенклатура -> номенклатура

пвд исходя из этого полностью автоматические, там вообще только ентер нажимаешь создать и всё

трудность наверно с ПКС - привязать реквизиты
8 Wefast
 
19.06.18
13:59
(7) Ну так не у всей же номенклатуры есть штрихкоды.

Я выгружаю номенклатуру и сопутсвующую информацию
9 hhhh
 
19.06.18
14:04
(8) ну, правильно. И выгружай. Только не надо задумываться - это вредно. Там всё на автомате. Уже всё продумано до нас.
10 Wefast
 
19.06.18
14:07
(9) Что значит не задумываться?

Вот есть Номенклатура. Я ее выгружаю. Что мне нужно сделать чтобы выгрузить из 7 характеристику которая состоит из шк и размера в 8 так что бы размер стал характеристикой а ШК стал ШК с указанием характеристики?

Можно было бы выгрузить отдельно Номенклатуру.

ПОтом выгрузить Характеристики

А потом уже выгрузить ШК

Но хочется сделать нормально и разобраться уже немножко
11 hhhh
 
19.06.18
14:14
(10) ну вот этот вопрос "не уверен работает ли это так и будет ли при загрузке штрихкода существовать номенклатура" эти вопросы решены уже 15 лет назад. Будет там существовать номенклатура.
12 hhhh
 
19.06.18
14:17
(10) ну то есть ваша основная задача, чтобы в списке правил четко сверху вниз располагались правила: Номенклатура, Характеристика, ШтрихКод. Это надо просто усилие воли. Тут задумываться не надо.
13 Wefast
 
19.06.18
14:28
(12) ну если это работает - круто. Буду знать.

Но я уже все сделал, я только не понимаю пару моментов по возможностям КД и особенностям работы в 7.7

1. Это подмена входящихданных правилу. Не понятно как это работает.

Будет работать:

В пвд я создаю ИсходящиеДанные и они доступны в ПКО как входящие.
В пко создаю ИсходящиеДанные и они доступны в ПКС как входящие.
В ПКС создаю исходящиеДанные и они доступны в ПКО как входящие.

так? Потому что то что написано в описание не очевидно для меня.

2. Почему мне пришлось узнать сначала размер списка значений чтобы потом можно было обратится по индексу к элементам?

3. Почему я не смог обратится СписокЗначение.наименование и как это обходить?

4. Ну и почему в ПКО Характеристика вызванного из ПКС ПКО Штрихкод Источником являлась номенклатура.
14 Wefast
 
22.06.18
11:49
> 3. Почему я не смог обратится СписокЗначение.наименование и как это обходить?

Правила видимо сами все делают, а самому обращаться надо СписокЗначений.Получить("Наименование")

Но я так и не понял как работают Исходящие данные.

Так как пишу в пкс например ИсходящиеДанные. Заполня их

А в пко это уже какой нибудь Источник а не входящие данные.
Независимо от того, куда вы едете — это в гору и против ветра!