Взять кассу

Сканеры, кассы, ККТ и т.д.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 236
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Взять кассу

Сообщение SergioRaguzini »

finsoftrz писал(а): 25 Март 2024, 8:34 ...надо в кассовом ПО выполнить проверку набора реквизитов марки в ЧЗ через http запрос. В определенных случаях запретить продажу. При успешном прохождении проверки передать в ккм набор реквизитов (несколько тегов), включая id запроса на проверку и временной штамп этого запроса.
Привет Всем!
нашел в интернете рекомендации https://xn--80ajghhoc2aj1c8b.xn--p1ai/u ... 0%BD_2.pdf

а вот где бы глянуть пример, тут пока, к сожалению, ничего не нашел...
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Если кратко, ситуация такая.
С 01.04 вводят разрешительный режим для табачных и разливного пива. Далее постепенно и для других групп маркированных товаров.
При сканировании марки на кассе надо проверить ее в ЧЗ (http запрос), сохранить ид и время запроса (которые вернутся из ЧЗ в ответ) и передать их на ккм в составном теге. Токен для http запроса пока фиксированный для фирмы (ИНН) на год, его проще всего скачать в личном кабинете ЧЗ. Потом хотят ввести криптование, что потребует установок на кассах сертификатов и крипт-про (или как-то выкручиваться со своим промежуточным сервисом).
Http запрос надо отправлять не на фиксированный адрес, а использовать набор адресов. Вначале надо запросить список актуальных адресов, для каждого адреса сделать проверку доступности, замерить время ответа. Отсортировать эти адреса, начиная с минимального времени отклика и сохранить в программе для последующей проверки марок. Получать заново список адресов надо примерно раз в 6 часов, так как этот список меняется.
Если при попытке проверки марки возвращается ответ, что сервер перегружен, то надо на 15 минут исключить использование этого адреса. Если достучаться до первого по приоритету адреса не удается, то переходим к следующему и т.д.
Надо также предусмотреть режим аварийного отключения проверок совсем. Разумеется, перестраховываются, иначе могут встать продажи в магазинах по всей стране.
После 01.04 грозят штрафами тому, кто не использует разрешительный режим на кассах. По практике, после ввода какого-нибудь новшества 3 месяца дают на запуск. Скорее всего, нагнетают, чтобы народ не расслаблялся.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Кто будет бодаться с передачей составного тега 1260 на штрихах. У них этот тег формируется на стороне ккм, а передавать надо по отдельности вложенные теги 1262, 1263, 1264, 1265 через FNSendTagOperation (после FNOperation).
На штрихах еще одна проблема есть, может, кто сталкивался. Передаем тег 1262 стандартно как строку:

Код: Выделить всё

          SELF.Contr{'password'}         = SELF.Pswd
          SELF.Contr{'TagType'}=7
          SELF.Contr{'TagNumber'}=1262
          SELF.Contr{'TagValueStr'}='030'
          SELF.Contr{'FNSendTagOperation()'}
А в ОФД приходит значение 30, первый ноль кто-то обрезается. Прошивка, драйвер или кларион. Соответственно, в ОФД светится, что чек с ошибкой.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Ещё такой момент. С 01.04 должен перестать работать адрес сервиса, через который проверяем просрочку. Вместо него вводится пул адресов, про который я написал выше. Сразу с 01.04 может и не отключат, но иметь надо ввиду, что нововведения касаются также и продаж молочки.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

Сообщение Игорь Столяров »

А можно ссылочку где почитать про пул адресов ? Спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Несколько постов выше Сергей дал.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

Сообщение Игорь Столяров »

Понятно. Т.е. кроме списка изменений с несколькими пунктами, официальных данных нет ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

В конце года было постановление по поводу разрешительного режима продаж с указанием сроков по разным товарным группам. Проще всего погуглить. В сети есть и записи вебинаров разных производителей софта.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 236
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Взять кассу

Сообщение SergioRaguzini »

finsoftrz писал(а): 29 Март 2024, 8:26 Несколько постов выше Сергей дал.
Привет Всем!
Информацию собирал читая самые разные форумы - при передаче марки (в частности "разливного пива") без передачи составного тега 1262-1265, даже если все остальные параметры передаваемой маркировки верные и без отключения(!) проверки марки (опять же это именно для "разливного пива") в ЧЗ не происходит списание. +Важно дату в этом составном теге передавать с типом строковым (хотя не совсем логично, новерное) - иначе тоже проблема
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

А со штрихами кто-нибудь работает?
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Собственно, хотел спросить, фантасмагория какая-то. Делается (на штрихах) вроде стандартная установка реквизита через ole интерфейс:

Код: Выделить всё

      SELF.Contr{'TagNumber'}=1262
      SELF.Contr{'TagType'}=7
      SELF.Contr{'TagValueStr'}='030'
      SELF.Contr{'FNSendTagOperation()'}
А в результате уходит значение не '030', а '30'. Как-будто происходит преобразование строки в число. Думал, что ошибка в драйвере или в прошивке, но в техподдержке Штриха сказали, что у них аналогичный код (в другом ЯП) отрабатывает корректно, и это скорее кларионовский компилятор преобразует строку в число. С чего бы это он будет такое преобразование делать, но а вдруг... Проверил, другие строки с числом, начинающимся с 0, тоже обрезаются. Если есть не числовой символ, то передается корректно.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

В общем, нашел путь обхода через FNSendTLVOperation. Но причина обрезания лидирующего нуля так и осталась непонятной. Неужели правда кларин компилятор при работе через ole интерфейс такое вытворяет?

Код: Выделить всё

      loc:tegNum=SELF.ShtrihReverseBytes(ShortToHex(1262,0))
      loc:teg=FsStrToHex('030')
      loc:tegDl=SELF.ShtrihReverseBytes(ShortToHex(int(len(clip(loc:teg))/2),0))
      SELF.Contr{'password'}   = SELF.Pswd
      SELF.Contr{'TLVDataHex'} = clip(loc:tegNum) & clip(loc:tegDl) & clip(loc:teg)
      SELF.Contr{'FNSendTLVOperation'}      
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

Сообщение Игорь Столяров »

finsoftrz писал(а): 04 Апрель 2024, 16:48 Неужели правда кларин компилятор при работе через ole интерфейс такое вытворяет?
Может ещё зависить и от версии драйвера ... У меня сейчас штриха нет, но насколько я помню,
ни при печати штрих-кодов, ни в текстовых строках лидирующие не съедались. Попробуйте:

Код: Выделить всё

  Object{'StringForPrinting'} = '030'
  или
  Object{'TagValueStr'}='0' & '3' & '0'  ! По аналогии как неявное преобразование типов данных  W &= SYSTEM{PROP:TARGET} + 0
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Взять кассу

Сообщение finsoftrz »

Да вот я тоже про драйвер/прошивку сразу подумал. Но в техподдержки штриха сказали, что я единственный, кто с такой проблемой обратился. :-)
Может еще от версии кларионовского компилятора зависеть, я на это напоролся на с63.
Кстати, техподдержка у штриха сработала очень хорошо. Я им на сайте написал, буквально через минуту меня прозвонили по телефону и дальше вполне конструктивный диалог по электронной почте. Видно было, что попал на вполне адекватных ребят.
C6/C11, ШВС, tps/btrieve.
Ответить