Взять кассу

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

Взять кассу

Сообщение finsoftrz »

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

Взять кассу

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

Столкнулся с тем, что проверка тоговой маркировки может тупо зависать.
Т.е. просто нет ответа сервиса и всё. Потом начинает работать, но осадок остаётся. :(
Добавили принудительный выход из проверки - по существующему примеру:

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

!===================================================================================
!
! Проверка марок ффд 1.2
!
FsKKMAtol.TestMarks  FUNCTION (BYTE Reg) 
....
         ! Передать в сервис КМ на проверку
         if libfptr_begin_marking_code_validation(SELF.fptr)=LIBFPTR_ERROR
            loc:ok=0
            SELF.GetError 
            break
         end 
         
         ! Ожидаем ответ сервиса проверки КМ
         loc:numCycle=1
         loop 
            sleep(400)
            if libfptr_get_marking_code_validation_status(SELF.fptr)=LIBFPTR_ERROR
               loc:ok=0
               SELF.GetError 
               break
            end
            ok#=SELF.GetParamBool(LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY)
            if ok#=1
               break
            end
            loc:numCycle+=1
            ?String2{prop:text}='Попытка: ' & loc:numCycle
            display
            
            ! --- ПРИНУДИТЕЛЬНЫЙ ВЫХОД ИЗ ПРОВЕРКИ КМ
            If loc:numCycle > 20  ! Если 8 сек. нет ответа сервиса
               libfptr_cancel_marking_code_validation(SELF.fptr)
               Break
            end   
            ! ---
         end
...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Взять кассу

Сообщение finsoftrz »

Игорь, у вас не встал вопрос о повторных продажах марок? У нас предупреждение прислали по паре магазинов, где больше одного кассового прохода (на одной кассе повторная продажа изначально блокировалась). Грозились штрафовать 150-300 тыр. Конечно, это не законно, но бодаться с чиновниками никто не хочет. Пришлось делать сервис проверок дублей, общий для всех касс в магазине. Пока вроде речь идёт в рамках одного магазина. Не хотелось бы переключать на общий для всей сети, это серьёзная точка отказа. Смотрят, как я понял, процентное соотношение повторных продаж. То есть некоторое количество допускают, так как полностью исключить технически проблематично. То есть чиновникам дана команда фас, видимо, некоторые производители начали скрывать серый товар нанесением одинаковой маркировки.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

Пока нет. Как бы повторную продажу марок должен отвергать ОФД (Честный Знак) для ФФД 1.2.
По той же самой причине и технологии, что и эквайринг отвергает списание отсутствующих грошей с карты.

Если нет связи - марка должня проверяться на корректность по ИСМ и печатать в чеке нейтральное [M] ...
или вообще без символа марки. И некоторые ларьки так и продают - вручную добавляя [M+] к наименованию в чек.
Вот за это наказывают - т.к. это прямая фальсификация торговой маркировки.

Я пробовал пробивать в песочнице Первого ОФД стразу две марки: первая прошла [M+], вторая [M-] - что верно.
У нас есть проверка серийных номеров марок на уникальность внутри одной БД - но это скорей защита от
ошибок продавцов, чем какой-то фискальный контроль ...

И предположим ООО "Ашот и сыновья" понаклеили одинаковых марок и товар разошёлся по магазинам.
Контроль только внутри Вашей торговой сети ничего не даст - марка могла выбыть в другом городе ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Взять кассу

Сообщение finsoftrz »

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

По последним тестам в конце августа статус марки при попытке продаж на разных кассах возвращался 15, то есть м+. Раньше действительно статус изменялся.
С м- продажа законом не запрещается, на усмотрение покупателя. То есть повторная продажа марки никак не блокируется честным знаком.
Вначале я так и сделал, ввёл настройку для запрета продажи марок, не прошедших контроль. Но практически сразу пришлось отключить. Сервис очень часто становился недоступным.
Как обоснование своего требования, чиновники ссылаются на постановление правительства о торговле маркированными товарами, в котором оговаривается обязательность маркировки, но ничего нет о неверно нанесённыой маркировке.
По повторным продажам в кабинете честного знака есть специальный отчёт, где выводится статистика в разрезе товаров, магазинов и в целом по юрлицу. Мне его присылали. Там как раз присутствует количество и процент повторных продаж. Разбор полётов выявил в магазинах, по которым пришло предупреждение, достаточно частые повторные продажи на разных кассах. Примерно 1 марка в течении 2-3 дней. То ли это кассиры что-то химичат, то ли действительно маркировка повторная. В другом магазине, по которому предупреждения не было, повторные продажи на разных кассах тоже были, но гораздо реже, 1-2 марки за месяц в среднем.
Предупреждение касалось и табачных, и молочки.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Взять кассу

Сообщение finsoftrz »

Ещё прошла информация, что в Московской области налоговики разослали требование, что время на ккм не должно отличаться более 5 мин от реального. Если кто не доглядел, то грозят серьёзными штрафами. У нас пока такого не приходило.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Взять кассу

Сообщение finsoftrz »

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

Взять кассу

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

finsoftrz писал(а): 21 Сентябрь 2022, 9:34 что время на ккм не должно отличаться более 5 мин от реального.
Не правильное время - затрудняет сверку чеков с ОФД.
Менять время можно только при закрытой смене.
У нас есть опция - при закрытии смены синхронизировать время.
Последний раз редактировалось Игорь Столяров 21 Сентябрь 2022, 20:09, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4550
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Взять кассу

Сообщение finsoftrz »

Игорь Столяров писал(а): 21 Сентябрь 2022, 18:42
finsoftrz писал(а): 21 Сентябрь 2022, 9:34 что время на ккм не должно отличаться более 5 мин от реального.
Неправильное время - затрудняет сверку чеков с ОФД.
Менять время можно только при закрытой смене.
У нас есть опция - при закрытии смены синхронизировать время.
С компьютером? А если на нем тоже не точно? Я при запуске кассовой программы вывожу запрос, если разница больше 5 мин, компьютер с ккм или наоборот. Сам кассир не может. Раньше работу блокировало, потом прогнули, чтобы не блокировать. Надо будет вернуть блокировку под это требование.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

finsoftrz писал(а): 21 Сентябрь 2022, 18:52 С компьютером? А если на нем тоже не точно?
Ну в Windows работает синхронизация времени по серверу ...
В принципе можно делать её и самому - в библиотке Catalyst Tools есть методы,
мы когда-то давно их использовали ... :)

