ATOL драйвер 10.x

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

ATOL драйвер 10.x

Сообщение Admin »

zmi писал(а): 01 Август 2019, 12:20А кто-нибудь с признаком АГЕНТ и данными поставщика чек выводил?
Я на старом драйвере выводил.
На новом код написал как примерно должен быть но не проверял на реальном аппарате.
Некогда пока.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

ATOL драйвер 10.x

Сообщение zmi »

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

ATOL драйвер 10.x

Сообщение Admin »

zmi писал(а): 05 Август 2019, 17:37через буферную переменную
Сорян, я раньше про это хотел написать но что то забыл. Там и в примере такая метода используется.
p.s.По мне так спорное решение у них получилось с генерацией массива.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
deesoft
Прохожий
Сообщения: 3
Зарегистрирован: 05 Ноябрь 2018, 18:49

ATOL драйвер 10.x

Сообщение deesoft »

Коллеги, кто нибудь пробовал на ДТО10 через COM интерфейс добавлять в чек агентские теги. ?
Там тип данных массив байт.
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

ATOL драйвер 10.x

Сообщение zmi »

finsoftrz писал(а): 06 Июль 2019, 16:56 Кроме работы через их dll напрямую, можно еще посмотреть на web сервер и vbscript. Как я понял, мэйнстрим у них это web сервер. Некая унификация, ставишь с ккм и можешь бить чеки откуда угодно через http запросы, передавая задания в формате json... Будем смотреть и думать... :-)
Вот так-так... Не успел порадоваться непростому внедрению печати чека, как поступила новая задача - нужна сетевая версия, чтобы кучка пользователей могла печатать на один аппарат, поскольку не хотят тратиться ни на сами аппараты, ни на накопители для них. Чешу репу, пытаясь понять, с какого боку подойти к WEB-серверу и json. Для начала хотелось бы понять, что это такое вообще этот "WEB-сервер", для работы с которым требуется "требуется установленная Java версии 1.8 и выше" (такое исчерпывающее описание). Где взять, как настроить.
Может, кто уже разбирался с этой веткой работы драйвера. Подскажите, плиз, чего-где посмотреть.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

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

zmi писал(а): 03 Сентябрь 2019, 12:09Подскажите, плиз, чего-где посмотреть.
Может быть зайти на вопрос с другой стороны ?
На компьютере с подключенным ФР крутится программка, которая проверяет некую папку на наличие файлов и печатает из неё чеки.
Распечатанные чеки записывает в список - что-то вроде протокола.
Все остальные компьютеры (по локальной сети, через Web-запросы и т.д.) просто скидывают в эту папку чеки в виде
файлов, например в формате JSON или XML. Всё. Дёшево и сердито. Называется принт-сервер кассовых чеков. :)
Последний раз редактировалось Игорь Столяров 03 Сентябрь 2019, 15:18, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

ATOL драйвер 10.x

Сообщение finsoftrz »

У меня аналогичная схема несколько лет работает. Выводят чеки с терминального сервера по разным фирмам и видам деятельности. Только не журнал ведется, а файлы чеков после печати переносятся в специальную папку архива. А вызывающая программа смотрит файл квитанции, забирает из него номер чека и сохраняет в исходном документе (кассовом ордере). У пользователя после отправки чека на печать прогрессор, пока не получит квитанцию. Просто, как капуста.
C6/C11, ШВС, tps/btrieve.
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

ATOL драйвер 10.x

Сообщение zmi »

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

ATOL драйвер 10.x

Сообщение Admin »

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

ATOL драйвер 10.x

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

А можно я спрошу детский вопрос ? Иначе тупик какой-то.
Вот эти строки в примере, на что вообще влияют ?

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

!  SELF.SetParam(LIBFPTR_SETTING_ACCESS_PASSWORD, 'пример пароля')
!  SELF.SetParam(LIBFPTR_SETTING_USER_PASSWORD, 'Sample_Password')
Что бы не задавал (например: 28, 29, 30 и т.д.) получаю ошибку "Неверный пароль".
В таблице кассиров ФР эти номера есть. А

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

   GetParamStr(LIBFPTR_PARAM_OPERATOR_ID)
всегда возвращает 0 (ноль). Убираю задание паролей - всё работает прекрасно.
Как-то в АТОЛ ДТО8 понятней было - там пароль просто задавал номер кассира в таблице настроек. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

ATOL драйвер 10.x

Сообщение Admin »

Игорь Столяров писал(а): 05 Сентябрь 2019, 20:56Вот эти строки в примере, на что вообще влияют ?
Не знаю. Просто передрал ASIS. Не применял пока
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

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

