Форум OlegON > Программы и оборудование для автоматизации торговли > Маркировка

Задержки при закрытии чека с маркировкой : Маркировка

23.11.2024 14:14


10.08.2024 23:11
Цитата:
volk13 Я на этих проверках марок через ККТ (т.е. - через ОИСМ) - в былые времена - "лошадь съел"
отсюда - вывод - если предполагается работа с одной ККТ из нескольких РМК, то вариант лишь один - проверять марки через ОИСМ (через ККТ) - лишь при открытии чека для конкретного РМК (а остальные чеки от других РМК - торчат в очереди)..
А иначе - как только конкретный РМК пробьёт свой чек (или выпустит Х-отчёт например), то остальные РМК (да и сам тот же конкретный РМК, выпустивший на печать Х-отчёт) - не смогут отправить в ОФД чек, без новой проверки марок через ОИСМ (ибо - предыдущие результаты проверок марок - обнулятся.. Ну так устроен ФН и алгоритмы ККТ).
10.08.2024 23:31
Цитата:
MWWRuza У себя?
Вообще, для этого есть специальная команда:

10.6. Сохранить результат проверки кода маркировки
Назначение: Сохраняет данные проверенного кода маркировки для дальнейшего использования

И обратно:

10.10. Загрузить данные ранее проверенного кода маркировки для формирования позиции чека
Назначение: Загружает в позицию чека данные ранее проверенного и сохраненного кода маркировки

И результат проверки и сам факт ее выполнения где-то на сервере ОИСМ увязываются между собой... Иначе, можно было-бы не проверяя всегда 15 пихать и радоваться
Я сохраняю у себе в списке строк чека. Одинаково для всех поддерживаемых типов ккм. Делалось по букварю. Для позиции чека передается маркировка и результат проверки в ОИСМ. Проверка в ОИСМ это не просто получение статуса марки, следом отправляется ее акцептование (подтверждение продажи) или отмена (если включен режим обязательной валидации). Насколько я понял, приведенные выше команды это реализация сохранения результатов проверки на уровне ккм, то есть делает тоже самое, но менее удобно на мое восприятие.
10.08.2024 23:37
Цитата:
volk13 отсюда - вывод - если предполагается работа с одной ККТ из нескольких РМК, то вариант лишь один - проверять марки через ОИСМ (через ККТ) - лишь при открытии чека для конкретного РМК (а остальные чеки от других РМК - торчат в очереди)..
А иначе - как только конкретный РМК пробьёт свой чек (или выпустит Х-отчёт например), то остальные РМК (да и сам тот же конкретный РМК, выпустивший на печать Х-отчёт) - не смогут отправить в ОФД чек, без новой проверки марок через ОИСМ (ибо - предыдущие результаты проверок марок - обнулятся.. Ну так устроен ФН и алгоритмы ККТ).
У меня аналогичный режим работает в оптовке очень давно, появился еще до онлайн касс. Иначе нормально не получится реализовать многопользовательскую работу. Проверка в ОИСМ происходит до открытия чека, но после открытия смены. Чеки от разных пользователей, разумеется, стоят в очереди. Пока один не обработан на ккм, другой обрабатываться не будет.
10.08.2024 23:43
Цитата:
FinSoft У меня аналогичный режим работает в оптовке очень давно
Ну т.е. - я правильно всё изложил, верно? (надеюсь эта информация пригодится топикстартеру - Тигин Олег, удачи ему)
11.08.2024 10:06
Цитата:
FinSoft Насколько я понял, приведенные выше команды это реализация сохранения результатов проверки на уровне ккм
Возможно... То, что я привел выше - это выдержки из ИП для Спарк-130... Что было под рукой... А видение всего процесса его разработчиками(программисти от ККС), иногда.... Ээээ... не всегда совпадает с общепринятым.

Ради интереса, покопал одну из своих конфигураций под Штрих, дорабатывал давно, как только ФФД-1.2 появился... Там "колесья"(шины), пропади они пропадом... Хорошо хоть, что пока никакого РР по ним не требуется...
Там тоже есть функция сохранения результатов проверки марок:

Процедура ЗапомнитьРезПроверкиМарки()
ФискальныйРегистратор.Password = глПользователь.ПарольККТ;
Рез = ФискальныйРегистратор.FNAcceptMarkingCode();
КонецПроцедуры

Сама проверка делается так:

ФискальныйРегистратор.BarCode = ШК;
ФискальныйРегистратор.ItemStatus = 1;
ФискальныйРегистратор.CheckItemMode = 0;
ФискальныйРегистратор.DivisionalQuantity = 0;
ФискальныйРегистратор.Numerator = 1;
ФискальныйРегистратор.Denominator = 1;
Рез = ФискальныйРегистратор.FNCheckItemBarcode2();

Делается в момент добавления каждой марки в чек.
Потом, после отработки проверки по каждой марке, выполняется ЗапомнитьРезПроверкиМарки()

И потом, уже при печати чека, в цикле по строкам чека, делаеся так:

ФискальныйРегистратор.BarCode = КТН;
Рез = ФискальныйРегистратор.FNSendItemBarcode();

Ничего ни откуда не вычитывается(я имею в виду результат проверки) - он и так там(в ФН) есть, и ККТ его сам получает из сохраненного.в ФН.

Далее идет просто закрытие чека, стандартно:
Рез = ФискальныйРегистратор.FNCloseCheckEx();

