Страница 39 из 46

Взять кассу

Добавлено: 12 Октябрь 2022, 19:03
finsoftrz
Речь про сеть. На чековую ленту уходит достаточно приличная сумма, есть смысл заморачиваться. Мелких магазинов, если речь про продуктовку, осталось не так много. У нас в регионе схлопывается самая крупная по количеству магазинов местная сеть. Было порядка 70 магазинов. Осталось несколько, они тоже уже вряд ли выживут. Работали изолировано, как отдельные магазины, без централизованного управления. Подбирай за ними по дешёвке. Но при текущей ситуации, когда покупательная способность населения сильно просела и перспективы в экономике туманны, вкладываться в расширение такого бизнеса опасно.

Взять кассу

Добавлено: 01 Февраль 2023, 11:57
SergioRaguzini
Привет Всем!
Столкнулся с необходимостью передавать маркировку молочки и воды в АТОЛ (до этого использовал маркировку только в ШТРИХ). В качестве руководства и примеров использовал посты форумчан в данной теме, + нашел в интернете эту (https://infostart.ru/1c/articles/156386 ... j158846974) статью с примером для 1С.

Взять кассу

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

Взять кассу

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

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

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

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

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


Спасибо

p.s. у меня тестовый МГМ-ФН 1.2

Взять кассу

Добавлено: 01 Февраль 2023, 14:08
Игорь Столяров
SergioRaguzini писал(а): 01 Февраль 2023, 12:37 а в логе Админа в этой теме:
Admin всегда прав, т.к. он этот класс и породил. Я скромно с ним согласен. ;)
Что бы не закакивать форум прикрепил полный лог пробития чека с проверкой Вашей марки - посмотрите пожалуйста.
Код работает тот же, что мы не раз обсуждали на форуме. Ничего военного - проверяйте формирование тега с маркой.

Взять кассу

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

Спасибо

Взять кассу

Добавлено: 01 Февраль 2023, 15:19
Игорь Столяров
Пожалуйста ! Я бы начал с обновления драйвера АТОЛ10 и прошивки ККТ до актуальных.
Просто потому что это тупо и просто, а результат может удивить ! ;)

Взять кассу

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

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

Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
на форуме все есть

Взять кассу

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

Взять кассу

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

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

Self.SetParamBiteArray(LIBFPTR_PARAM_MARKING_CODE, QSpisok.Dump)
на форуме все есть
Просмотрел еще раз форум, понял чего не хватало.
Спасибо Всем откликнувшимся! :ty:

Взять кассу

Добавлено: 15 Март 2023, 9:02
RaFaeL
Мне к сожалению тоже приходится въезжать в эту тему, как бы я этого не хотел избежать
Можно ли программно проверить корректность считывания сканером марки?
Конкретно меня интересуют лекарства
Там есть "хвост" в 44 символа, некая криптоподпись, что там находится и можно ли расшифровать?
Сканер в RDP чудит, регистр символов меняет, плюс надо следить за английской раскладкой, хочется побольше "защит от дурака" встроить

Взять кассу

Добавлено: 15 Март 2023, 9:55
Игорь Столяров
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

Взять кассу

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

Взять кассу

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

Хорошо. Гипотетически предположим, что Ваша программа как-то получила изуродованную строку марки.
Отправили её (или какаю-нибудь другую строку символов) на проверку списания через драйвер и получили отказ.
Показали отказ и отменили печать чека. Вот и вся проверка.

Взять кассу

Добавлено: 15 Март 2023, 17:14
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 Отправили её (или какаю-нибудь другую строку символов) на проверку списания через драйвер и получили отказ.
Показали отказ и отменили печать чека. Вот и вся проверка.
При списании можно проверить сначала, а есть ли такое на складе, т.е. там защита будет. Товар на складе с тем, что вы отсканировали, не найден, до свидания. Но! Товар сначала надо оприходовать, затем (!) выполнить проверку марок по документу ЭДО от поставщика, так как документ в ЭДО (как мне объяснили, я ошибаюсь?) приходит позже, чем сам товар, и вот на моменте оприходования сравнивать еще не с чем!