Взять кассу

Сканеры, кассы, ККТ и т.д.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Взять кассу

Сообщение Игорь Столяров » 05 Ноябрь 2018, 18:30

finsoftrz писал(а):
05 Ноябрь 2018, 17:52
По логу у Штрихов возврат ошибки "нет связи".
1. Поговорите на эту тему с любым мастером сервисного центра. После того, как он выматерится, Вы узнаете,
что у Штрихов "больное" место - это кабели. Точнее их качество. Первым делом при ошибке "нет связи" меняется кабель.
Как правило - это решает проблему. Как мне объясняли - там какая-то беда с качеством контактной группы (Китай ?).

2. Архитектура Штриха изначально (очень давно) строилась под медленный COM порт и особо не изменилась (в отличии от АТОЛ).
Поэтому желательно не перегружать буфер печати, т.е. не гнать в него данные потоком, пока есть ещё не распечатанные.
В общем-то это описано в документации, просто обычно это место пропускают и упрощают код … ;)
Реализовать сказанное выше можно по разному, например вставляем после КАЖДОЙ команды печати вызов:

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

ShtrihM_WaitPrint    PROCEDURE  (Object_)                  ! Declare Procedure
Loc:RetValue         BYTE(False)
  CODE
  
  Loop
     Case Int(Object_{'WaitForPrinting'})
     Of 0
        Break
     Of -34
        If Message(' В ККМ закончилась кассовая лента !| Вставьте новый ролик с лентой.|| Продолжить печать ?','У нас проблема !',Icon:Question,Button:Yes+Button:No,Button:Yes) <> 2
           Display
           Loc:RetValue = True    ! Выход с ошибкой
           Break
        else           
           Object_{'ContinuePrint'}           
        end
     Of -1
        Object_{'GetShortECRStatus'}
     else
        If Int(Object_{'ResultCode'})
           Message(' Ошибка: ' & Clip(Left(Object_{'ResultCodeDescription'})),'Сообщение',Icon:Exclamation,'&1. Закрыть')           
           Loc:RetValue = True    ! Выход с ошибкой
        end
        Break
     end
  end

  Return(Loc:RetValue)
Последний раз редактировалось Игорь Столяров 05 Ноябрь 2018, 18:56, всего редактировалось 1 раз.
«V» значит Вендетта !

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 877
Зарегистрирован: 06 Ноябрь 2014, 12:48

Взять кассу

Сообщение finsoftrz » 05 Ноябрь 2018, 18:53

Насчет китайских кабелей я в курсе, про это и писал. Возможно, потеря связи и вход в режим необходимости продолжения печати - разные ситуации. Пишут, что для продолжения печати на штрихах можно просто нажать кнопку протяжки ленты на ккм...
Рязань решает.

deesoft
Прохожий
Сообщения: 2
Зарегистрирован: 05 Ноябрь 2018, 18:49

Взять кассу

Сообщение deesoft » 05 Ноябрь 2018, 18:58

Коллеги со Штрихом под ФЗ-54 ФДД 1,05 кто нибудь разобрался как агенские тэги передавать ?
в официальной документации тишина.

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Взять кассу

Сообщение Игорь Столяров » 05 Ноябрь 2018, 18:58

finsoftrz писал(а):
05 Ноябрь 2018, 18:53
Пишут, что для продолжения печати на штрихах можно просто нажать кнопку протяжки ленты на ккм
Это как решить проблему. Но ведь мы хотим предотвратить её появление ? ;)
«V» значит Вендетта !

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

Взять кассу

Сообщение gopstop2007 » 05 Ноябрь 2018, 19:07

Бывает, что достаточно снизить скорость передачи данных по com порту, в настройках. Кабель больше играет качество - экранирование кабеля и ферриты на концах.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 877
Зарегистрирован: 06 Ноябрь 2014, 12:48

Взять кассу

Сообщение finsoftrz » 05 Ноябрь 2018, 19:18

На штрихах чек вначале регистрируется в фн и отправляется в офд (при наличии связи), а потом печатается. Если при печати сбой (кончилась или зажевалась бумага), то получаем нашу ситуацию. Чек уже зафиксирован в ккм, но не напечатан. И, как я понимаю, в программу нам вернулось, что все ок. А при попытке печати следующего чека драйвер нам возвращает ошибку, что ожидается команда продолжения печати. Вариант с WaitForPrinting выглядит правильным в этом случае. Попробую, спасибо за наводку.
Рязань решает.

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3711
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Взять кассу

Сообщение Игорь Столяров » 08 Ноябрь 2018, 10:05

finsoftrz писал(а):
05 Ноябрь 2018, 19:18
И, как я понимаю, в программу нам вернулось, что все ок.
Вот это очень неприятное место в работе с Штрих-ом при проблемах с лентой. :(
Вопрос в том, как отсекать ошибку: по закрытию чека или по его печати.

- Если по закрытию чека - то будет как Вы написали, в программу вернётся, что всё OK, но чек не напечатан.

- Если по печати чека - то вернётся ошибка, но ведь чек по факту "закрыт" и передан в ОФД.
Попытка второй раз печати чека - приведёт к его дублированию в фискальном реестре и ОФД.
«V» значит Вендетта !

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 877
Зарегистрирован: 06 Ноябрь 2014, 12:48

Взять кассу

Сообщение finsoftrz » 08 Ноябрь 2018, 14:09

Наблюдаю иногда еще такую проблему на Штрихах. Чек пробился, ушел в офд, но драйвер вернул ошибку потери связи. Программа в этом случае продажу откатывает, товар остается на экране и кассир проводит продажу повторно. Получается лишний чек в фн и офд. При закрытии смены программа делает сверку чеков в своей базе данных и фн, при обнаружении расхождения пишет в лог.
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 877
Зарегистрирован: 06 Ноябрь 2014, 12:48

Взять кассу

Сообщение finsoftrz » 13 Ноябрь 2018, 15:57

Сегодня еще одну проблемную ситуацию зарегистрировали на Штрихах. Чек из 2 строк. Почему-то вторая строка не зарегистрировалась, драйвер ошибку не вернул. Ее сумму в чеке вывел как сдачу. Деньги с покупателя взяли правильно, по кассовой программе все тоже прошло правильно. А в ОФД и на печати чек на сто рублей меньше. Произошло один раз на несколько тысяч чеков. Похоже, надо еще итоговую сумму по чеку перед фиксацией платежа сверять. Хотя не понятно, почему не вернулась ошибка, впечатление, что команда регистрации не дошла до драйвера.
Рязань решает.

Ответить