Собственно и все... Все работает правильно, в ОФД попадает как должно, в ЧЗ все "зелененькое", никаких "тормозов" при закрытии нет. На проверке, конечно есть подтормаживания от 0.5 секунды на каждую марку при сканировании, до полной остановки и запроса согласия покупателя(если например связи нет), а потом, чек с комплектом колес(4 шины с марками), печатается уже мгновенно.

PS Да, здесь нет никакой очереди, из нескольких рабочих мест на один ККТ, но, в моей задаче этого и не требовалось... ИМХО эта классическая схема, ТС можно попробовать ее реализовать, а дальше уже можно извращаться с огчерядями, добавлением второй проверки по РР, и т.п..
11.08.2024 10:43
Цитата:
MWWRuza Делается в момент добавления каждой марки в чек.
Здесь, под "чек", имеется в виду сам документ в программе, а не чек в ККТ...
11.08.2024 11:55
Похоже со Штрихом никто из присутствующих либо не работает, либо оборот по маркировкам слабенький, поэтому задержек нет...

И да, естественно ответ по "РР" (curl), полученный сразу после сканирования, храню в своей базе, а где его еще хранить? (чтобы потом передать)

И да, естественно, я не вывожу сам М+ (М-), их сам Штрих выводит, если включено в настройках Штриха...
И по умолчанию он сейчас их и не выводит (а может настройщики ФР сами отключают)

Расписал же выше построчно 4 команды по каждой позиции, для маркированного, почитайте внимательно...
Если коротко:
1) Сама продажа
2) Единицы измерения - если надо, для дробного (для разливного пива, например)
3) Привязка кода маркировки к данной продаже
4) Передача ответа от проверки (РР, curl) 4 тэга для данного кода маркировки.

И в личном кабинете во всех чеках М+ на маркированном...

Все у меня правильно сделано и все работает, но задержки есть,
по одной позиции может и небольшие, 0.3 - 2 сек, именно пока
выполняются эти 4 команды.

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

Позиции без маркировки - задержки практически нет.

P.S. Практика - критерий истины. После тестов отпишусь...
11.08.2024 11:59
P.S.S Возможно у этого клиента ОФД не самый шустрый, но мне была поставлена задача,
убрать задержки без смены ОФД. Вот ее и решаю...
11.08.2024 12:24
Цитата:
MWWRuza Возможно... То, что я привел выше - это выдержки из ИП для Спарк-130... Что было под рукой... А видение всего процесса его разработчиками(программисти от ККС), иногда.... Ээээ... не всегда совпадает с общепринятым.

Ради интереса, покопал одну из своих конфигураций под Штрих, дорабатывал давно, как только ФФД-1.2 появился... Там "колесья"(шины), пропади они пропадом... Хорошо хоть, что пока никакого РР по ним не требуется...
Там тоже есть функция сохранения результатов проверки марок:

Процедура ЗапомнитьРезПроверкиМарки()
ФискальныйРегистратор.Password = глПользователь.ПарольККТ;
Рез = ФискальныйРегистратор.FNAcceptMarkingCode();
КонецПроцедуры

Сама проверка делается так:

ФискальныйРегистратор.BarCode = ШК;
ФискальныйРегистратор.ItemStatus = 1;
ФискальныйРегистратор.CheckItemMode = 0;
ФискальныйРегистратор.DivisionalQuantity = 0;
ФискальныйРегистратор.Numerator = 1;
ФискальныйРегистратор.Denominator = 1;
Рез = ФискальныйРегистратор.FNCheckItemBarcode2();

Делается в момент добавления каждой марки в чек.
Потом, после отработки проверки по каждой марке, выполняется ЗапомнитьРезПроверкиМарки()

И потом, уже при печати чека, в цикле по строкам чека, делаеся так:

ФискальныйРегистратор.BarCode = КТН;
Рез = ФискальныйРегистратор.FNSendItemBarcode();

Ничего ни откуда не вычитывается(я имею в виду результат проверки) - он и так там(в ФН) есть, и ККТ его сам получает из сохраненного.в ФН.

Далее идет просто закрытие чека, стандартно:
Рез = ФискальныйРегистратор.FNCloseCheckEx();

Собственно и все... Все работает правильно, в ОФД попадает как должно, в ЧЗ все "зелененькое", никаких "тормозов" при закрытии нет. На проверке, конечно есть подтормаживания от 0.5 секунды на каждую марку при сканировании, до полной остановки и запроса согласия покупателя(если например связи нет), а потом, чек с комплектом колес(4 шины с марками), печатается уже мгновенно.

PS Да, здесь нет никакой очереди, из нескольких рабочих мест на один ККТ, но, в моей задаче этого и не требовалось... ИМХО эта классическая схема, ТС можно попробовать ее реализовать, а дальше уже можно извращаться с огчерядями, добавлением второй проверки по РР, и т.п..
AcceptMarkingCode не просто сохраняет результат проверки, он еще отмечает продажу (возврат) на сервере ОИСМ. Во всяком случае, я так это понимаю. Для разных типов ккм это все делается несколько по разному. Для атолов используется явная передача результата проверки перед регистрацией строки чека. В пиритах специальная команда. В штрихах неявно.
11.08.2024 12:25
P.S.S.S Проверка маркировки на этапе сканирования, он "РР", он же "через curl" никак не связана фискалом, открыта смена или нет, вообще пофигу...

У меня такая проверка реализована и для товароведов, чтобы заранее, например, при приходе, выборочно проверить товар на корректность маркировки, не истек ли срок годности, в том числе, для молочки...
Часовой пояс GMT +3, время: 14:14.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.