1566284473_2019-08-20_092848.png
1566284473_2019-08-20_092848.png (4.95 КБ) 1981 просмотр
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Взять кассу

Сообщение Admin »

Для примера у нас код из 31 символа
0104607091302462215cOt-C93jtEJ
Сканер на компорте, т.е. никакие символы не теряются.
Передаю в товар. Получаю "Некорректный код маркировки"
Пробовал прогонять через

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

  If (Len(Marking_) > 30) and (Sub(xMarking_,01,02) = '01') and (Sub(xMarking_,17,02) = '21')  ! Без GS - дополняем
     xMarking_ = '01' & Sub(xMarking_,03,14) & '21' & Sub(xMarking_,19,13) & Chr(29) &  Sub(xMarking_,32,Len(Clip(xMarking_)) - 31)
  end
Результат тот же.

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

 [FiscalPrinter] > LIBFPTR_PARAM_COMMODITY_NAME (65631) = "Тестовый товар"                                                                          
 [FiscalPrinter] > LIBFPTR_PARAM_PRICE (65632) = 10.01                                                                                              
 [FiscalPrinter] > LIBFPTR_PARAM_QUANTITY (65633) = 1                                                                                               
 [FiscalPrinter] > LIBFPTR_PARAM_TAX_TYPE (65569) = 7                                                                                               
 [FiscalPrinter] > LIBFPTR_PARAM_DEPARTMENT (65568) = 0                                                                                             
 [FiscalPrinter] > LIBFPTR_PARAM_TAX_MODE (65571) = 0                                                                                               
 [FiscalPrinter] > 1212 (1212) = 1                                                                                                                  
 [FiscalPrinter] > 1214 (1214) = 4                                                                                                                  
 [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE_STATUS (65846) = 3                                                                                    
 [FiscalPrinter] > LIBFPTR_PARAM_MARKING_PROCESSING_MODE (65852) = 0                                                                                
 [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE (65760) = 30 31 30 34 36 30 37 30 39 31 33 30 32 34 36 32 32 31 35 63 4F 74 2D 43 1D 39 33 6A 74 45 4A
 [FiscalPrinter] libfptr_registration()                                                                                                             
 [FiscalPrinter] output > 34                                                                                                                        
 [Transport] send fiscal (24) 24 40 33 34 (4 bytes total)                                                                                           
 [Transport] recv fiscal (24) 24 30 30 34 3B 34 3B 34 3B 32 36 33 3B (13 bytes total)                                                               
 [FiscalPrinter] input  < 4;4;4;263;                                                                                                                
 [FiscalPrinter] Чтение таблицы КМ (0 элементов)                                                                                                    
 [FiscalPrinter] Объекту 0x004BC1C0 присвоен код ошибки 409 [Некорректный код маркировки]                                                           
 [FiscalPrinter] Завершение выполнения потока     MON:00000EB0                                                                                      
Куда копать? непонятно.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

Admin писал(а): 22 Сентябрь 2022, 8:17 Куда копать? непонятно.
Вы будите смеяться - но копать в сторону описания марок. :facepalm:

1. Это марка молочной продукции и в ней 30 символов, а не 31.

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

0104607091
302462215c
Ot-C93jtEJ
2. Марки - они разные (зачем так сделано - не понятно).
И парсить их нужно по разному.
Я же привёл концептуальный пример, а не панацею ... :wink:

3. Конкретно по молочной продукции вот так. Проверьте пожалуйста.

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

  ! Молочная продукция
  elsIf (Len(Clip(xMarking_)) =  30) and (Sub(xMarking_,01,02) = '01') and (Sub(xMarking_,17,02) = '21') and |
                                         (Sub(xMarking_,25,02) = '93')

     Loc:xResult = '01' & Sub(xMarking_,03,14)             & |  ! GTIN
                   '21' & Sub(xMarking_,19,06) & Chr(29)   & |  ! Код идентификации экземпляра товара
                   '93' & Sub(xMarking_,27, 4)                  ! Крипто-информация
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Взять кассу

Сообщение Admin »

Игорь Столяров писал(а): 22 Сентябрь 2022, 9:22 Вы будите смеяться - но копать в сторону описания марок.
Понятно. Спасибо.
Игорь Столяров писал(а): 22 Сентябрь 2022, 9:22 1. Это марка молочной продукции и в ней 30 символов, а не 31.
Сделал.

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

  LOC:Str = '0104607091302462215cOt-C93jtEJ'
  G.ScanCodeDump = LOC:Str
  IF (LEN(CLIP(LOC:Str)) =  30) AND (SUB(LOC:Str,01,02) = '01') AND (SUB(LOC:Str,17,02) = '21') AND (SUB(LOC:Str,25,02) = '93')
    G.ScanCodeDump = '01' & Sub(LOC:Str,03,14)             & |  ! GTIN
                     '21' & Sub(LOC:Str,19,06) & Chr(29)   & |  ! Код идентификации экземпляра товара
                     '93' & Sub(LOC:Str,27, 4)                  ! Крипто-информация  
  END
Как-то не помогло. Все равно пишет

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

2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE_STATUS (65846) = 3
2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [FiscalPrinter] > LIBFPTR_PARAM_MARKING_PROCESSING_MODE (65852) = 0
2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [FiscalPrinter] > LIBFPTR_PARAM_MARKING_CODE (65760) = 30 31 30 34 36 30 37 30 39 31 33 30 32 34 36 32 32 31 35 63 4F 74 2D 43 1D 39 33 6A 74 45 4A
2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [FiscalPrinter] libfptr_registration() 
2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [FiscalPrinter] output > 34
2022.09.22 16:37:34.815 T:      T:00003D1C INFO  [Transport] send fiscal (24) 24 40 33 34 (4 bytes total)
2022.09.22 16:37:34.816 T:      T:00003D1C INFO  [Transport] recv fiscal (24) 24 30 30 34 3B 34 3B 34 3B 32 36 33 3B (13 bytes total)
2022.09.22 16:37:34.816 T:      T:00003D1C INFO  [FiscalPrinter] input  < 4;4;4;263;
2022.09.22 16:37:34.816 T:      T:00003D1C INFO  [FiscalPrinter] Чтение таблицы КМ (0 элементов)
2022.09.22 16:37:34.816 T:      T:00003D1C ERROR [FiscalPrinter] Объекту 0x0086A9D0 присвоен код ошибки 409 [Некорректный код маркировки]
2022.09.22 16:37:35.486 T:    MON:00000918 INFO  [FiscalPrinter] Завершение выполнения потока     MON:00000918
2022.09.22 16:37:36.304 T:      T:00003D1C INFO  [FiscalPrinter] libfptr_cancel_receipt() 
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

Проверил - у меня тоже самое. Точно могу сказать, что такой ошибки не было.
У Вас тест и выбытие марки перед регистрацией строки чека выполняется успешно ?

У меня где-то два дня проблема с тестовой площадкой 1-ОФД - тест марок не проходит,
поэтому полноценной проверки для АТОЛ сделать сейчас могу.

Та самая кодировка марки для ШТРИХ-М у клиента проходит без проблем.

1.jpg
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

Меня смущает первая строка лога:

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

2022.09.22 16:37:34.816 T:      T:00003D1C INFO  [FiscalPrinter] Чтение таблицы КМ (0 элементов)
2022.09.22 16:37:34.816 T:      T:00003D1C ERROR [FiscalPrinter] Объекту 0x0086A9D0 присвоен код ошибки 409 [Некорректный код маркировки]
Т.е. нет списка выбывающих по чеку марок. Однозначно проблема не в кодировании марки.
Сейчас с той же ошибкой не проходят и беспроблемные всегда сигареты, марка которых передаётся без преобразования.
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить