Загрузка товаров на Сервер ККТ из 1с

Раздел для обсуждения программного обеспечения КБ по ККМ Меркурий.
Ответить
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

Здравствуйте, столкнулся с проблемой загрузки списка товаров на сервер ККТ из файла .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

Теги:
Аватара пользователя
afservice
Сообщения: 55
Зарегистрирован: 29 мар 2011, 09:13

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение afservice »

Ну так, в ККТ Меркурий одному товару может соответствовать только один штрих-код, ну и сервер на это рассчитан соответственно. Либо переписывайте обработку, что бы отсекала лишние штрих-коды, либо пусть переписывают сервер, что бы делал то же самое. Ни или в 1С дублировать один и тот же товар с разными штрих кодами.
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

afservice, Странно, обработка то Инкотекса. Зачем делать так чтоб обработка выгружала в файл в таком виде? А ни сервер ККТ ни касса не умеют загружать из файла больше одного штрих-кода на одну ед. изм. (касса тупо игнорирует лишние штрих-коды, а сервер ККТ выдает ошибку). Может разработчики ответят по этому поводу все таки? Не хочется в 1с плодить разные упаковки((
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

Неужели техподдержка форум совсем не читает? Помогли бы с обработкой разобраться....
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

Уважаемая тех-поддержка помогите разобраться с обработкой, ну или сделайте чтоб сервер ккт принимал не один штрих-код на одну ед.изм.
Аватара пользователя
Help5
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 835
Зарегистрирован: 18 янв 2019, 09:42

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Help5 »

На текущий момент можно ввести только один ШК. Предложение по вводу нескольких довел до разработчиков ПО.
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

Пока расплодил в 1с упаковки чтоб можно было загрузить товары на сервер, но столкнулся с еще одной проблемой(( Обработка некорректно выгружает наименование если у товара есть разные упаковки
к примеру на дюрасел везде в наименование добавляет неправильное наименование упаковки.
В правиле обмена наименования в списке товаров заполняются корректно
Может кто поможет обработку подправить чтобы добавляла правильные наименования упаковок к наименованию товара при выгрузке в файл?
Самому что-то не хватает мозгов в ней разобраться((
Насколько я понял в процедуре ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке это делается, но могу и ошибаться...

// Процедура заполняет структуру прайс-листа для выгрузке на ККМ Offline в расширенном формате (с группами товаров)
//
Процедура ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке(СтруктураПрайсЛиста, ТоварыКВыгрузке) Экспорт

Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТоварыКВыгруке.Код КАК Код,
| ТоварыКВыгруке.КодГруппы КАК КодГруппы,
| ТоварыКВыгруке.Артикул КАК Артикул,
| ТоварыКВыгруке.Весовой КАК Весовой,
| ТоварыКВыгруке.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТоварыКВыгруке.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| ТоварыКВыгруке.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| ТоварыКВыгруке.КоэффициентУпаковки КАК КоэффициентУпаковки,
| ТоварыКВыгруке.Номенклатура КАК Номенклатура,
| ТоварыКВыгруке.Наименование КАК Наименование,
| ТоварыКВыгруке.Остаток КАК Остаток,
| ТоварыКВыгруке.СтавкаНДС КАК СтавкаНДС,
| ТоварыКВыгруке.Алкоголь КАК Алкоголь,
| ТоварыКВыгруке.Маркируемый КАК Маркируемый,
| ТоварыКВыгруке.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| ТоварыКВыгруке.ЕмкостьТары КАК ЕмкостьТары,
| ТоварыКВыгруке.Крепость КАК Крепость,
| ТоварыКВыгруке.ИННПроизводителя КАК ИННПроизводителя,
| ТоварыКВыгруке.КПППроизводителя КАК КПППроизводителя,
| ТоварыКВыгруке.Упаковка КАК Упаковка,
| ТоварыКВыгруке.УпаковкаНаименование КАК УпаковкаНаименование,
| ТоварыКВыгруке.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьХарактеристики,
| ВЫБОР
| КОГДА ТоварыКВыгруке.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьУпаковки,
| ТоварыКВыгруке.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| ТоварыКВыгруке.Цена КАК Цена,
| ТоварыКВыгруке.Штрихкод КАК Штрихкод,
| ТоварыКВыгруке.ПодакцизныйТовар КАК ПодакцизныйТовар,
| ТоварыКВыгруке.ТипНоменклатуры КАК ТипНоменклатуры
|ПОМЕСТИТЬ Товары
|ИЗ
| &ТоварыКВыгруке КАК ТоварыКВыгруке
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Наименование КАК Наименование,
| Товары.Характеристика КАК Характеристика,
| Товары.ХарактеристикаНаименование КАК ХарактеристикаНаименование,
| Товары.Упаковка КАК Упаковка,
| Товары.УпаковкаНаименование КАК УпаковкаНаименование,
| Товары.КодГруппы КАК КодГруппы,
| Товары.Артикул КАК Артикул,
| Товары.Весовой КАК Весовой,
| Товары.КодЕдиницыИзмерения КАК КодЕдиницыИзмерения,
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Товары.НаименованиеЕдиницыИзмерения КАК НаименованиеЕдиницыИзмерения,
| Товары.Код КАК Код,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.Остаток КАК Остаток,
| Товары.Цена КАК Цена,
| Товары.Штрихкод КАК Штрихкод,
| Товары.Алкоголь КАК Алкоголь,
| Товары.Маркируемый КАК Маркируемый,
| Товары.КодВидаАлкогольнойПродукции КАК КодВидаАлкогольнойПродукции,
| Товары.ЕмкостьТары КАК ЕмкостьТары,
| Товары.Крепость КАК Крепость,
| Товары.ИННПроизводителя КАК ИННПроизводителя,
| Товары.КПППроизводителя КАК КПППроизводителя,
| Товары.КоэффициентУпаковки КАК КоэффициентУпаковки,
| Товары.ТипНоменклатуры КАК ТипНоменклатуры,
| Товары.ПодакцизныйТовар КАК ПодакцизныйТовар,
| Товары.ЕстьХарактеристики КАК ЕстьХарактеристики,
| Товары.ЕстьУпаковки КАК ЕстьУпаковки
|ИЗ
| Товары КАК Товары
|ИТОГИ
| МАКСИМУМ(Наименование),
| МАКСИМУМ(ХарактеристикаНаименование),
| МАКСИМУМ(КодГруппы),
| МАКСИМУМ(Артикул),
| МАКСИМУМ(Весовой),
| МАКСИМУМ(КодЕдиницыИзмерения),
| МАКСИМУМ(ЕдиницаИзмерения),
| МАКСИМУМ(НаименованиеЕдиницыИзмерения),
| МАКСИМУМ(Код),
| МАКСИМУМ(СтавкаНДС),
| МАКСИМУМ(ТипНоменклатуры),
| МАКСИМУМ(ЕстьХарактеристики),
| МАКСИМУМ(ЕстьУпаковки),
| МАКСИМУМ(Штрихкод),
| МАКСИМУМ(ПодакцизныйТовар),
| МАКСИМУМ(Алкоголь),
| МАКСИМУМ(Маркируемый),
| МАКСИМУМ(КодВидаАлкогольнойПродукции),
| МАКСИМУМ(ЕмкостьТары),
| МАКСИМУМ(Крепость),
| МАКСИМУМ(ИННПроизводителя),
| МАКСИМУМ(КПППроизводителя),
| МАКСИМУМ(Цена),
| МАКСИМУМ(Остаток)
|ПО
| Номенклатура,
| Характеристика");

Запрос.УстановитьПараметр("ТоварыКВыгруке", ТоварыКВыгрузке);
РезультатЗапроса = Запрос.Выполнить();

МассивПодобранныхЕИ = Новый Массив;
ВыборкаПоНоменклатуре = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоНоменклатуре.Следующий() Цикл

ЗаписьТовар = МенеджерОфлайнОборудования.ПолучитьЗаписьТовара();

Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.КодГруппы) Тогда
ЗаписьТовар.КодГруппы = Строка(Формат(ВыборкаПоНоменклатуре.КодГруппы, "ЧГ=0"));
КонецЕсли;

ЗаписьТовар.Наименование = ВыборкаПоНоменклатуре.Наименование;
ЗаписьТовар.Артикул = ВыборкаПоНоменклатуре.Артикул;
ЗаписьТовар.ЭтоВесовойТовар = ВыборкаПоНоменклатуре.Весовой;
ЗаписьТовар.КодЕдиницыИзмерения = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЗаписьТовар.ЭтоАлкоголь = ВыборкаПоНоменклатуре.Алкоголь;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
ЗаписьТовар.СтавкаНДС = ПолучитьСтавкуНДСККМ(ВыборкаПоНоменклатуре.СтавкаНДС);
ЗаписьТовар.ПризнакПредметаРасчета = РозничныеПродажиКлиентСервер.ПризнакПредметаРасчетаФискальнойОперации(
ВыборкаПоНоменклатуре.ТипНоменклатуры,
ВыборкаПоНоменклатуре.ПодакцизныйТовар);

Если ЗаписьТовар.ЭтоАлкоголь Тогда
ЗаписьТовар.АлкогольныеРеквизиты.Маркируемый = ВыборкаПоНоменклатуре.Маркируемый;
ЗаписьТовар.АлкогольныеРеквизиты.КодВидаАлкогольнойПродукции = ВыборкаПоНоменклатуре.КодВидаАлкогольнойПродукции;
ЗаписьТовар.АлкогольныеРеквизиты.ЕмкостьТары = ВыборкаПоНоменклатуре.ЕмкостьТары;
ЗаписьТовар.АлкогольныеРеквизиты.Крепость = ВыборкаПоНоменклатуре.Крепость;
ЗаписьТовар.АлкогольныеРеквизиты.ИННПроизводителя = ВыборкаПоНоменклатуре.ИННПроизводителя;
ЗаписьТовар.АлкогольныеРеквизиты.КПППроизводителя = ВыборкаПоНоменклатуре.КПППроизводителя;
КонецЕсли;

Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.ЕдиницаИзмерения) Тогда
УникальныйИдентификаторЕИ = ВыборкаПоНоменклатуре.ЕдиницаИзмерения.УникальныйИдентификатор();
Если МассивПодобранныхЕИ.Найти(УникальныйИдентификаторЕИ) = Неопределено Тогда
ЕдиницаИзмеренияККМ = МенеджерОфлайнОборудования.ПолучитьЗаписьЕдиницыИзмерения();
ЕдиницаИзмеренияККМ.Код = ВыборкаПоНоменклатуре.КодЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.Наименование = ВыборкаПоНоменклатуре.НаименованиеЕдиницыИзмерения;
ЕдиницаИзмеренияККМ.УникальныйИдентификатор = УникальныйИдентификаторЕИ;

СтруктураПрайсЛиста.ЕдиницыИзмерения.Добавить(ЕдиницаИзмеренияККМ);
МассивПодобранныхЕИ.Добавить(УникальныйИдентификаторЕИ);
КонецЕсли;
ЗаписьТовар.УникальныйИдентификаторЕдиницыИзмерения = УникальныйИдентификаторЕИ;
КонецЕсли;

ЗаписьТовар.УникальныйИдентификатор = ВыборкаПоНоменклатуре.Номенклатура.УникальныйИдентификатор();
Если ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда

ЗаписьТовар.ИмеетХарактеристики = Истина;
ЗаписьТовар.ИмеетУпаковки = Ложь;

ВыборкаПоХарактеристикам = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоХарактеристикам.Следующий() Цикл

ЗаписьХарактеристика = МенеджерОфлайнОборудования.ПолучитьЗаписьХарактеристики();
ЗаписьХарактеристика.Наименование = ВыборкаПоХарактеристикам.ХарактеристикаНаименование;

Если ВыборкаПоХарактеристикам.ЕстьУпаковки Тогда

ЗаписьХарактеристика.ИмеетУпаковки = Истина;

ВыборкаПоУпаковкам = ВыборкаПоХарактеристикам.Выбрать();

Пока ВыборкаПоУпаковкам.Следующий() Цикл
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();
Если ВыборкаПоНоменклатуре.Весовой Тогда

ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;

Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;

ЗаписьХарактеристика.Упаковки.Добавить(ЗаписьУпаковка);

КонецЦикла;

Иначе
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьХарактеристика.ИмеетУпаковки = Ложь;
Если ЗначениеЗаполнено(ВыборкаПоХарактеристикам.Штрихкод) Тогда
ЗаписьШтрихкода.Штрихкод = ВыборкаПоХарактеристикам.Штрихкод;
ЗаписьХарактеристика.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;

ЗаписьХарактеристика.Код = Строка(Формат(ВыборкаПоХарактеристикам.Код, "ЧГ=0"));
ЗаписьХарактеристика.Цена = ВыборкаПоХарактеристикам.Цена;
ЗаписьХарактеристика.Остаток = ВыборкаПоХарактеристикам.Остаток;

КонецЕсли;

ЗаписьХарактеристика.УникальныйИдентификатор = ВыборкаПоХарактеристикам.Характеристика.УникальныйИдентификатор();

ЗаписьТовар.Характеристики.Добавить(ЗаписьХарактеристика);

КонецЦикла;

ИначеЕсли ВыборкаПоНоменклатуре.ЕстьУпаковки И НЕ ВыборкаПоНоменклатуре.ЕстьХарактеристики Тогда

ВыборкаПоПустойХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоПустойХарактеристике.Следующий();

ВыборкаПоУпаковкам = ВыборкаПоПустойХарактеристике.Выбрать();

ЗаписьТовар.ИмеетУпаковки = Истина;
ЗаписьТовар.ИмеетХарактеристики = Ложь;

Пока ВыборкаПоУпаковкам.Следующий() Цикл

ЗаписьУпаковка = МенеджерОфлайнОборудования.ПолучитьЗаписьУпаковки();

Если ВыборкаПоНоменклатуре.Весовой Тогда
ЗаписьУпаковка.Код = Сред(ВыборкаПоУпаковкам.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоУпаковкам.Штрихкод;
ЗаписьУпаковка.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьУпаковка.Код = Строка(Формат(ВыборкаПоУпаковкам.Код, "ЧГ=0"));
КонецЕсли;

ЗаписьУпаковка.Цена = ВыборкаПоУпаковкам.Цена;
ЗаписьУпаковка.Остаток = ВыборкаПоУпаковкам.Остаток;
ЗаписьУпаковка.Коэффициент = ВыборкаПоУпаковкам.КоэффициентУпаковки;
ЗаписьУпаковка.Наименование = ВыборкаПоУпаковкам.УпаковкаНаименование;

Если ЗначениеЗаполнено(ВыборкаПоУпаковкам.Упаковка) Тогда
ЗаписьУпаковка.УникальныйИдентификатор = ВыборкаПоУпаковкам.Упаковка.УникальныйИдентификатор();
Иначе
ЗаписьУпаковка.УникальныйИдентификатор = Неопределено;
КонецЕсли;

ЗаписьТовар.Упаковки.Добавить(ЗаписьУпаковка);

КонецЦикла;

Иначе

Если ВыборкаПоНоменклатуре.Весовой Тогда
Код = Сред(ВыборкаПоНоменклатуре.Штрихкод, 3, 5);
Иначе
Если ЗначениеЗаполнено(ВыборкаПоНоменклатуре.Штрихкод) Тогда
ЗаписьШтрихкода = МенеджерОфлайнОборудования.ПолучитьЗаписьШтрихкода();
ЗаписьШтрихкода.Штрихкод = ВыборкаПоНоменклатуре.Штрихкод;
ЗаписьТовар.Штрихкоды.Добавить(ЗаписьШтрихкода);
КонецЕсли;
ЗаписьТовар.Код = Строка(Формат(ВыборкаПоНоменклатуре.Код, "ЧГ=0"));
КонецЕсли;
ЗаписьТовар.Цена = ВыборкаПоНоменклатуре.Цена;
ЗаписьТовар.Остаток = ВыборкаПоНоменклатуре.Остаток;

ЗаписьТовар.ИмеетУпаковки = Ложь;
ЗаписьТовар.ИмеетХарактеристики = Ложь;

КонецЕсли;

СтруктураПрайсЛиста.Товары.Добавить(ЗаписьТовар);

КонецЦикла;

КонецПроцедуры

Заранее извиняюсь если нельзя так выкладывать текст процедуры, но не нашел как это сделать компактней...
Аватара пользователя
Jackpot770613
Сообщения: 19
Зарегистрирован: 08 фев 2019, 08:27

Re: Загрузка товаров на Сервер ККТ из 1с

Сообщение Jackpot770613 »

Нашел еще недоработки... Если в базе есть товары с характеристиками то обработка их выгружает не полностью выгружает товар только с одной характеристикой и одной ед.изм. без цены и шрихкода(.
В процедуре "ЗаполнитьСтруктуруПрайсЛистаИзДанныхКВыгрузке" более-менее разобрался и подправил.
Теперь все выгружает как надо! ))
Если кому будет нужна помощь в этом деле обращайтесь помогу! Ну или могу здесь выложить исправленную мной процедуру.
Ответить