|
КД: Добавить запись регистра при переносе. | ☑ | ||
---|---|---|---|---|
0
SMakcik
09.11.12
✎
14:01
|
Всем привет!
Стоит такая задача, при переносе данных с УТ в Розницу если у товара и характеристики не существует штрихкода, то его нужно сформировать виртуально и отправить в приемник. Делаю так: КоллекцияОбъектов = Новый ТаблицаЗначений; КоллекцияОбъектов.Колонки.Добавить("Номенклатура"); КоллекцияОбъектов.Колонки.Добавить("Количество"); КоллекцияОбъектов.Колонки.Добавить("КоличествоУпаковок"); КоллекцияОбъектов.Колонки.Добавить("Характеристика"); МенеджерШтрихкодов = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); Отбор = Новый ТаблицаЗначений; Отбор.Колонки.Добавить("Использование"); Отбор.Колонки.Добавить("Имя"); Отбор.Колонки.Добавить("Значение"); Для Каждого СтрокаТаблицыТоваров ИЗ Источник.Товары Цикл МенеджерШтрихкодов.Отбор.Владелец.Установить(СтрокаТаблицыТоваров.Номенклатура); Если СтрокаТаблицыТоваров.Номенклатура.ВестиУчетПоХарактеристикам Тогда МенеджерШтрихкодов.Отбор.ХарактеристикаНоменклатуры.Установить(СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры); Иначе МенеджерШтрихкодов.Отбор.ХарактеристикаНоменклатуры.Установить(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка()); КонецЕсли; МенеджерШтрихкодов.Прочитать(); Если МенеджерШтрихкодов.Количество() > 0 Тогда ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Штрихкод", МенеджерШтрихкодов[0].Штрихкод); // Установим характеристику для штрихкода Если СтрокаТаблицыТоваров.Номенклатура.ВестиУчетПоХарактеристикам Тогда ИсходящиеДанные.Вставить("Характеристика", СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры); Иначе ИсходящиеДанные.Вставить("Характеристика", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка()); // Запомним штрихкод с пустой характеристикой ШтрихкодСПустойХарактеристикой = ""; ШтрихкодСПустойХарактеристикой = МенеджерШтрихкодов[0].Штрихкод; КонецЕсли; ИсходящиеДанные.Вставить("ПредставлениеШтрихкода", ""); ИсходящиеДанные.Вставить("ТипШтрихкода", ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); ИсходящиеДанные.Вставить("Владелец", СтрокаТаблицыТоваров.Номенклатура); Отбор.Очистить(); СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Использование = Истина; СтрокаОтбора.Имя = "Владелец"; СтрокаОтбора.Значение = СтрокаТаблицыТоваров.Номенклатура; ИсходящиеДанные.Вставить("Отбор", Отбор); //Отбор.Очистить(); //ЭлементОтбора = Отбор.Добавить(""); ВыгрузитьРегистр(ИсходящиеДанные, Правила["Штрихкоды"], ИсходящиеДанные, , , "Штрихкоды"); //ВыгрузитьПоПравилу(ИсходящиеДанные, , ИсходящиеДанные, , "Штрихкоды"); КонецЕсли; Если СтрокаТаблицыТоваров.Номенклатура.ВестиУчетПоРазмерам Тогда Для к = 1 ПО глОбщееКоличествоРазмеров Цикл Если СтрокаТаблицыТоваров["КоличествоРазмер" + Строка(к)] > 0 Тогда НоваяСтрока = КоллекцияОбъектов.Добавить(); НоваяСтрока.Номенклатура = СтрокаТаблицыТоваров.Номенклатура; НоваяСтрока.Характеристика = СтрокаТаблицыТоваров["Размер" + Строка(к)]; НоваяСтрока.Количество = СтрокаТаблицыТоваров["КоличествоРазмер" + Строка(к)]; НоваяСтрока.КоличествоУпаковок = СтрокаТаблицыТоваров["КоличествоРазмер" + Строка(к)]; МенеджерШтрихкодов.Отбор.ХарактеристикаНоменклатуры.Установить(СтрокаТаблицыТоваров["Размер" + Строка(к)]); МенеджерШтрихкодов.Прочитать(); // В том случае если существует штрихкод для размера, то выгрузим его // В противном случае сформируем виртуальный штрихкод Если МенеджерШтрихкодов.Количество() > 0 Тогда ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Штрихкод", МенеджерШтрихкодов[0].Штрихкод); ИсходящиеДанные.Вставить("ПредставлениеШтрихкода", ""); ИсходящиеДанные.Вставить("Характеристика", СтрокаТаблицыТоваров["Размер" + Строка(к)]); ИсходящиеДанные.Вставить("ТипШтрихкода", ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); ИсходящиеДанные.Вставить("Владелец", СтрокаТаблицыТоваров.Номенклатура); Отбор.Очистить(); СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Использование = Истина; СтрокаОтбора.Имя = "Владелец"; СтрокаОтбора.Значение = СтрокаТаблицыТоваров.Номенклатура; //СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Использование = Истина; СтрокаОтбора.Имя = "Характеристика"; СтрокаОтбора.Значение = СтрокаТаблицыТоваров["Размер" + Строка(к)]; ИсходящиеДанные.Вставить("Отбор", Отбор); ВыгрузитьРегистр(ИсходящиеДанные, Правила["Штрихкоды"], ИсходящиеДанные, , , "Штрихкоды"); //ВыгрузитьПоПравилу(ИсходящиеДанные, , ИсходящиеДанные, , "Штрихкоды"); Иначе ШтрихкодДляВыгрузки = ""; ШтрихкодДляВыгрузки = ШтрихкодСПустойХарактеристикой; ШтрихкодДляВыгрузки = Лев(СокрЛП(СтрокаТаблицыТоваров["Размер" + Строка(к)].Наименование), 2) + Сред(ШтрихкодДляВыгрузки, 3, 10); ШтрихкодДляВыгрузки = ШтрихкодДляВыгрузки + РаботаСТорговымОборудованием.КонтрольныйСимволEAN(ШтрихкодДляВыгрузки, ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); ИсходящиеДанные = Новый Структура; ИсходящиеДанные.Вставить("Штрихкод", ШтрихкодДляВыгрузки); ИсходящиеДанные.Вставить("ПредставлениеШтрихкода", ""); ИсходящиеДанные.Вставить("Характеристика", СтрокаТаблицыТоваров["Размер" + Строка(к)]); ИсходящиеДанные.Вставить("ТипШтрихкода", ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13); ИсходящиеДанные.Вставить("Владелец", СтрокаТаблицыТоваров.Номенклатура); Отбор.Очистить(); СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Использование = Истина; СтрокаОтбора.Имя = "Владелец"; СтрокаОтбора.Значение = СтрокаТаблицыТоваров.Номенклатура; //СтрокаОтбора = Отбор.Добавить(); СтрокаОтбора.Использование = Истина; СтрокаОтбора.Имя = "Характеристика"; СтрокаОтбора.Значение = СтрокаТаблицыТоваров["Размер" + Строка(к)]; ИсходящиеДанные.Вставить("Отбор", Отбор); ВыгрузитьРегистр(ИсходящиеДанные, Правила["Штрихкоды"], ИсходящиеДанные, , , "Штрихкоды"); //ВыгрузитьПоПравилу(ИсходящиеДанные, , ИсходящиеДанные, , "Штрихкоды"); КонецЕсли; КонецЕсли; КонецЦикла; Иначе НоваяСтрока = КоллекцияОбъектов.Добавить(); НоваяСтрока.Номенклатура = СтрокаТаблицыТоваров.Номенклатура; НоваяСтрока.Характеристика = СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры; НоваяСтрока.Количество = СтрокаТаблицыТоваров.Количество; НоваяСтрока.КоличествоУпаковок = СтрокаТаблицыТоваров.Количество; КонецЕсли; КонецЦикла Ничего не выходит. Может кто наталкнет на мысль |
|||
1
SMakcik
09.11.12
✎
14:07
|
Написанный код располагается в обработчике ПередВыгрузкой табличной части "Товары" документа
|
|||
2
Wobland
09.11.12
✎
14:08
|
что-то многовато кода для формирования ШК
|
|||
3
SMakcik
09.11.12
✎
14:12
|
Ну я пытался разными способами подсунуть виртуальный штрихкод, но никак не получается.
Много потому-что формируется исходящие данные. В источнике хранится один штрихкод (без характеристики. но возможно и хранение штрихкода для характеристикой), а в приемник нужно передать штрихкода на все характеристики. |
|||
4
SMakcik
09.11.12
✎
14:13
|
Источник не хочется захламлять ненужной информацией
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |