Взять кассу
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3762
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 6 раз
Взять кассу
Речь про сеть. На чековую ленту уходит достаточно приличная сумма, есть смысл заморачиваться. Мелких магазинов, если речь про продуктовку, осталось не так много. У нас в регионе схлопывается самая крупная по количеству магазинов местная сеть. Было порядка 70 магазинов. Осталось несколько, они тоже уже вряд ли выживут. Работали изолировано, как отдельные магазины, без централизованного управления. Подбирай за ними по дешёвке. Но при текущей ситуации, когда покупательная способность населения сильно просела и перспективы в экономике туманны, вкладываться в расширение такого бизнеса опасно.
C6/C11, ШВС, tps/btrieve.
- SergioRaguzini
- Активист
- Сообщения: 190
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
Взять кассу
Привет Всем!
Столкнулся с необходимостью передавать маркировку молочки и воды в АТОЛ (до этого использовал маркировку только в ШТРИХ). В качестве руководства и примеров использовал посты форумчан в данной теме, + нашел в интернете эту (https://infostart.ru/1c/articles/156386 ... j158846974) статью с примером для 1С.
Столкнулся с необходимостью передавать маркировку молочки и воды в АТОЛ (до этого использовал маркировку только в ШТРИХ). В качестве руководства и примеров использовал посты форумчан в данной теме, + нашел в интернете эту (https://infostart.ru/1c/articles/156386 ... j158846974) статью с примером для 1С.
Последний раз редактировалось SergioRaguzini 02 Февраль 2023, 15:57, всего редактировалось 1 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6551
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 21 раз
Взять кассу
Честно дочитал до конца.
Я с радостью проверил бы Ваш вопрос - но формализуйте проблему так, что бы его можно было воспроизвести ...
Я с радостью проверил бы Ваш вопрос - но формализуйте проблему так, что бы его можно было воспроизвести ...
Приносим Вам свои неудобства !
- SergioRaguzini
- Активист
- Сообщения: 190
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
Взять кассу
Игорь Столяров писал(а): ↑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 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6551
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 21 раз
Взять кассу
Admin всегда прав, т.к. он этот класс и породил. Я скромно с ним согласен.

Что бы не закакивать форум прикрепил полный лог пробития чека с проверкой Вашей марки - посмотрите пожалуйста.
Код работает тот же, что мы не раз обсуждали на форуме. Ничего военного - проверяйте формирование тега с маркой.
Последний раз редактировалось Игорь Столяров 01 Февраль 2023, 22:23, всего редактировалось 1 раз.
Приносим Вам свои неудобства !
- SergioRaguzini
- Активист
- Сообщения: 190
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
Взять кассу
Да, похоже где-то я не правильно подготвавливаю КМ...Игорь Столяров писал(а): ↑01 Февраль 2023, 14:08 прикрепил полный лог пробития чека с проверкой Вашей марки
Спасибо
- Игорь Столяров
- Ветеран движения
- Сообщения: 6551
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 21 раз
Взять кассу
Пожалуйста ! Я бы начал с обновления драйвера АТОЛ10 и прошивки ККТ до актуальных.
Просто потому что это тупо и просто, а результат может удивить !
Просто потому что это тупо и просто, а результат может удивить !

Приносим Вам свои неудобства !
- Admin
- Администратор
- Сообщения: 3914
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 13 раз
- Поблагодарили: 12 раз
- Контактная информация:
Взять кассу
Вы его как строку передаете а нужно как набор байт.SergioRaguzini писал(а): ↑01 Февраль 2023, 15:12 Да, похоже где-то я не правильно подготвавливаю КМ...
Код: Выделить всё
Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3914
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 13 раз
- Поблагодарили: 12 раз
- Контактная информация:
Взять кассу
Это прям обязательно. И драйвер наверное не меньше чем 10.9.2.6Игорь Столяров писал(а): ↑01 Февраль 2023, 15:19 Пожалуйста ! Я бы начал с обновления драйвера АТОЛ10 и прошивки ККТ до актуальных.
Просто потому что это тупо и просто, а результат может удивить !
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- SergioRaguzini
- Активист
- Сообщения: 190
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
Взять кассу
Просмотрел еще раз форум, понял чего не хватало.Admin писал(а): ↑01 Февраль 2023, 16:08 Вы его как строку передаете а нужно как набор байт.на форуме все естьКод: Выделить всё
Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
Спасибо Всем откликнувшимся!

- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1321
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 4 раза
- Контактная информация:
Взять кассу
Мне к сожалению тоже приходится въезжать в эту тему, как бы я этого не хотел избежать
Можно ли программно проверить корректность считывания сканером марки?
Конкретно меня интересуют лекарства
Там есть "хвост" в 44 символа, некая криптоподпись, что там находится и можно ли расшифровать?
Сканер в RDP чудит, регистр символов меняет, плюс надо следить за английской раскладкой, хочется побольше "защит от дурака" встроить
Можно ли программно проверить корректность считывания сканером марки?
Конкретно меня интересуют лекарства
Там есть "хвост" в 44 символа, некая криптоподпись, что там находится и можно ли расшифровать?
Сканер в RDP чудит, регистр символов меняет, плюс надо следить за английской раскладкой, хочется побольше "защит от дурака" встроить
- Игорь Столяров
- Ветеран движения
- Сообщения: 6551
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 21 раз
Взять кассу
Давайте пожалуйста - котлеты отдельно, мухи - отдельно.

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
- ✯ Ветеран ✯
- Сообщения: 1321
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 4 раза
- Контактная информация:
Взять кассу
Но это не значит, что она правильно передалась дальше! Локально все хорошо сканируется, но при работе в RDP большие буквы меняются на маленькие (не все, рандомно!), как проверить корректность - хз... Есть конечно решение поменять сканер, поменять HID на COM, еще что-либо, но как "защититься от дурака" на складе, хотя бы сказать ему - ерунду сосканировал, - поменяй сканер, поменяй режим, позови фиксика...Игорь Столяров писал(а): ↑15 Март 2023, 9:55 1. Правильность считывания 2D штрих-кода проверяется сканером (в т.ч. и с коррекцией ошибок).
Т.е. если сканер считал марку - значит она корректна и Вы получили строку закодированную в коде.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6551
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 21 раз
Взять кассу
Мистика какая-то невероятная.

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