zmi писал(а): 05 Август 2019, 17:37Все-таки проблемка в тестовом классе оказалась.
Не совсем. Там просто есть особенность.
SELF.ParamBuild (а точнее используемый им вызов libfptr_util_form_tlv()) не только записывает буфер, но и сбрасывает
список сделанных ранее установок всеми разношёрстными методами SELF.SetParam ...
Значит просто нужно до начала формирования комплексного атрибута очистить список ранее сделанных установок, т.е.

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

  IF QGoods.FlagAgent
      SELF.SetParamInt(1222, QGoods.FlagAgent) ! продажа товара комитента как агент
      
      ! данные комитента
      IF CLIP(QGoods.Committent.Phone) <> '' OR CLIP(QGoods.Committent.Name) <> ''
      
          SELF.ParamBuild  ! << --- ВЫПОЛНИТЬ ЗАПИСЬ ДЛЯ ТОГО, ЧТО БЫ ОЧИСТИТЬ СПИСОК РАНЕЕ СДЕЛАННЫХ УСТАНОВОК
          
          ! А вот теперь формируем НОВЫЙ список значений из которых и будет состоять комплексный атрибут
      
          IF CLIP(QGoods.Committent.Phone) <> '' THEN SELF.SetParamStr(1171, QGoods.Committent.Phone) END ! Телефон
          IF CLIP(QGoods.Committent.Name) <> '' THEN SELF.SetParamStr(1225, QGoods.Committent.Name) END ! Наименование
          SELF.ParamBuild
          SELF.SetParamBiteArray(1224, SELF.GetParamBiteArray(LIBFPTR_PARAM_TAG_VALUE)) ! Запись комплексного атрибута
      END
      IF CLIP(QGoods.Committent.INN) <> '' THEN SELF.SetParamStr(1226, QGoods.Committent.INN) END ! ИНН  
   END
И так для всех комплексных атрибутов. А в остальном - дела идут как никогда ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

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

Небольшая помарка в классе Atol10.SetParamDateTime - из-за неё не устанавливаются секунды и дата чека коррекции:

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

Atol10.SetParamDateTime    PROCEDURE(LONG lParam, <LONG lDate>, <LONG lTime>)
….
  libfptr_set_param_datetime(SELF.fptr, LIBFPTR_PARAM_DATE_TIME, YEAR(d), MONTH(d), DAY(d), SUB(FORMAT(t,@T04),1,2), |
   SUB(FORMAT(t,@T04),4,2), SUB(FORMAT(t,@T04),6,2))  
   
   ! ПРАВИЛЬНО: lParam вместо LIBFPTR_PARAM_DATE_TIME и SUB(FORMAT(t,@T04),7,2) вместо SUB(FORMAT(t,@T04),6,2)
или можно вообще упростить метод:

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

Atol10.SetParamDateTime  Procedure(LONG lParam, <LONG lDate>, <LONG lTime>)
Loc:Date  Long
Loc:Time  Long
  Code
  If Self.FlagLoaded = True
     If Omitted(3) = False then Loc:Date = lDate else Loc:Date = ToDay().
     If Omitted(4) = False then Loc:Time = lTime else Loc:Time = Clock().
     libfptr_set_param_datetime(Self.fptr, lParam, Year(Loc:Date), Month(Loc:Date), Day(Loc:Date), |
                      Sub(Format(Loc:Time,@T05),1,2), Sub(Format(Loc:Time,@T05),3,2), Sub(Format(Loc:Time,@T05),5,2))
  end
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

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

Кто-нибудь пробовал не фискальную печать с драйвером АТОЛ ДККТ 10 ?
Что-то не то в консерватории. :(

1. Есть ФР с шириной строки 32 символа. Применяем 7 шрифт - текст сжимается до 42 символов в строке.
Но печатается всё равно 32 символа в строке, только теперь сжатым шрифтом.
А как напечатать текст сжатым шрифтом на всю ширину кассовой ленты ?

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

ATOL драйвер 10.x

Сообщение Admin »

Игорь Столяров писал(а): 13 Сентябрь 2019, 8:061. Есть ФР с шириной строки 32 символа. Применяем 7 шрифт - текст сжимается до 42 символов в строке. Но печатается всё равно 32 символа в строке, только теперь сжатым шрифтом.
м.б. это?
https://kkmspb.ru/kontrolno-kassovaya-t ... ol-30F.php
Игорь Столяров писал(а): 13 Сентябрь 2019, 8:062. Можно как-то получить для конкретного размера шрифта, сколько символов поместится в строке ?
http://blog.atol.ru/archives/7546
т.е. создаем для себя внутреннюю таблицу вариантов.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить