Вход | Регистрация
 

Конвертация данных 7.7 - 8

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

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

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

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

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

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

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

Тогда основная задача сведётся к созданию плоского отчета в 7-ке, где будут все данные. Если данных много, сохраняем в mxl и отдаём обработке в 8-ку.
   azt-yur
 
2 - 19.06.18 - 10:08
3 правила самый простой и быстрый вариант. Выгружать можешь только Штрихкоды, номенклатура и характеристика перенесутся по ссылкам
   Wefast
 
3 - 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) видимо Наименование нельзя использовать в списке значений и он наверное меняет на какое то другое слово. Но что тогда делать?
   hhhh
 
4 - 19.06.18 - 13:42
(3) ну у вас самый простейший случай из всех возможных. Конечно Исходящие и вхождящие данные вряд ли понадобятся.
Может просто проостановкой галочек в конвертации ограничитесь.
   Wefast
 
5 - 19.06.18 - 13:50
(4) я не понял о чем вы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А в пко это уже какой нибудь Источник а не входящие данные.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.