Взять кассу

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

Взять кассу

Сообщение finsoftrz »

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

Взять кассу

Сообщение SergioRaguzini »

Привет Всем!
Столкнулся с необходимостью передавать маркировку молочки и воды в АТОЛ (до этого использовал маркировку только в ШТРИХ). В качестве руководства и примеров использовал посты форумчан в данной теме, + нашел в интернете эту (https://infostart.ru/1c/articles/156386 ... j158846974) статью с примером для 1С.
Последний раз редактировалось SergioRaguzini 02 Февраль 2023, 15:57, всего редактировалось 1 раз.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

Честно дочитал до конца.
Я с радостью проверил бы Ваш вопрос - но формализуйте проблему так, что бы его можно было воспроизвести ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Взять кассу

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 01 Февраль 2023, 12:26 Честно дочитал до конца.
Я с радостью проверил бы Ваш вопрос - но формализуйте проблему так, что бы его можно было воспроизвести ...

в SELF.SetParamStr(LIBFPTR_PARAM_MARKING_CODE, подставляется значение переменной в которую записана последовательность полученная от сканера и проверенная на <GS> или еще необходимо некое преобразование?

получается, я передаю :

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

SELF.SetParamStr(LIBFPTR_PARAM_MARKING_CODE, '0104620014111842215Z'v3Y93MRwO')
правильно ли это?


Спасибо

p.s. у меня тестовый МГМ-ФН 1.2
Последний раз редактировалось SergioRaguzini 02 Февраль 2023, 15:58, всего редактировалось 1 раз.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

SergioRaguzini писал(а): 01 Февраль 2023, 12:37 а в логе Админа в этой теме:
Admin всегда прав, т.к. он этот класс и породил. Я скромно с ним согласен. ;)
Что бы не закакивать форум прикрепил полный лог пробития чека с проверкой Вашей марки - посмотрите пожалуйста.
Код работает тот же, что мы не раз обсуждали на форуме. Ничего военного - проверяйте формирование тега с маркой.
Последний раз редактировалось Игорь Столяров 01 Февраль 2023, 22:23, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Взять кассу

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 01 Февраль 2023, 14:08 прикрепил полный лог пробития чека с проверкой Вашей марки
Да, похоже где-то я не правильно подготвавливаю КМ...

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

Взять кассу

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

Пожалуйста ! Я бы начал с обновления драйвера АТОЛ10 и прошивки ККТ до актуальных.
Просто потому что это тупо и просто, а результат может удивить ! ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Взять кассу

Сообщение Admin »

SergioRaguzini писал(а): 01 Февраль 2023, 15:12 Да, похоже где-то я не правильно подготвавливаю КМ...
Вы его как строку передаете а нужно как набор байт.

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

Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
на форуме все есть
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Взять кассу

Сообщение Admin »

Игорь Столяров писал(а): 01 Февраль 2023, 15:19 Пожалуйста ! Я бы начал с обновления драйвера АТОЛ10 и прошивки ККТ до актуальных.
Просто потому что это тупо и просто, а результат может удивить !
Это прям обязательно. И драйвер наверное не меньше чем 10.9.2.6
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

Взять кассу

Сообщение SergioRaguzini »

Admin писал(а): 01 Февраль 2023, 16:08 Вы его как строку передаете а нужно как набор байт.

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

Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
на форуме все есть
Просмотрел еще раз форум, понял чего не хватало.
Спасибо Всем откликнувшимся! :ty:
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Взять кассу

Сообщение RaFaeL »

Мне к сожалению тоже приходится въезжать в эту тему, как бы я этого не хотел избежать
Можно ли программно проверить корректность считывания сканером марки?
Конкретно меня интересуют лекарства
Там есть "хвост" в 44 символа, некая криптоподпись, что там находится и можно ли расшифровать?
Сканер в RDP чудит, регистр символов меняет, плюс надо следить за английской раскладкой, хочется побольше "защит от дурака" встроить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

RaFaeL писал(а): 15 Март 2023, 9:02 проверить корректность считывания сканером марки
Давайте пожалуйста - котлеты отдельно, мухи - отдельно. ;)

1. Правильность считывания 2D штрих-кода проверяется сканером (в т.ч. и с коррекцией ошибок).
Т.е. если сканер считал марку - значит она корректна и Вы получили строку закодированную в коде.

2. Для того, расчитать криптохвост марки (а по сути её хеш) нужен алгоритм и ключ.
Первый скорее всего открытый, а второй Вам никто не даст - т.к. тогда Вы сможете генерить левые марки.

3. Я уже раз несколько показывал как мона нормализовать строку марки со сканера:

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

ConvertScanCode      PROCEDURE  (*CString xDump_)
Loc:Count            LONG
Loc:Index            LONG
Loc:FlagCapsLock     BYTE(False)
Loc:FlagLayout       BYTE(False)
Loc:CurKL            CSTRING(20)
Loc:SLAT  String('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"&''./,:;<<>?`~[]{{}@^|#$')
Loc:SRUS  String('ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯфисвуапршолдьтщзйкыегмцчняЭ?эю.бЖжБЮ,ёЁхъХЪ":/№;')
  Code
  If Band(KeyState(),1000h) then Loc:FlagCapsLock = True.  ! Нажата клавиша CapLock

  Loc:Count = GetKeyboardLayoutNameA(Loc:CurKL)
  If Loc:CurKL = '00000419' then Loc:FlagLayout   = True.  ! Включена русская раскладка клавиатуры

  If Loc:FlagCapsLock Or Loc:FlagLayout
     Loop Loc:Count = 1 to Len(Clip(xDump_))

       If Loc:FlagCapsLock  ! 1. Если включен CapsLock (ОБЯЗАТЕЛЬНО ПЕРВЫМ !!!)
          If    IsLower(xDump_[(Loc:Count)]) then xDump_[(Loc:Count)] = Upper(xDump_[(Loc:Count)])
          elsIf IsUpper(xDump_[(Loc:Count)]) then xDump_[(Loc:Count)] = Lower(xDump_[(Loc:Count)])
          end
       end

       If Loc:FlagLayout    ! 2. Только если включена русская раскладка клавиатуры
          Loc:Index = InString(xDump_[(Loc:Count)],Loc:SRUS)  ! Символ русский ?
          If InRange(Loc:Index,1,Size(Loc:SLAT)) then xDump_[(Loc:Count)] = Loc:SLAT[(Loc:Index)].
       end
     end
  end
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Взять кассу

Сообщение RaFaeL »

Игорь Столяров писал(а): 15 Март 2023, 9:55 1. Правильность считывания 2D штрих-кода проверяется сканером (в т.ч. и с коррекцией ошибок).
Т.е. если сканер считал марку - значит она корректна и Вы получили строку закодированную в коде.
Но это не значит, что она правильно передалась дальше! Локально все хорошо сканируется, но при работе в RDP большие буквы меняются на маленькие (не все, рандомно!), как проверить корректность - хз... Есть конечно решение поменять сканер, поменять HID на COM, еще что-либо, но как "защититься от дурака" на складе, хотя бы сказать ему - ерунду сосканировал, - поменяй сканер, поменяй режим, позови фиксика...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Взять кассу

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

RaFaeL писал(а): 15 Март 2023, 15:09 большие буквы меняются на маленькие (не все, рандомно!)
Мистика какая-то невероятная. :(
Либо какая-то непонятная настройка сессии, либо что-то работает на буфер одновременно со сканером.
Никаких проблем с HID нет - зайдите в любой супермаркет.

Хорошо. Гипотетически предположим, что Ваша программа как-то получила изуродованную строку марки.
Отправили её (или какаю-нибудь другую строку символов) на проверку списания через драйвер и получили отказ.
Показали отказ и отменили печать чека. Вот и вся проверка.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Взять кассу

Сообщение RaFaeL »

Игорь Столяров писал(а): 15 Март 2023, 16:50 Мистика какая-то невероятная.
Либо какая-то непонятная настройка сессии, либо что-то работает на буфер одновременно со сканером.
Никаких проблем с HID нет - зайдите в любой супермаркет.
Они там все по RDP дешевыми китайскими сканерами в разрыв клавиатуры что ли работают? Тут как выяснилось весьма много условий должно одновременно выполниться, чтобы это всё проявилось. Но я точно не один такой
https://forum.mista.ru/topic.php?id=862943
https://forum.mista.ru/topic.php?id=853319
и т.п.
Причем вот то что там предложено может помочь, а может и нет, это зависит от винды на клиенте, сервере и т.п.
Игорь Столяров писал(а): 15 Март 2023, 16:50 Отправили её (или какаю-нибудь другую строку символов) на проверку списания через драйвер и получили отказ.
Показали отказ и отменили печать чека. Вот и вся проверка.
При списании можно проверить сначала, а есть ли такое на складе, т.е. там защита будет. Товар на складе с тем, что вы отсканировали, не найден, до свидания. Но! Товар сначала надо оприходовать, затем (!) выполнить проверку марок по документу ЭДО от поставщика, так как документ в ЭДО (как мне объяснили, я ошибаюсь?) приходит позже, чем сам товар, и вот на моменте оприходования сравнивать еще не с чем!
Ответить