Загрузка товаров на Сервер ККТ из 1с
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Загрузка товаров на Сервер ККТ из 1с
Здравствуйте, столкнулся с проблемой загрузки списка товаров на сервер ККТ из файла .XML выгруженного из 1с при помощи обмена с подключаемым оборудование Offline.
При загрузке файла сервер выдает ошибку
Я так понимаю что он не может загрузить больше одного штрих-кода на одну единицу измерения (в номенклатуре попадаются товары где на один товар есть по несколько штрих-кодов на одну ед. изм.)
Обработка выгружает в файл штрих-коды (если их больше одного) через запятую.
Вот как в 1с в обработке выглядит
Вот так в выгруженном файле]
Подскажите что с этим можно сделать? Может я что не правильно делаю?
Хотелось бы выгружать товары в кассы через Сервер ККТ
Windows 10x64
1с версия 8.3.13.1690 32битная
Управление Торговлей 11.4.3.126
Драйвер MercuryCOMOFFLINE_1_1_28
Конфигурации объединял с 1Cv82_Trade_11_4_3_126_MercALL.cf
При загрузке файла сервер выдает ошибку
Я так понимаю что он не может загрузить больше одного штрих-кода на одну единицу измерения (в номенклатуре попадаются товары где на один товар есть по несколько штрих-кодов на одну ед. изм.)
Обработка выгружает в файл штрих-коды (если их больше одного) через запятую.
Вот как в 1с в обработке выглядит
Вот так в выгруженном файле]
Подскажите что с этим можно сделать? Может я что не правильно делаю?
Хотелось бы выгружать товары в кассы через Сервер ККТ
Windows 10x64
1с версия 8.3.13.1690 32битная
Управление Торговлей 11.4.3.126
Драйвер MercuryCOMOFFLINE_1_1_28
Конфигурации объединял с 1Cv82_Trade_11_4_3_126_MercALL.cf
Теги:
Re: Загрузка товаров на Сервер ККТ из 1с
Ну так, в ККТ Меркурий одному товару может соответствовать только один штрих-код, ну и сервер на это рассчитан соответственно. Либо переписывайте обработку, что бы отсекала лишние штрих-коды, либо пусть переписывают сервер, что бы делал то же самое. Ни или в 1С дублировать один и тот же товар с разными штрих кодами.
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Re: Загрузка товаров на Сервер ККТ из 1с
afservice, Странно, обработка то Инкотекса. Зачем делать так чтоб обработка выгружала в файл в таком виде? А ни сервер ККТ ни касса не умеют загружать из файла больше одного штрих-кода на одну ед. изм. (касса тупо игнорирует лишние штрих-коды, а сервер ККТ выдает ошибку). Может разработчики ответят по этому поводу все таки? Не хочется в 1с плодить разные упаковки((
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Re: Загрузка товаров на Сервер ККТ из 1с
Неужели техподдержка форум совсем не читает? Помогли бы с обработкой разобраться....
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Re: Загрузка товаров на Сервер ККТ из 1с
Уважаемая тех-поддержка помогите разобраться с обработкой, ну или сделайте чтоб сервер ккт принимал не один штрих-код на одну ед.изм.
Re: Загрузка товаров на Сервер ККТ из 1с
На текущий момент можно ввести только один ШК. Предложение по вводу нескольких довел до разработчиков ПО.
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Re: Загрузка товаров на Сервер ККТ из 1с
Пока расплодил в 1с упаковки чтоб можно было загрузить товары на сервер, но столкнулся с еще одной проблемой(( Обработка некорректно выгружает наименование если у товара есть разные упаковки
к примеру на дюрасел везде в наименование добавляет неправильное наименование упаковки.
В правиле обмена наименования в списке товаров заполняются корректно
Может кто поможет обработку подправить чтобы добавляла правильные наименования упаковок к наименованию товара при выгрузке в файл?
Самому что-то не хватает мозгов в ней разобраться((
Насколько я понял в процедуре ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке это делается, но могу и ошибаться...
// Процедура заполняет структуру прайс-листа для выгрузке на ККМ Offline в расширенном формате (с группами товаров)
//
Процедура ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке(СтруктураПрайсЛиста, ТоварыКВыгрузке) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТоварыКВыгруке.Код КАК Код,
| ТоварыКВыгруке.КодГруппы КАК КодГруппы,
| ТоварыКВыгруке.Артикул КАК Артикул,
| ТоварыКВыгруке.Весовой КАК Весовой,
| ТоварыКВыгруке.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТоварыКВыгруке.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| ТоварыКВыгруке.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| ТоварыКВыгруке.КоэффициентУпаковки КАК КоэффициентУпаковки,
| ТоварыКВыгруке.Номенклатура КАК Номенклатура,
| ТоварыКВыгруке.Наименование КАК Наименование,
| ТоварыКВыгруке.Остаток КАК Остаток,
| ТоварыКВыгруке.СтавкаНДС КАК СтавкаНДС,
| ТоварыКВыгруке.Алкоголь КАК Алкоголь,
| ТоварыКВыгруке.Маркируемый КАК Маркируемый,
| ТоварыКВыгруке.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| ТоварыКВыгруке.ЕмкостьТары КАК ЕмкостьТары,
| ТоварыКВыгруке.Крепость КАК Крепость,
| ТоварыКВыгруке.ИННПроизводителя КАК ИННПроизводителя,
| ТоварыКВыгруке.КПППроизводителя КАК КПППроизводителя,
| ТоварыКВыгруке.Упаковка КАК Упаковка,
| ТоварыКВыгруке.УпаковкаНаименование КАК УпаковкаНаименование,
| ТоварыКВыгруке.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьХарактеристики,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьУпаковки,
| ТоварыКВыгруке.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| ТоварыКВыгруке.Цена КАК Цена,
| ТоварыКВыгруке.Штрихкод КАК Штрихкод,
| ТоварыКВыгруке.ПодакцизныйТовар КАК ПодакцизныйТовар,
| ТоварыКВыгруке.ТипНоменклатуры КАК ТипНоменклатуры
|ПОМЕСТИТЬ Товары
|ИЗ
| &ТоварыКВыгруке КАК ТоварыКВыгруке
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Наименование КАК Наименование,
| Товары.Характеристика КАК Характеристика,
| Товары.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| Товары.Упаковка КАК Упаковка,
| Товары.УпаковкаНаименование КАК УпаковкаНаименование,
| Товары.КодГруппы КАК КодГруппы,
| Товары.Артикул КАК Артикул,
| Товары.Весовой КАК Весовой,
| Товары.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Товары.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| Товары.Код КАК Код,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.Остаток КАК Остаток,
| Товары.Цена КАК Цена,
| Товары.Штрихкод КАК Штрихкод,
| Товары.Алкоголь КАК Алкоголь,
| Товары.Маркируемый КАК Маркируемый,
| Товары.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| Товары.ЕмкостьТары КАК ЕмкостьТары,
| Товары.Крепость КАК Крепость,
| Товары.ИННПроизводителя КАК ИННПроизводителя,
| Товары.КПППроизводителя КАК КПППроизводителя,
| Товары.КоэффициентУпаковки КАК КоэффициентУпаковки,
| Товары.ТипНоменклатуры КАК ТипНоменклатуры,
| Товары.ПодакцизныйТовар КАК ПодакцизныйТовар,
| Товары.ЕстьХарактеристики КАК ЕстьХарактеристики,
| Товары.ЕстьУпаковки КАК ЕстьУпаковки
|ИЗ
| Товары КАК Товары
|ИТОГИ
| МАКСИМУМ(Наименование),
| МАКСИМУМ(ХарактеристикаНаименование),
| МАКСИМУМ(КодГруппы),
| МАКСИМУМ(Артикул),
| МАКСИМУМ(Весовой),
| МАКСИМУМ(КодЕдиницыИзмерения),
| МАКСИМУМ(ЕдиницаИзмерения),
| МАКСИМУМ(НаименованиеЕдиницыИзмерения),
| МАКСИМУМ(Код),
| МАКСИМУМ(СтавкаНДС),
| МАКСИМУМ(ТипНоменклатуры),
| МАКСИМУМ(ЕстьХарактеристики),
| МАКСИМУМ(ЕстьУпаковки),
| МАКСИМУМ(Штрихкод),
| МАКСИМУМ(ПодакцизныйТовар),
| МАКСИМУМ(Алкоголь),
| МАКСИМУМ(Маркируемый),
| МАКСИМУМ(КодВидаАлкогольнойПродукции),
| МАКСИМУМ(ЕмкостьТары),
| МАКСИМУМ(Крепость),
| МАКСИМУМ(ИННПроизводителя),
| МАКСИМУМ(КПППроизводителя),
| МАКСИМУМ(Цена),
| МАКСИМУМ(Остаток)
|ПО
| Номенклатура,
| Характеристика");
Запрос.УстановитьПараметр("ТоварыКВыгруке", ТоварыКВыгрузке);
РезультатЗапроса = Запрос.Выполнить();
МассивПодобранныхЕИ = Новый Массив;
ВыборкаПоНоменклатуре = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
ЗаписьТовар = МенеджерОфлайнОборудования.ПолучитьЗаписьТовара();
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.КодГруппы) Тогда
ЗаписьТовар.КодГруппы = Строка(Формат(ВыборкаПоНоменклатуре.КодГруппы, "ЧГ=0"));
КонецЕсли;
ЗаписьТовар.Наименование = ВыборкаПоНоменклатуре.Наименование;
ЗаписьТовар.Артикул = ВыборкаПоНоменклатуре.Артикул;
ЗаписьТовар.ЭтоВесовойТовар = ВыборкаПоНоменклатуре.Весовой;
ЗаписьТовар.КодЕдиницыИзмерения = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЗаписьТовар.ЭтоАлкоголь = ВыборкаПоНоменклатуре.Алкоголь;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
ЗаписьТовар.СтавкаНДС = ПолучитьСтавкуНДСККМ(ВыборкаПоНоменклатуре.СтавкаНДС);
ЗаписьТовар.ПризнакПредметаРасчета = РозничныеПродажиКлиентСервер.ПризнакПредметаРасчетаФискальнойОперации(
ВыборкаПоНоменклатуре.ТипНоменклатуры,
ВыборкаПоНоменклатуре.ПодакцизныйТовар);
Если ЗаписьТовар.ЭтоАлкоголь Тогда
ЗаписьТовар.АлкогольныеРеквизиты.Маркируемый = ВыборкаПоНоменклатуре.Маркируемый;
ЗаписьТовар.АлкогольныеРеквизиты.КодВидаАлкогольнойПродукции = ВыборкаПоНоменклатуре.КодВидаАлкогольнойПродукции;
ЗаписьТовар.АлкогольныеРеквизиты.ЕмкостьТары = ВыборкаПоНоменклатуре.ЕмкостьТары;
ЗаписьТовар.АлкогольныеРеквизиты.Крепость = ВыборкаПоНоменклатуре.Крепость;
ЗаписьТовар.АлкогольныеРеквизиты.ИННПроизводителя = ВыборкаПоНоменклатуре.ИННПроизводителя;
ЗаписьТовар.АлкогольныеРеквизиты.КПППроизводителя = ВыборкаПоНоменклатуре.КПППроизводителя;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.ЕдиницаИзмерения) Тогда
УникальныйИдентификаторЕИ = ВыборкаПоНоменклатуре.ЕдиницаИзмерения.УникальныйИдентификатор();
Если МассивПодобранныхЕИ.Найти(УникальныйИдентификаторЕИ) = Неопределено Тогда
ЕдиницаИзмеренияККМ = МенеджерОфлайнОборудования.ПолучитьЗаписьЕдиницыИзмерения();
ЕдиницаИзмеренияККМ.Код = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.Наименование = ВыборкаПоНоменклатуре.НаименованиеЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.УникальныйИдентификатор = УникальныйИдентификаторЕИ;
СтруктураПрайсЛиста.ЕдиницыИзмерения.Добавить(ЕдиницаИзмеренияККМ);
МассивПодобранныхЕИ.Добавить(УникальныйИдентификаторЕИ);
КонецЕсли;
ЗаписьТовар.УникальныйИдентификаторЕдиницыИзмерения = УникальныйИдентификаторЕИ;
КонецЕсли;
ЗаписьТовар.УникальныйИдентификатор = ВыборкаПоНоменклатуре.Номенклатура.УникальныйИдентификатор();
Если ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда
ЗаписьТовар.ИмеетХарактеристики = Истина;
ЗаписьТовар.ИмеетУпаковки = Ложь;
ВыборкаПоХарактеристикам = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоХарактеристикам.Следующий() Цикл
ЗаписьХарактеристика = МенеджерОфлайнОборудования.ПолучитьЗаписьХарактеристики();
ЗаписьХарактеристика.Наименование = ВыборкаПоХарактеристикам.ХарактеристикаНаименование;
Если ВыборкаПоХарактеристикам.ЕстьУпаковки Тогда
ЗаписьХарактеристика.ИмеетУпаковки = Истина;
ВыборкаПоУпаковкам = ВыборкаПоХарактеристикам.Выбрать();
Пока ВыборкаПоУпаковкам.Следующий() Цикл
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();
Если ВыборкаПоНоменклатуре.Весовой Тогда
ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;
ЗаписьХарактеристика.Упаковки.Добавить(ЗаписьУпаковка);
КонецЦикла;
Иначе
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьХарактеристика.ИмеетУпаковки = Ложь;
Если ЗначениеЗаполнено(ВыборкаПоХарактеристикам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоХарактеристикам.Штрихкод;
ЗаписьХарактеристика.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьХарактеристика.Код = Строка(Формат(ВыборкаПоХарактеристикам.Код, "ЧГ=0"));
ЗаписьХарактеристика.Цена = ВыборкаПоХарактеристикам.Цена;
ЗаписьХарактеристика.Остаток = ВыборкаПоХарактеристикам.Остаток;
КонецЕсли;
ЗаписьХарактеристика.УникальныйИдентификатор = ВыборкаПоХарактеристикам.Характеристика.УникальныйИдентификатор();
ЗаписьТовар.Характеристики.Добавить(ЗаписьХарактеристика);
КонецЦикла;
ИначеЕсли ВыборкаПоНоменклатуре.ЕстьУпаковки И НЕ ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда
ВыборкаПоПустойХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоПустойХарактеристике.Следующий();
ВыборкаПоУпаковкам = ВыборкаПоПустойХарактеристике.Выбрать();
ЗаписьТовар.ИмеетУпаковки = Истина;
ЗаписьТовар.ИмеетХарактеристики = Ложь;
Пока ВыборкаПоУпаковкам.Следующий() Цикл
ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();
Если ВыборкаПоНоменклатуре.Весовой Тогда
ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;
ЗаписьТовар.Упаковки.Добавить(ЗаписьУпаковка);
КонецЦикла;
Иначе
Если ВыборкаПоНоменклатуре.Весовой Тогда
Код = Сред(ВыборкаПоНоменклатуре.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоНоменклатуре.Штрихкод;
ЗаписьТовар.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьТовар.Цена = ВыборкаПоНоменклатуре.Цена;
ЗаписьТовар.Остаток = ВыборкаПоНоменклатуре.Остаток;
ЗаписьТовар.ИмеетУпаковки = Ложь;
ЗаписьТовар.ИмеетХарактеристики = Ложь;
КонецЕсли;
СтруктураПрайсЛиста.Товары.Добавить(ЗаписьТовар);
КонецЦикла;
КонецПроцедуры
Заранее извиняюсь если нельзя так выкладывать текст процедуры, но не нашел как это сделать компактней...
к примеру на дюрасел везде в наименование добавляет неправильное наименование упаковки.
В правиле обмена наименования в списке товаров заполняются корректно
Может кто поможет обработку подправить чтобы добавляла правильные наименования упаковок к наименованию товара при выгрузке в файл?
Самому что-то не хватает мозгов в ней разобраться((
Насколько я понял в процедуре ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке это делается, но могу и ошибаться...
// Процедура заполняет структуру прайс-листа для выгрузке на ККМ Offline в расширенном формате (с группами товаров)
//
Процедура ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке(СтруктураПрайсЛиста, ТоварыКВыгрузке) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТоварыКВыгруке.Код КАК Код,
| ТоварыКВыгруке.КодГруппы КАК КодГруппы,
| ТоварыКВыгруке.Артикул КАК Артикул,
| ТоварыКВыгруке.Весовой КАК Весовой,
| ТоварыКВыгруке.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТоварыКВыгруке.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| ТоварыКВыгруке.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| ТоварыКВыгруке.КоэффициентУпаковки КАК КоэффициентУпаковки,
| ТоварыКВыгруке.Номенклатура КАК Номенклатура,
| ТоварыКВыгруке.Наименование КАК Наименование,
| ТоварыКВыгруке.Остаток КАК Остаток,
| ТоварыКВыгруке.СтавкаНДС КАК СтавкаНДС,
| ТоварыКВыгруке.Алкоголь КАК Алкоголь,
| ТоварыКВыгруке.Маркируемый КАК Маркируемый,
| ТоварыКВыгруке.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| ТоварыКВыгруке.ЕмкостьТары КАК ЕмкостьТары,
| ТоварыКВыгруке.Крепость КАК Крепость,
| ТоварыКВыгруке.ИННПроизводителя КАК ИННПроизводителя,
| ТоварыКВыгруке.КПППроизводителя КАК КПППроизводителя,
| ТоварыКВыгруке.Упаковка КАК Упаковка,
| ТоварыКВыгруке.УпаковкаНаименование КАК УпаковкаНаименование,
| ТоварыКВыгруке.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьХарактеристики,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьУпаковки,
| ТоварыКВыгруке.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| ТоварыКВыгруке.Цена КАК Цена,
| ТоварыКВыгруке.Штрихкод КАК Штрихкод,
| ТоварыКВыгруке.ПодакцизныйТовар КАК ПодакцизныйТовар,
| ТоварыКВыгруке.ТипНоменклатуры КАК ТипНоменклатуры
|ПОМЕСТИТЬ Товары
|ИЗ
| &ТоварыКВыгруке КАК ТоварыКВыгруке
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Наименование КАК Наименование,
| Товары.Характеристика КАК Характеристика,
| Товары.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| Товары.Упаковка КАК Упаковка,
| Товары.УпаковкаНаименование КАК УпаковкаНаименование,
| Товары.КодГруппы КАК КодГруппы,
| Товары.Артикул КАК Артикул,
| Товары.Весовой КАК Весовой,
| Товары.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Товары.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| Товары.Код КАК Код,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.Остаток КАК Остаток,
| Товары.Цена КАК Цена,
| Товары.Штрихкод КАК Штрихкод,
| Товары.Алкоголь КАК Алкоголь,
| Товары.Маркируемый КАК Маркируемый,
| Товары.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| Товары.ЕмкостьТары КАК ЕмкостьТары,
| Товары.Крепость КАК Крепость,
| Товары.ИННПроизводителя КАК ИННПроизводителя,
| Товары.КПППроизводителя КАК КПППроизводителя,
| Товары.КоэффициентУпаковки КАК КоэффициентУпаковки,
| Товары.ТипНоменклатуры КАК ТипНоменклатуры,
| Товары.ПодакцизныйТовар КАК ПодакцизныйТовар,
| Товары.ЕстьХарактеристики КАК ЕстьХарактеристики,
| Товары.ЕстьУпаковки КАК ЕстьУпаковки
|ИЗ
| Товары КАК Товары
|ИТОГИ
| МАКСИМУМ(Наименование),
| МАКСИМУМ(ХарактеристикаНаименование),
| МАКСИМУМ(КодГруппы),
| МАКСИМУМ(Артикул),
| МАКСИМУМ(Весовой),
| МАКСИМУМ(КодЕдиницыИзмерения),
| МАКСИМУМ(ЕдиницаИзмерения),
| МАКСИМУМ(НаименованиеЕдиницыИзмерения),
| МАКСИМУМ(Код),
| МАКСИМУМ(СтавкаНДС),
| МАКСИМУМ(ТипНоменклатуры),
| МАКСИМУМ(ЕстьХарактеристики),
| МАКСИМУМ(ЕстьУпаковки),
| МАКСИМУМ(Штрихкод),
| МАКСИМУМ(ПодакцизныйТовар),
| МАКСИМУМ(Алкоголь),
| МАКСИМУМ(Маркируемый),
| МАКСИМУМ(КодВидаАлкогольнойПродукции),
| МАКСИМУМ(ЕмкостьТары),
| МАКСИМУМ(Крепость),
| МАКСИМУМ(ИННПроизводителя),
| МАКСИМУМ(КПППроизводителя),
| МАКСИМУМ(Цена),
| МАКСИМУМ(Остаток)
|ПО
| Номенклатура,
| Характеристика");
Запрос.УстановитьПараметр("ТоварыКВыгруке", ТоварыКВыгрузке);
РезультатЗапроса = Запрос.Выполнить();
МассивПодобранныхЕИ = Новый Массив;
ВыборкаПоНоменклатуре = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
ЗаписьТовар = МенеджерОфлайнОборудования.ПолучитьЗаписьТовара();
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.КодГруппы) Тогда
ЗаписьТовар.КодГруппы = Строка(Формат(ВыборкаПоНоменклатуре.КодГруппы, "ЧГ=0"));
КонецЕсли;
ЗаписьТовар.Наименование = ВыборкаПоНоменклатуре.Наименование;
ЗаписьТовар.Артикул = ВыборкаПоНоменклатуре.Артикул;
ЗаписьТовар.ЭтоВесовойТовар = ВыборкаПоНоменклатуре.Весовой;
ЗаписьТовар.КодЕдиницыИзмерения = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЗаписьТовар.ЭтоАлкоголь = ВыборкаПоНоменклатуре.Алкоголь;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
ЗаписьТовар.СтавкаНДС = ПолучитьСтавкуНДСККМ(ВыборкаПоНоменклатуре.СтавкаНДС);
ЗаписьТовар.ПризнакПредметаРасчета = РозничныеПродажиКлиентСервер.ПризнакПредметаРасчетаФискальнойОперации(
ВыборкаПоНоменклатуре.ТипНоменклатуры,
ВыборкаПоНоменклатуре.ПодакцизныйТовар);
Если ЗаписьТовар.ЭтоАлкоголь Тогда
ЗаписьТовар.АлкогольныеРеквизиты.Маркируемый = ВыборкаПоНоменклатуре.Маркируемый;
ЗаписьТовар.АлкогольныеРеквизиты.КодВидаАлкогольнойПродукции = ВыборкаПоНоменклатуре.КодВидаАлкогольнойПродукции;
ЗаписьТовар.АлкогольныеРеквизиты.ЕмкостьТары = ВыборкаПоНоменклатуре.ЕмкостьТары;
ЗаписьТовар.АлкогольныеРеквизиты.Крепость = ВыборкаПоНоменклатуре.Крепость;
ЗаписьТовар.АлкогольныеРеквизиты.ИННПроизводителя = ВыборкаПоНоменклатуре.ИННПроизводителя;
ЗаписьТовар.АлкогольныеРеквизиты.КПППроизводителя = ВыборкаПоНоменклатуре.КПППроизводителя;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.ЕдиницаИзмерения) Тогда
УникальныйИдентификаторЕИ = ВыборкаПоНоменклатуре.ЕдиницаИзмерения.УникальныйИдентификатор();
Если МассивПодобранныхЕИ.Найти(УникальныйИдентификаторЕИ) = Неопределено Тогда
ЕдиницаИзмеренияККМ = МенеджерОфлайнОборудования.ПолучитьЗаписьЕдиницыИзмерения();
ЕдиницаИзмеренияККМ.Код = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.Наименование = ВыборкаПоНоменклатуре.НаименованиеЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.УникальныйИдентификатор = УникальныйИдентификаторЕИ;
СтруктураПрайсЛиста.ЕдиницыИзмерения.Добавить(ЕдиницаИзмеренияККМ);
МассивПодобранныхЕИ.Добавить(УникальныйИдентификаторЕИ);
КонецЕсли;
ЗаписьТовар.УникальныйИдентификаторЕдиницыИзмерения = УникальныйИдентификаторЕИ;
КонецЕсли;
ЗаписьТовар.УникальныйИдентификатор = ВыборкаПоНоменклатуре.Номенклатура.УникальныйИдентификатор();
Если ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда
ЗаписьТовар.ИмеетХарактеристики = Истина;
ЗаписьТовар.ИмеетУпаковки = Ложь;
ВыборкаПоХарактеристикам = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоХарактеристикам.Следующий() Цикл
ЗаписьХарактеристика = МенеджерОфлайнОборудования.ПолучитьЗаписьХарактеристики();
ЗаписьХарактеристика.Наименование = ВыборкаПоХарактеристикам.ХарактеристикаНаименование;
Если ВыборкаПоХарактеристикам.ЕстьУпаковки Тогда
ЗаписьХарактеристика.ИмеетУпаковки = Истина;
ВыборкаПоУпаковкам = ВыборкаПоХарактеристикам.Выбрать();
Пока ВыборкаПоУпаковкам.Следующий() Цикл
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();
Если ВыборкаПоНоменклатуре.Весовой Тогда
ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;
ЗаписьХарактеристика.Упаковки.Добавить(ЗаписьУпаковка);
КонецЦикла;
Иначе
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьХарактеристика.ИмеетУпаковки = Ложь;
Если ЗначениеЗаполнено(ВыборкаПоХарактеристикам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоХарактеристикам.Штрихкод;
ЗаписьХарактеристика.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьХарактеристика.Код = Строка(Формат(ВыборкаПоХарактеристикам.Код, "ЧГ=0"));
ЗаписьХарактеристика.Цена = ВыборкаПоХарактеристикам.Цена;
ЗаписьХарактеристика.Остаток = ВыборкаПоХарактеристикам.Остаток;
КонецЕсли;
ЗаписьХарактеристика.УникальныйИдентификатор = ВыборкаПоХарактеристикам.Характеристика.УникальныйИдентификатор();
ЗаписьТовар.Характеристики.Добавить(ЗаписьХарактеристика);
КонецЦикла;
ИначеЕсли ВыборкаПоНоменклатуре.ЕстьУпаковки И НЕ ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда
ВыборкаПоПустойХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоПустойХарактеристике.Следующий();
ВыборкаПоУпаковкам = ВыборкаПоПустойХарактеристике.Выбрать();
ЗаписьТовар.ИмеетУпаковки = Истина;
ЗаписьТовар.ИмеетХарактеристики = Ложь;
Пока ВыборкаПоУпаковкам.Следующий() Цикл
ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();
Если ВыборкаПоНоменклатуре.Весовой Тогда
ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;
ЗаписьТовар.Упаковки.Добавить(ЗаписьУпаковка);
КонецЦикла;
Иначе
Если ВыборкаПоНоменклатуре.Весовой Тогда
Код = Сред(ВыборкаПоНоменклатуре.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоНоменклатуре.Штрихкод;
ЗаписьТовар.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьТовар.Цена = ВыборкаПоНоменклатуре.Цена;
ЗаписьТовар.Остаток = ВыборкаПоНоменклатуре.Остаток;
ЗаписьТовар.ИмеетУпаковки = Ложь;
ЗаписьТовар.ИмеетХарактеристики = Ложь;
КонецЕсли;
СтруктураПрайсЛиста.Товары.Добавить(ЗаписьТовар);
КонецЦикла;
КонецПроцедуры
Заранее извиняюсь если нельзя так выкладывать текст процедуры, но не нашел как это сделать компактней...
- Jackpot770613
- Сообщения: 19
- Зарегистрирован: 08 фев 2019, 08:27
Re: Загрузка товаров на Сервер ККТ из 1с
Нашел еще недоработки... Если в базе есть товары с характеристиками то обработка их выгружает не полностью выгружает товар только с одной характеристикой и одной ед.изм. без цены и шрихкода(.
В процедуре "ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке" более-менее разобрался и подправил.
Теперь все выгружает как надо! ))
Если кому будет нужна помощь в этом деле обращайтесь помогу! Ну или могу здесь выложить исправленную мной процедуру.
В процедуре "ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке" более-менее разобрался и подправил.
Теперь все выгружает как надо! ))
Если кому будет нужна помощь в этом деле обращайтесь помогу! Ну или могу здесь выложить исправленную мной процедуру.