powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
59 сообщений из 59, показаны все 3 страниц
Атол ККТ10 и VBA
    #39741629
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
В связи с переходом в 2019 году Атола на 10 драйвер и отказа от ДТО 8 возникла необходимость переписать обработку пробития чеков по новым правилам.
Да вот незадача: в новой документации ( http://integration.atol.ru/#c850ebec42) Атол игнорит в примерах VBA и предлагает "допилить" примеры для Delphi или Python. К сожалению, к такому обороту событий я оказался не готов.
В процессе игры с бубном удалось выяснить что:
10 драйвер работает с Access 2010 и выше.
Библиотека addin_fptr10_x64.dll регистрируется только если на компе есть Visual Studio.

Создал пустую форму, на открытие повесил: Set fptr = CreateObject ("AddIn.Fptr10")
При открытии ошибку не выдает (в А2007 просил ActiveX).
Ну а дальше, как герой старого интернет видео: "Это как бы,ну,на этом наши полномочия все".

Даже в принципе, не могу понять с чего начать. Если кто сталкивался с 10 версией Атола, подскажите, как хоть должен выглядеть этот код в VBA или может есть пример как это в 1С сделано.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741639
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
Я бы здесь попробовал спросить http://forum.atol.ru/index.php?showtopic=34345&st=0&p=262827entry262827
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741645
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Атоловский форум излазил вдоль и поперек. К сожалению, ответ примерно такой http://forum.atol.ru/index.php?s=&showtopic=34374&view=findpost&p=267025
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741654
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741658
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманВсем привет!
В связи с переходом в 2019 году Атола на 10 драйвер и отказа от ДТО 8 возникла необходимость переписать обработку пробития чеков по новым правилам.

- Мне в последнее время атол мало нравится, то налоги тасуют от версии к версии, то коды оплаты...
- Здается мне нужно рыть в альтернативу (по твоей же ссылке) в сторону веб сервера
Для интеграции, помимо драйвера ККТ, можно использовать основанные на нем приложения:
Android Service
Web-сервер

http://integration.atol.ru/#web-server
Как UTM работает ты уже знаешь, тут тоже обмен файлами в кодировке UTM-8, минимальная платформа от Windows XP...
Я так понимаю можно поднять атоловский веб сервер с кассой и посылать в него чеки отовсюду...
Если честно, я пока не в курсе, просто прочитал твою статью... ну и по любому нужен аппарат с 10 прошивкой
Ну и на самый крайняк - есть старый, добрый и проверенный Штрих...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741666
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс. Я затупил.
Не добавил в надежное расположение исполняемый файл и команды просто не выполнялись.
Исправил. Теперь вывалился запрос ActiveX. Ищу где он в А2010 включается (ранее работал только с 2003-2007).
zimkon (guest_rusimport) теперь я понял почему не выполнялся мой код.
vmag , web не прокатит. Много магазинов в деревнях без интернета.
Сейчас буду дальше разбираться, но если есть какие мысли на эту тему - поделитесь.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741673
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШаманУпс. Я затупил.
Не добавил в надежное расположение исполняемый файл и команды просто не выполнялись.
Исправил. Теперь вывалился запрос ActiveX. Ищу где он в А2010 включается (ранее работал только с 2003-2007).
zimkon (guest_rusimport) теперь я понял почему не выполнялся мой код.
vmag , web не прокатит. Много магазинов в деревнях без интернета.
Сейчас буду дальше разбираться, но если есть какие мысли на эту тему - поделитесь.

А это всё сделано?

COM-объект

Для подключения драйвера как COM-объект необходимо зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe. Библиотека может сама обнаружить установленный через инсталлятор драйвер. Также инсталлятор автоматически регистрирует компонент заданной архитектуры в процессе установки. В проекте необходимо создать объект типа ActiveX (или OLE) класса AddIn.Fptr10.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741680
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon,
Пока тыкаюсь как младенец.
Для подключения драйвера как COM-объект необходимо зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe.
Запустил CMD под админом и указал regsvr32.exe и путь к addin_fptr10_x86.dll в дистрибутиве драйвера, т.к. более нигде его не нашел.
Регистрация прошла успешно.
В проекте необходимо создать объект типа ActiveX (или OLE) класса AddIn.Fptr10.
Тут появилась загвоздка. Вставка элемента ActiveX не содержит сведений об Атоле.
Может не так DLL зарегистрировал?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741689
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаманzimkon,
Пока тыкаюсь как младенец.
Для подключения драйвера как COM-объект необходимо зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe.
Запустил CMD под админом и указал regsvr32.exe и путь к addin_fptr10_x86.dll в дистрибутиве драйвера, т.к. более нигде его не нашел.
Регистрация прошла успешно.
В проекте необходимо создать объект типа ActiveX (или OLE) класса AddIn.Fptr10.
Тут появилась загвоздка. Вставка элемента ActiveX не содержит сведений об Атоле.
Может не так DLL зарегистрировал?
У вас может Access 64bit? Может 64 битную версию драйвера надо регистрировать? А 32 битную разрегистрировать?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741692
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
regsvr32 для 64 bit лежит в Windows/SysWow64
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741695
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
и тут почитайте насчет регистрации библиотеки https://forum.windowsfaq.ru/showthread.php?t=210675
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741700
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon,
Большое спасибо. Сейчас проверю. Походу 7 винда х64, а офис 2010 х32.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741739
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То ли я дурак, то ли лыжи не едут.
Пробовал на Win7 x64 и Win10 x64, Access 2010 x64
Зарегистрировал DLL для x64 (кстати, Visual Studio не обязателен). В реестре всё видятся.
Запускаю Set fptr = CreateObject("AddIn.Fptr10") выдает ActiveX component can't create object.
Ни в References, ни вActiveX нет упоминания Атола.
Куда еще можно капнуть?
Или еще вопрос. Кто нибудь пробовал связать Атол 10 и Access?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741740
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШаманТо ли я дурак, то ли лыжи не едут.
Пробовал на Win7 x64 и Win10 x64, Access 2010 x64
Зарегистрировал DLL для x64 (кстати, Visual Studio не обязателен). В реестре всё видятся.
Запускаю Set fptr = CreateObject("AddIn.Fptr10") выдает ActiveX component can't create object.
Ни в References, ни вActiveX нет упоминания Атола.
Куда еще можно капнуть?
Или еще вопрос. Кто нибудь пробовал связать Атол 10 и Access?
Так может к этому всему надо ещё в References эту dll-ку добавить и потом подключить (галочкой)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741741
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkonШаманТо ли я дурак, то ли лыжи не едут.
Пробовал на Win7 x64 и Win10 x64, Access 2010 x64
Зарегистрировал DLL для x64 (кстати, Visual Studio не обязателен). В реестре всё видятся.
Запускаю Set fptr = CreateObject("AddIn.Fptr10") выдает ActiveX component can't create object.
Ни в References, ни вActiveX нет упоминания Атола.
Куда еще можно капнуть?
Или еще вопрос. Кто нибудь пробовал связать Атол 10 и Access?
Так может к этому всему надо ещё в References эту dll-ку добавить и потом подключить (галочкой)

В принципе, достаточно только добавить (для CreateObject), галочку ставить необязательно.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741742
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkonТак может к этому всему надо ещё в References эту dll-ку добавить и потом подключить (галочкой)Дело в том, что я загружал в References библиотеку addin_fptr10_x64.dll и ставил галку. Ничего не помогало.
Прочитав ваш ответ, в целях эксперимента попробовал загрузить addin_fptr10_x86.dll, и о чудо: на ActiveX больше не ругается.
Пробую дальше шаманить.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741769
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon, спасибо за подсказки. Не сочтите за назойливость, если есть возможность можете еще оказать помощь?
Связать драйвер Атола и Access получилось.
Первый запрос о версии драйвера сработал успешно (MsgBox Frtr.version). Прямо как "Здравствуй мир!" )))
Не могу разобраться в том, как преобразовать пример в VBA
Код: pascal
1.
2.
3.
4.
5.
6.
7.
begin
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, IntToStr(fptr.LIBFPTR_MODEL_ATOL_AUTO));
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, IntToStr(fptr.LIBFPTR_PORT_COM));
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, 'COM5');
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, IntToStr(fptr.LIBFPTR_PORT_BR_115200));
    fptr.applySingleSettings;
end;


Пробую так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
private sub test()
Dim setSingleSetting As String
With setSingleSetting
.fptr.LIBFPTR_SETTING_MODEL = nz([моё_значение], fptr.LIBFPTR_MODEL_ATOL_AUTO)
.fptr.LIBFPTR_SETTING_COM_FILE = "COM5"
End With
End sub

Выдает ошибку. Что делаю не так?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741779
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаманzimkon, спасибо за подсказки. Не сочтите за назойливость, если есть возможность можете еще оказать помощь?
Связать драйвер Атола и Access получилось.
Первый запрос о версии драйвера сработал успешно (MsgBox Frtr.version). Прямо как "Здравствуй мир!" )))
Не могу разобраться в том, как преобразовать пример в VBA
Код: pascal
1.
2.
3.
4.
5.
6.
7.
begin
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, IntToStr(fptr.LIBFPTR_MODEL_ATOL_AUTO));
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, IntToStr(fptr.LIBFPTR_PORT_COM));
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, 'COM5');
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, IntToStr(fptr.LIBFPTR_PORT_BR_115200));
    fptr.applySingleSettings;
end;


Пробую так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
private sub test()
Dim setSingleSetting As String
With setSingleSetting
.fptr.LIBFPTR_SETTING_MODEL = nz([моё_значение], fptr.LIBFPTR_MODEL_ATOL_AUTO)
.fptr.LIBFPTR_SETTING_COM_FILE = "COM5"
End With
End sub

Выдает ошибку. Что делаю не так?
Да, практически всё надо повторить один к одному:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public sub test()
Dim fptr as Object
Set fptr = CreateObject ("AddIn.Fptr10") 

    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, CStr(fptr.LIBFPTR_MODEL_ATOL_AUTO))
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, CStr(fptr.LIBFPTR_PORT_COM))
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, 'COM5')
    fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, CStr(fptr.LIBFPTR_PORT_BR_115200))
    fptr.applySingleSettings
End sub
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741785
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не п-понял, СЭР (м/ф Остров Сокровищ Капитан Смоллетт)
у меня это выглядит так:

Public sub test()
Dim fptr as Object
Set fptr = CreateObject ("AddIn.Fptr10")
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, CStr(fptr.LIBFPTR_MODEL_ATOL_AUTO))
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, CStr(fptr.LIBFPTR_PORT_COM))
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, 'COM5')
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, CStr(fptr.LIBFPTR_PORT_BR_115200))
fptr.applySingleSettings
End sub
и соответственно ошибка вываливается.
Но хватит наверное на сегодня. Завтра на свежую голову может мысли придут)
zimkon, еще раз спасибо за помощь и подсказки. Ваши советы реально помогают и выручают.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741789
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
Поставьте галку на DLL-ке Атола в References и посмотрите правильный синтаксис метода setSingleSetting в Object Browser редактора VBA для подключенной библиотеки Атола.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741790
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon, я Вас вроде не хотел больше сегодня тревожить. Все таки время позднее.
Сам то до полуночи буду сидеть и разбираться.
Но раз Вы в сети, то можно получить комментарий к сообщению:
Поставьте галку на DLL-ке Атола в References и посмотрите правильный синтаксис метода setSingleSetting в Object Browser редактора VBA для подключенной библиотеки Атола.
Галочку поставил, но краснота ток и осталась.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741791
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
Попробуйте так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Sub test()
Dim fptr As Object
Set fptr = CreateObject("AddIn.Fptr10")
 fptr.setSingleSetting fptr.LIBFPTR_SETTING_MODEL, CStr(fptr.LIBFPTR_MODEL_ATOL_AUTO)
 fptr.setSingleSetting fptr.LIBFPTR_SETTING_PORT, CStr(fptr.LIBFPTR_PORT_COM)
 fptr.setSingleSetting fptr.LIBFPTR_SETTING_COM_FILE, "COM5"
 fptr.setSingleSetting fptr.LIBFPTR_SETTING_BAUDRATE, CStr(fptr.LIBFPTR_PORT_BR_115200)
 fptr.applySingleSettings
End Sub
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741792
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,попробуйте скобки убрать - vba синтаксис видит как вызов программы, соответственно либо Call либо без скобок.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741793
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаманzimkon, я Вас вроде не хотел больше сегодня тревожить. Все таки время позднее.
Сам то до полуночи буду сидеть и разбираться.
Но раз Вы в сети, то можно получить комментарий к сообщению:
Поставьте галку на DLL-ке Атола в References и посмотрите правильный синтаксис метода setSingleSetting в Object Browser редактора VBA для подключенной библиотеки Атола.
Галочку поставил, но краснота ток и осталась.
В Object Browser можно посмотреть объекты, свойства, методы любой из подключенных библиотек и маленький help по ним
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741795
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon, ОТЛИЧНО - ошибка пропала.
Хотел по аналогии преобразовать Z-отчет и проверить на кассе, но тут другой синтаксис
fptr.setParam(1021, "Кассир Иванов И.")
fptr.setParam(1203, "123456789047")
fptr.operatorLogin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT)
fptr.report
fptr.checkDocumentClosed
Даже стыдно просить о помощи. Попробую сам разобраться.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741893
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не выходит каменный цветок (
Никак не могу обработать этот момент, ошибка синтаксиса.
fptr.setParam (1021, "Кассир Иванов И.")
Хотя в Object Browser указано Sub setParam(paramId As Long, value)
т.е paramId = 1021, value ="Кассир Иванов И."
В чём может быть подвох?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741899
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, ?
Код: vbnet
1.
Call fptr.setParam(1021, "Кассир Иванов И.")
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741901
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, Спасибо большое.
Я за двое суток изучения нового драйвера Атола похоже отупел)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741905
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, методы нужно запускать с оператором "Call" и параметры заключать в скобки или без оператора и скобок (правило такое). Иначе выполняется действие в скобках, идёт ошибка.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741915
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
ОК, обязательно это учту.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741916
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, чтобы защитить себя от изменения версий и последующих грабель - лучше таки веб сервер поставить и потом менять что-то в джос запросе, а не вот так.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741918
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинШаман, чтобы защитить себя от изменения версий и последующих грабель - лучше таки веб сервер поставить и потом менять что-то в джсон запросе, а не вот так.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741974
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманЯ за двое суток изучения нового драйвера Атола похоже отупел)

Да нет... просто в этот раз атол переплюнул сам себя... сейчас в новом драйвере практически ничего не осталось от старого, теперь драйвер штриха уже больше похож на старый драйвер атола чем новый атол на самого себя старого... Похоже это связано с унификацией, в исходниках есть инсталы для винды, линуха, андроида и 1С... Eсли еще и через web сервер можно чеки печатать по принципу работы с UTM егаис, то вообще шикарно (по идее можно на этот же комп поставить web атола, послать ему через тот же curl файл
с чеком в utf-8 и он распечатается на ккм)... Попросил аппарат в техценте, наверно тоже начну ковырять,
не думал что будет все так кардинально по другому... Тут все стонут и вздрагивают (особенно 1С) от каждой
смены кодов налогов в драйвере, а уж такие-то нововведения кое кто может и не пережить...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741982
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманВсем привет!
В связи с переходом в 2019 году Атола на 10 драйвер и отказа от ДТО 8 возникла необходимость переписать обработку пробития чеков по новым правилам.

И кстати, сказанное выше не имеет никакой юридической силы (пока это только пожелания и предложения атола). Драйвер менять никто заставить не может. Львиная доля юзеров использует ДТО 8.16.3.9007. 1 С -вцы предпочитают ДТО 9. Кассы с прошивкой под 1.05ФФД работают от ДТО 8 и выше... Ну, на перспективу да... но так чтоб носиться и бить в колокола - пока наверно не стоит...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742015
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман vmag , web не прокатит. Много магазинов в деревнях без интернета.
Сейчас буду дальше разбираться, но если есть какие мысли на эту тему - поделитесь.

1. Ну интернет то по любому нужен для передачи чеков в офд, хотя бы раз в месяц иначе касса заблокируется...
2. Для собственно печати чеков интернет не нужен, если при установке драйвера атол на машину поставить галку Web Server, то в конце (или потом) можно прикрутить этот сервер к ккм (см. рисунок).
3. Ну а потом обращаясь к этому серверу локально или по локальной сети можно отсылать ему файлы заданий, которые он будет выполнять (х,z отчеты, печать чека и т.д.) ну это я так понял и с этим тоже нужно разбираться...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742084
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну в общем не так страшен чёрт, как его малюют.
Потихонечку и со скрипом начала вырисовываться ясная картинка.
В какой то мере оказалось лучше чем 8 версия. Но пока это только первые впечатления.
Как сделаю рабочий вариант отпишусь. Работу через Web сервер еще не смотрел.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742164
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, подведу итог.
Для работы с драйвером Атол ККТ 10 надо:
1. MS ACCESS 2010 и выше
2. Зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe (с правами Админа).
3. В папку с программой положить addin_fptr10_x86.dll (даже если у Вас 64-битное приложение) и принудительно добавить эту библиотеку в References.

Заодно выкладываю пример для VBA. В нём все основные функции кассира (без обработки ошибок).
Еще раз спасибо за помощь zimkon (guest_rusimport) и Панург.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742175
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P/S Перечитал топик. Вчера в запарке не увидел ответ alecko. Не удобно как то стало. Человек дело посоветовал, а я банально проглядел его ответ. alecko, отдельное спасибки за совет)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742185
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманДля работы с драйвером Атол ККТ 10 надо:
1. MS ACCESS 2010 и выше
2. Зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe (с правами Админа).
3. В папку с программой положить addin_fptr10_x86.dll (даже если у Вас 64-битное приложение) и принудительно добавить эту библиотеку в References.

Попробовал по старинке:
поставил ДТО 10.4.2 ( KKT10-10.4.2-windows32-setup.exe из инсталлятора) на W7 (32) + Офис 2003 (32), все примеры отсюда (до ккм ибо ее пока нет) пошли в лет без регистраций, копирования и добавления библиотек в референсы, думаю при наличии ккт с остальным тоже не будет проблем
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744925
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманЗаодно выкладываю пример для VBA. В нём все основные функции кассира (без обработки ошибок).


а не будет ли так любезен многоуважаемый джинн ... сделать пример в формате 2002\2003 - если возможности нет - буду искать более старшие версии для самостоятельной конвертации
просто я пока для себя остановился на варианте использования 8 серии драйверов атола плюс команды нижнего уровня для новых прошивок - если честно - просто нет времени разбираться с 10-й серией и раз уж появилась такая возможность то проще будет уже идти по протоптанной дорожке...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744936
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример для 8 версии Атола взято с этой ветки 21272468
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
Public Function PrintRegChek(lngKod As Long, Optional curSum As Currency) As Boolean
'Печать чека на регистраторе со сдачей.
Dim ECR As Object
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim sql As String, sql1 As String, iDiscount As Integer
Dim intMark As Integer, curSumma As Currency, curSum1 As Currency, curSumDis As Currency

On Error GoTo Error_mark

12 sql = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
sql = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
sql = sql & "WHERE (((tblПродажа.КодЧека)=" & lngKod & "));"

22 If rst.State = adStateClosed Then
221 rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End If

222 iDiscount = rst![Скидка]

223 If rst.RecordCount = 0 Then GoTo Exit_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
224 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
20 ECR.DeviceEnabled = True
294 If ECR.ResultCode <> 0 Then
225 If MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbRetryCancel + vbDefaultButton1, conVersion) = vbRetry Then
GoTo 20
Else
226 If MsgBox("Чек не будет напечатан!", vbCritical + vbOKCancel + vbDefaultButton2, conVersion) = vbCancel Then
GoTo 20
Else
227 PrintRegChek = False
GoTo Exit_mark
End If
End If
End If

228 Select Case iDiscount 'Два варианта чека: без скидки и со скидкой.
Case 0 'Если без скидки.
'Метка для перехода при ошибке ввода суммы.
intMark = 1
'Входим в режим регистрации
'Устанавливаем пароль кассира
229 ECR.Password = "1"
'Входим в режим регистрации
230 ECR.Mode = 1
231 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа co сдачeй
4 Do Until rst.EOF
41 ECR.Name = rst![ШтрихКод]
42 ECR.Price = rst![Цена]
43 ECR.Quantity = rst![Количество]
44 Select Case ECR.Registration
Case 0
Case -3807
11 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
45 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 11
End If
46 rst.MoveFirst
GoTo 4
Case Else
PrintRegChek = False
GoTo Error_mark
End Select
47 rst.MoveNext
Loop

'Закрытие чека наличными с вводом полученной от клиента суммы
1 curSumma = CCur(InputBox("Внесено.", conVersion))

'Проверяем введеную сумму, полученную от покупателя.
48 If curSumma = 0 Then
'Повторяем ввод.
GoTo 1
End If

49 If curSumma < curSum Then
50 Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
GoTo 1
End If

51 ECR.Summ = curSumma
52 ECR.TypeClose = 0
53 Select Case ECR.Delivery
Case -3807
10 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
54 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 10
End If
55 rst.MoveFirst
GoTo 4
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 1
Case 0
PrintRegChek = True
End Select

Case Is > 5
iDiscount = rst![Скидка]
If iDiscount > 15 Then
rst.Close
rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
iDiscount = rst![Скидка]

If iDiscount > 5 Then
Call MsgBox("Скидка не правильна. Отбейте чек вручную.", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo Exit_mark
Else
GoTo 228
End If
Else
GoTo 228
End If
Case Else 'Со скидкой.
56 rst.Close

'Список со скидкой.
57 sql = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
58 sql = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
59 sql = sql & "WHERE (((tblПродажа.КодЧека)=" & lngKod & "));"
60 rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'Список без скидки.
61 sql1 = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
62 sql1 = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
63 sql1 = sql1 & "WHERE (((tblПродажа.КодЧека)=" & lngKod & ") AND ((tblТовары.Скидка)=IsNull));"

64 rst1.Open sql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

65 If rst.RecordCount = 0 Then
GoTo 21
Else
66 iDiscount = rst![Скидка]
End If

'Метка для перехода при ошибке ввода суммы.
intMark = 2

'Входим в режим регистрации
'Устанавливаем пароль кассира
67 ECR.Password = "1"
'Входим в режим регистрации
68 ECR.Mode = 1
69 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
70 rst.Close
71 rst1.Close
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
72 rst1.Close
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
73 rst1.Close
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
74 rst1.Close
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа co сдачeй
'Закрытие чека наличными с вводом полученной от клиента суммы
2 curSumma = CSng(InputBox("Внесено.", conVersion))

'Проверяем введеную сумму, полученную от покупателя.
75 If curSumma = 0 Then
'Повторяем ввод.
GoTo 2
End If

76 If curSumma < curSum Then
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
GoTo 2
End If

7 Do Until rst.EOF
77 ECR.Name = rst![ШтрихКод]
78 ECR.Price = rst![Цена]
79 ECR.Quantity = rst![Количество]
80 curSum1 = curSum1 + rst![Цена] * rst![Количество]
81 Select Case ECR.Registration
Case 0
Case -3807
13 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
82 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 13
End If
83 rst.MoveFirst
GoTo 7
Case Else
84 rst1.Close
PrintRegChek = False
GoTo Error_mark
End Select
85 rst.MoveNext
Loop

'Скидка
86 curSumDis = Round(curSum1 * iDiscount / 100)
87 ECR.Summ = curSumDis
88 ECR.Destination = 0
89 If ECR.SummDiscount <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

90 If rst1.RecordCount = 0 Then
91 ECR.Summ = curSumma
92 ECR.TypeClose = 0
93 Select Case ECR.Delivery
Case -3807
14 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
94 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 14
End If
95 rst.MoveFirst
GoTo 7
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 2
Case 0
96 rst1.Close
PrintRegChek = True
GoTo 3
End Select
Else
'Закрытие чека
97 ECR.TypeClose = 0
98 Select Case ECR.CloseCheck
Case -3807
15 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
99 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 15
End If
111 rst.MoveFirst
GoTo 7
Case 0
End Select
End If

'Входим в режим регистрации
'Устанавливаем пароль кассира
21 ECR.Password = "1"
'Входим в режим регистрации
112 ECR.Mode = 1
Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
113 rst.Close
114 rst1.Close
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа со сдачей
9 Do Until rst1.EOF
115 ECR.Name = rst1![ШтрихКод]
116 ECR.Price = rst1![Цена]
117 ECR.Quantity = rst1![Количество]
118 Select Case ECR.Registration
Case 0
Case -3807
16 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
119 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 16
End If
120 rst1.MoveFirst
GoTo 9
Case Else
121 rst1.Close
PrintRegChek = False
GoTo Error_mark
End Select
122 rst1.MoveNext
Loop

'Закрытие чека
123 ECR.Summ = curSumma - (curSum1 - curSumDis)
124 ECR.TypeClose = 0
125 Select Case ECR.Delivery
Case -3807
17 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
126 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 17
End If
127 rst1.MoveFirst
GoTo 9
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 1
Case 0
PrintRegChek = True
End Select
rst1.Close
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
3 If ECR.ResetMode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

'Освобождаем порт
128 ECR.DeviceEnabled = False
129 If ECR.ResultCode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

PrintRegChek = True

Exit_mark:
130 rst.Close
131 Set rst = Nothing
132 Set rst1 = Nothing
133 Set ECR = Nothing
Exit Function

Error_mark:
Select Case Err.Number
Case 0
If Erl = 224 Then
PrintRegChek = False
Exit Function
End If
Case 13
'Скорее всего неправильно введена сумма.
Select Case intMark
Case 1
GoTo 1
Case 2
GoTo 2
End Select
Case 91 'Выход из-за ошибки.
Call MsgBox("Ошибка создания объекта AddIn.FprnM45. Приложение завершит свою работу.", vbCritical + vbOKOnly, conVersion)
ReportError "PrintRegChek", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChek = False
Exit Function
Case 3218 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3202 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3188 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3186 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3187 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3211 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3212 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case Else
Select Case Err.Description
Case "Чтение невозможно; блокировка другим пользователем." 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case Else
Call Protocol(Form_frmЛокальныеНастройки.ПолеКодПользователя, "Печать чека. " & lngKod, Err.Description)
ReportError "PrintRegChek", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChek = False
Resume Next
End Select
End Select

Gaschenie:
'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
134 If ECR.ResetMode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

'Освобождаем порт
135 ECR.DeviceEnabled = False
136 If ECR.ResultCode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

137 Call PrintRegZReport

GoTo 20
End Function

Public Sub PrintRegXReport()
Dim ECR As Object
On Error GoTo Error_mark

If ProverkaRegistratoraQuick = False Then Exit Sub

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт
ECR.DeviceEnabled = True
Select Case ECR.ResultCode
Case 0
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical, conVersion)
GoTo Exit_mark
Case Else
GoTo Exit_mark
End Select

'X - отчет
'Устанавливаем пароль администратора ККМ
ECR.Password = "29"
'Входим в режим отчетов без гашения
ECR.Mode = 2
If ECR.SetMode <> 0 Then
GoTo 1
End If
'Снимаем отчет
ECR.ReportType = 2
3 Select Case ECR.Report
Case 0
Case -3807
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 3
Case Else
GoTo 1
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
ECR.DeviceEnabled = False
If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Sub

Error_mark:
ReportError "PrintRegXReport", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Sub

Public Sub PrintRegZReport()
Dim ECR As Object
On Error GoTo Error_mark

If ProverkaRegistratoraQuick = False Then Exit Sub

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт
ECR.DeviceEnabled = True
Select Case ECR.ResultCode
Case 0
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical, conVersion)
GoTo Exit_mark
Case Else
GoTo Exit_mark
End Select

'Z - отчет
'Устанавливаем пароль системного администратора ККМ
ECR.Password = "30"
'Входим в режим отчетов с гашением
ECR.Mode = 3
If ECR.SetMode <> 0 Then
Exit Sub
End If
'Снимаем отчет
ECR.ReportType = 1
3 Select Case ECR.Report
Case 0
Case -3807
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 3
Case -3828
Call MsgBox("Отчет с гашением уже снят.", vbExclamation + vbOKOnly, conVersion)
Case Else
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
ECR.DeviceEnabled = False
If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Sub

Error_mark:
ReportError "PrintRegZReport", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Sub

Public Function ProverkaRegistratora() As Boolean
'Проверка регистратора перед запуском программы.
On Error GoTo Error_mark

ProverkaRegistratora = True

'Создаем объект общего драйвера ККМ
5 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
6 ECR.DeviceEnabled = True
7 Select Case ECR.ResultCode
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo Exit_mark
Case 0
End Select

'Проверяем связь с ККМ.
8 Select Case ECR.GetCurrentMode
Case -1 'Нет связи с ККМ.
Call MsgBox("Нет связи с ККМ либо ККМ не включено!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 2
End Select

9 If ECR.PrinterConnectionFailed = True Then 'Есть ли ошибки связи.
Call MsgBox("Ошибка связи с ККМ!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 2
End If

10 If ECR.OutOfPaper = True Then 'Есть ли бумага.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

'Получаем состояние ККМ.
11 If ECR.GetStatus <> 0 Then
Call MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbOKOnly, conVersion)
GoTo Error_mark
ProverkaRegistratora = False
GoTo 1
End If

12 If ECR.CheckPaperPresent = False Then 'Проверка ленты.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

13 If ECR.ControlPaperPresent = False Then 'Проверка ленты.
Call MsgBox("В ККМ нет контрольной ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

14 If ECR.BatteryLow = True Then 'Проверка зарядки батареи.
Call MsgBox("Внимание разряжена батарея!", vbCritical + vbOKOnly, conVersion)
End If

4 Select Case ECR.CheckState 'Проверяем нет ли открытого чека.
Case 0 'Открытого чека нет.
Case Else 'Есть не закрытый чек.
15 Select Case ECR.CloseCheck 'Пытаемся закрыть чек.
Case 0 'Чек успешно закрыт.
Case -3807 'Нет бумаги.
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 4
Case Else 'Другая ошибка.
Call MsgBox("Ошибка закрытия чека!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End Select
End Select

'Если смена не открыта, открываем ее.
16 If ECR.SessionOpened = False Then
17 ECR.OpenSession
End If

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
2 ECR.DeviceEnabled = False
18 If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
19 Set ECR = Nothing
Exit Function

Error_mark:
ReportError "ProverkaRegistratora", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Function

Public Function ProverkaRegistratoraQuick() As Boolean
'Быстрая проверка регистратора перед продажей.
On Error GoTo Error_mark

ProverkaRegistratoraQuick = True

'Создаем объект общего драйвера ККМ
5 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
6 ECR.DeviceEnabled = True
7 Select Case ECR.ResultCode
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo Exit_mark
Case 0
End Select

'Проверяем связь с ККМ.
8 Select Case ECR.GetCurrentMode
Case -1 'Нет связи с ККМ.
Call MsgBox("Нет связи с ККМ либо ККМ не включено!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 2
End Select

9 If ECR.PrinterConnectionFailed = True Then 'Есть ли ошибки связи.
Call MsgBox("Ошибка связи с ККМ!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 2
End If

10 If ECR.OutOfPaper = True Then 'Есть ли бумага.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 1
End If

4 Select Case ECR.CheckState 'Проверяем нет ли открытого чека.
Case 0 'Открытого чека нет.
Case Else 'Есть не закрытый чек.
11 Select Case ECR.CloseCheck 'Пытаемся закрыть чек.
Case 0 'Чек успешно закрыт.
Case -3807 'Нет бумаги.
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 4
Case Else 'Другая ошибка.
Call MsgBox("Ошибка закрытия чека!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 1
End Select
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
2 ECR.DeviceEnabled = False
12 If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Function

Error_mark:
ReportError "ProverkaRegistratoraQuick", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Function

Public Function ProverkaObjectFprnM45() As Boolean
'Проверяем можно ли создать объект драйвера ККМ.
'Тем самым грубо проверяем работает ли драйвер ККМ.
Dim ECR As Object
On Error GoTo Error_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

ProverkaObjectFprnM45 = True
Set ECR = Nothing

Exit_mark:
Exit Function

Error_mark:
ProverkaObjectFprnM45 = False
ReportError "ProverkaObjectFprnM45", Err.Number, Err.Source, Err.Description
Resume Exit_mark
End Function

Public Function PrintRegChekSumm(curSum As Currency) As Boolean
'Печать чека на регистраторе со сдачей.
Dim ECR As Object
Dim intMark As Integer, curSumma As Currency, curSum1 As Currency, curSumDis As Currency

On Error GoTo Error_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
224 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
20 ECR.DeviceEnabled = True
294 If ECR.ResultCode <> 0 Then
225 If MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbRetryCancel + vbDefaultButton1, conVersion) = vbRetry Then
GoTo 20
Else
226 If MsgBox("Чек не будет напечатан!", vbCritical + vbOKCancel + vbDefaultButton2, conVersion) = vbCancel Then
GoTo 20
Else
227 PrintRegChekSumm = False
GoTo Exit_mark
End If
End If
End If

'Если без скидки.
'Метка для перехода при ошибке ввода суммы.
intMark = 1
'Входим в режим регистрации
'Устанавливаем пароль кассира
229 ECR.Password = "1"
'Входим в режим регистрации
230 ECR.Mode = 1
231 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
GoTo Gaschenie
Else
PrintRegChekSumm = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case Else
PrintRegChekSumm = True
End Select

'Продажа co сдачeй
42 ECR.Price = curSum
43 ECR.Quantity = 1
44 Select Case ECR.Registration
Case 0
Case -3807
11 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
45 If ECR.CancelCheck <> 0 Then
PrintRegChekSumm = False
GoTo 11
End If
GoTo 42
Case Else
PrintRegChekSumm = False
GoTo Error_mark
End Select

'Закрытие чека наличными с вводом полученной от клиента суммы
1 curSumma = curSum

'Проверяем введеную сумму, полученную от покупателя.
48 If curSumma = 0 Then
'Повторяем ввод.
curSumma = CCur(InputBox("Внесено.", conVersion))
GoTo 48
End If

51 ECR.Summ = curSumma
52 ECR.TypeClose = 0
53 Select Case ECR.Delivery
Case -3807
10 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
54 If ECR.CancelCheck <> 0 Then
PrintRegChekSumm = False
GoTo 10
End If
55 rst.MoveFirst
GoTo 51
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChekSumm = False
GoTo 1
Case 0
PrintRegChekSumm = True
End Select


'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
3 If ECR.ResetMode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

'Освобождаем порт
128 ECR.DeviceEnabled = False
129 If ECR.ResultCode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

PrintRegChekSumm = True

Exit_mark:
133 Set ECR = Nothing
Exit Function

Error_mark:
Select Case Err.Number
Case 0
If Erl = 224 Then
PrintRegChekSumm = False
Exit Function
End If
Case 91 'Выход из-за ошибки.
Call MsgBox("Ошибка создания объекта AddIn.FprnM45. Приложение завершит свою работу.", vbCritical + vbOKOnly, conVersion)
ReportError "PrintRegChekSumm", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChekSumm = False
Exit Function
Case Else
Call Protocol(Form_frmЛокальныеНастройки.ПолеКодПользователя, "Печать чека. " & lngKod, Err.Description)
ReportError "PrintRegChekSumm", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChekSumm = False
Resume Next
End Select

Gaschenie:
'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
134 If ECR.ResetMode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

'Освобождаем порт
135 ECR.DeviceEnabled = False
136 If ECR.ResultCode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

137 Call PrintRegZReport

GoTo 20
End Function


и файлик от самого Атола https://www.sql.ru/forum/actualfile.aspx?id=21250866
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744943
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманПример для 8 версии Атола

с 8-й серией драйверов проблем нет :) все давно и успешно работает, я имел ввиду изыскания по 10-й серии
или пример (АТОЛ10_VBA2.zip) выложенный ранее в формате accdb тоже только для 8-х драйверов ?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744989
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stu314, если правильно понял, Вам нужен пример в формате Access2003, но зачем?
Он не будет работать под VBA6. Нужен минимум 7, а это MSO2010
Тут на форуме Атола обсуждали это http://forum.atol.ru/lofiversion/index.php?t35954.html
Сохранить базу в формате 2000-2003 Access не дает. Прикрепляю код.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
Option Compare Database
Private fptr As Object

Private Sub Form_Open(Cancel As Integer)
On Error GoTo NotOLE
' создаем объект общего драйвера ККМ
' если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set fptr = CreateObject("AddIn.Fptr10")
Exit Sub
NotOLE:     'Обработка ошибки при создании OLE-объекта
A = MsgBox("Ошибка при создании объекта AddIn.Fptr10", vbCritical + vbOKOnly)
Cancel = 1
End Sub

Private Sub Кнопка0_Click()
    '// Соединение с ККТ
    fptr.Open
    
    Call fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STATUS)
    fptr.queryData
   
    operatorID = fptr.getParamInt(fptr.LIBFPTR_PARAM_OPERATOR_ID)
    logicalNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_LOGICAL_NUMBER)
    shiftState = fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_STATE)
    model = fptr.getParamInt(fptr.LIBFPTR_PARAM_MODEL)
    Mode = fptr.getParamInt(fptr.LIBFPTR_PARAM_MODE)
    submode = fptr.getParamInt(fptr.LIBFPTR_PARAM_SUBMODE)
    receiptNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_NUMBER)
    documentNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
    shiftState = fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER)
    receiptType = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE)
    lineLength = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
    lineLengthPix = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)
    receiptSum = fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPT_SUM)
    isFiscalDevice = fptr.getParamBool(fptr.LIBFPTR_PARAM_FISCAL)
    isFiscalFN = fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_FISCAL)
    isFNPresent = fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_PRESENT)
    isCashDrawerOpened = fptr.getParamBool(fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED)
    isPaperPresent = fptr.getParamBool(fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
    isCoverOpened = fptr.getParamBool(fptr.LIBFPTR_PARAM_COVER_OPENED)
    isPrinterConnectionLost = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST)
    isPrinterError = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_ERROR)
    isCutError = fptr.getParamBool(fptr.LIBFPTR_PARAM_CUT_ERROR)
    isPrinterOverheat = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_OVERHEAT)
    isDeviceBlocked = fptr.getParamBool(fptr.LIBFPTR_PARAM_BLOCKED)
    FdateTime = fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME)
    serialNumber = fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER)
    modelName = fptr.getParamString(fptr.LIBFPTR_PARAM_MODEL_NAME)
    firmwareVersion = fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION)
End Sub

Private Sub Кнопка57_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, fptr.LIBFPTR_MODEL_ATOL_AUTO)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, fptr.LIBFPTR_PORT_COM)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, [Порт] * 1)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, fptr.LIBFPTR_PORT_BR_115200)
     fptr.applySingleSettings
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
Кнопка0_Click

If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
End Sub

Private Sub Кнопка58_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Call fptr.setParam(1021, "Кассир Иванов И.")
    Call fptr.setParam(1203, "123456789047")
    fptr.operatorLogin
    fptr.openShift
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка60_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASH_SUM)
    fptr.queryData

    MsgBox "Сейчас в кассе " & fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM)
    
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка61_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_X)
    fptr.Report
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка62_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, [Сумма] * 1)
    fptr.cashIncome
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка63_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, [Сумма] * 1)
    fptr.cashIncome
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка7_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Call fptr.setParam(1021, "Кассир Иванов И.")
    Call fptr.setParam(1203, "123456789047")
    fptr.operatorLogin
    fptr.setParam fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT
    fptr.Report
    fptr.checkDocumentClosed
    
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
End Sub


Private Sub Кнопка59_Click()
    '// Соединение с ККТ
    fptr.Open

    '// Регистрация кассира
    Call fptr.setParam(1021, "Иванов И.И.")
    Call fptr.setParam(1203, "500100732259")
    fptr.operatorLogin

    '// Открытие чека (с передачей телефона получателя)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL)
    Call fptr.setParam(1008, "+79161234567")
    fptr.openReceipt
    

    '// Регистрация позиции
    Call fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 73.99)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT18)
    Call fptr.setParam(1212, 1)
    Call fptr.setParam(1214, 7)
    fptr.registration

    '// Регистрация итога (отрасываем копейки)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 369#)
    fptr.receiptTotal

    '// Оплата наличными
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
    fptr.payment

    '// Закрытие чека
    fptr.closeReceipt

'    If Not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED) Then
'        '// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
'        fptr.cancelReceipt
'        Exit Sub
'    End If


  ' '// Запрос информации о закрытом чеке
   ' Call fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_DOCUMENT)
   ' fptr.fnQueryData
   ' showmessage ("Fiscal Sign = " + fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN))
   ' showmessage ("Fiscal Document Number = " + IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)))
   
    '// Формирование слипа ЕГАИС
    fptr.beginNonfiscalDocument

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 5)
    fptr.printBarcode

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_CHARS)
    fptr.printText

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c 78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 81 74")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_WORDS)
     fptr.printText

    fptr.endNonfiscalDocument
    
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка76_Click()
    '// Соединение с ККТ
    fptr.Open
    '// Формирование слипа ЕГАИС
    fptr.beginNonfiscalDocument

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 5)
    fptr.printBarcode

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_CHARS)
    fptr.printText

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c 78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 81 74")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_WORDS)
     fptr.printText

    fptr.endNonfiscalDocument
    
    fptr.Close 'отключение от кассы
End Sub

...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744997
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6. Нужен минимум 7, а это MSO2010
Тут на форуме Атола обсуждали
я участвовал в том обсуждении, потом вроде писали что более правильную сборку атол сделал
у меня все на 2002 аксесе, за код - отдельное спасибо, жаль только что нет формы - проще было бы разрулить :)
кстати а какой аксес не дал сохранить в младшей версии ? я просто считал что это возможно ... просто с версиями более 2003 дела пока еще не имел
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745001
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6.
сейчас проверил на 2002 хр Ваш пример - все прицепилось с драйвером атола 10.4.2
отрабатывают конструкции fptr As New Fptr10Lib.fptr и CreateObject("AddIn.Fptr10")
все остальное - уже завтра если время будет - просто у меня кроме атола еще куча других - штрихи, пириты, сп-шки...
поэтому и решил пока оставаться на 8-х драйверах, но на 10-х будет лучше т.к. 8-е и 9-е атол хоронит...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745010
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6. Нужен минимум 7, а это MSO2010

Ваш вклад в науку воистину велик (в основном как первооткрывателя), и с этим вам спасибо... но сэр не путайте народ...
Все ваши проблемы от того, что вы пытаетесь пихать везде dll вместо того чтобы установить драйвер штатно, в этом случае dll сама ляжет куда нужно и как нужно...
То что там у кого-то где-то что-то не получалось, так это потому, что там не было спецов типа Панурга, Константина, Алеско...
Атол заявляет поддержку ОС от Win XP (см. самую первую свою ссылку в этом топике)
На картинке я показываю, что вызов свойств драйвера работает и в Акцесс 2000, просто по совету Константина зашел в свойства и увидел, что showProperties это Функция, и как оказалось драйвер не любит когда ее вызывают как процедуру (чем кстати и грешит большинство юзеров) и ему некуда возвращать значение... но стоит присвоить значение переменной Long и все полетело....
Кстати чуть выше вам (как и я ранее) показывал, что это работает и в 2003..
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745012
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,

Установите себе штатный драйвер, получите в программах приблуду как на картинке, один раз в ней настройте свойства ккм, и все проблемы исчезнут, далее будет только
fptr.Open
....
fptr.Close
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745062
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы. Обязательно попробую. Мне и самому под MS A2010 переделывать не очень хочется.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745066
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманМне и самому под MS A2010 переделывать не очень хочется.

А вот это зря...

Рано или поздно придется, возможно очень скоро 2003 и ниже споткнутся окончательно...
2007-2010-... тяжелее даже не вооруженным глазом, но тут уж как говориться се ля ви...
Многие (из тех кто ваяет) одной ногой стоят на 2000-2003, другой на 2007 и выше...

Дрова я брал отсюда (10.4.2)
https://atoldriver.ru/vse-drajvera-atol-versii-10/
Это не официалы, но компоновка у них лучше чем у официалов...
Установщик под винду в архиве примерно тут ...\10.4.2\installer\exe\
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745067
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stu314... жаль только что нет формы - проще было бы разрулить :)
кстати а какой аксес не дал сохранить в младшей версии ? я просто считал что это возможно ... просто с версиями более 2003 дела пока еще не имел Напрямую из А10 не сохраняет в А2003. Создал пустую базу в 2000 и подгрузил форму.
Только у меня так и просит ActiveX (
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745068
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag, спать это не про нас)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745096
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманТолько у меня так и просит ActiveX (

vmag правильно все расписал - юзай кошерный установщик и все будет :), а за преобразование - отдельное СПАСИБО
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745140
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stu314за преобразование - отдельное СПАСИБО
проверил пример, предварительно преобразовав его в формат 2002 - все корректно отрабатывает :) еще раз спасибо, меньше ковыряться придется со сменой идеологии в атоле ...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39831444
Faraon5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Являюсь "счастливым" обладателем онлайн кассы Атол92Ф. Пользуюсь Excel в котором с помощью VBA ещё лет 10 назад сваял прогу, которая меня полностью устраивает. Подключен чекопечатающий принтер. Теперь стоит задача подключить Атол. Как я понял из данной темы это вполне возможно. Кассу к компьютеру подключил, поставил ДККТ v.10 Подскажите идеологию, как из VBA управлять кассой?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Атол ККТ10 и VBA
    #39995986
paul597368
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Вчера меня озадачили решением обсуждаемой проблемы.
Пишу что сделал и что получилось.

1. Что использовалось.
Windows 7 Pro X64, MS Access 2003.

2. Скачал драйвера для ККТ 10-ой версии
У Атола - долго искать. Поэтому загуглил и нашел здесь

https://support.obosobka.ru/baza-znaniy/drayver-atol-10-8-0-0-ot-13-08-2020/]

Драйвер Атол 10.8.0.0 от 13.08.2020
Драйвер ККТ Атол 10.8.0.0 (x64)
Драйвер ККТ Атол 10.8.0.0 (x86)

3. Установка «Драйвер ККТ Атол 10.8.0.0 (x86)».

При установке драйвера выбрал ВСЕ галки.

Поскольку Access 2003 – это 32 разрядное приложение, то устанавливал «Драйвер ККТ Атол 10.8.0.0 (x86)».

«Драйвер ККТ Атол 10.8.0.0 (x64)» – для Access 2003 установился, но при проверке работы с Access 2003 получил сообщение об ошибке использования. Очевидно из-за не подходящей (x64) разрядности.
Предполагаю, что для Access 2010 потребуется именно "Драйвер ККТ Атол 10.8.0.0 (x64)".

4. Подключение к Access
- Запустил Access 2003 и создал новый файл.
- Зашел в программый модуль (Alt+F11) и добавил ссылку на файл библиотеки DDL
Меню
\Tools\Referenses

и в диалоге через кнопку «Browse…» нашел и выбрал файл

C:\Program Files (x86)\ATOL\Drivers10\KKT\langs\com\ addin_fptr10_x86.dll

(судя по обсуждению - это не должно вызывать затруднений)


- добавление ссылки в Access прошло успешно.

5. Создал модуль и добавил код из обсуждения (два в одном).

Public Sub test()
Dim fptr As New fptr
fptr.setSingleSetting fptr.LIBFPTR_SETTING_MODEL, CStr(fptr.LIBFPTR_MODEL_ATOL_AUTO)
fptr.setSingleSetting fptr.LIBFPTR_SETTING_PORT, CStr(fptr.LIBFPTR_PORT_COM)
fptr.setSingleSetting fptr.LIBFPTR_SETTING_COM_FILE, "COM5"
fptr.setSingleSetting fptr.LIBFPTR_SETTING_BAUDRATE, CStr(fptr.LIBFPTR_PORT_BR_115200)
fptr.applySingleSettings
'
fptr.setParam 1021, "Кассир Иванов И."
fptr.setParam 1203, "123456789047"
fptr.operatorLogin
fptr.setParam fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT
fptr.Report
fptr.checkDocumentClosed
End Sub

6. Запустил на выполнение test
Тест прошел без ошибок.

Подсказка
1. Если используемый метод не возвращает значение (тип Sub) или вам оно не нужно, то не используйте скобки в начале “(“ и в конце “)“.

Пример 1
функция параметр1, параметр2, …

2. Если возвращает (тип function), то тогда укажите переменную (объект), которой присваивается значение

Пример 2
Переменная = функция (параметр1, параметр2, …)

7. И последнее.

Перенос и использование остальных методов драйвера можно выполнять аналогичным способом по описанию в документации от Атола и на основании примеров для других языков программирования.

Для предыдущего драйвера (версии 8) Атол давал примеры для использования в Access.
Для 10-го Атол видимо посчитал, что в этом нет необходимости или ручки не дошли.

На днях получу ККТ Атол 55Ф с платформой версии 5.
Как раз для нее и проверю работу Access 2003 c драйвером ККТ 10 версии.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39996377
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paul597368,

скажите пожалуйста, какой метод отправляет чек на печать?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39996407
paul597368
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vah,
Пока не знаю. Надо лопатить документацию и проверять работу.
Сейчас делаю задачу по переводу программы на Access с 8 на 10 версию драйвера ККТ.
Если попадется код вывода на печать чека скину в чат.
По срокам - неделя-две.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #40000946
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paul597368,

Здравствуйте.
Не удалось найти код вывода на печать чека?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #40001091
paul597368
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vah,
Привет.
Если кратко, то - получилось.
В документации Атола - Поиск "Пример использования" дан пример, который я переложил на Access 2003.

Предварительно.
1. На ПК должен быть установлен драйвер 10-й версии 32-х разрядный.
2. ККМ подключен к ПК.
3. Убедиться в том, что все подготовлено можно запустив программу "Тест драйвера ККТ (32-bit)", в ней выберите кнопку 'свойства' и выполнить поиск устройства и проверку связи.

Затем
1. В файле mdb (Access) создайте таблицу с именем t_kkm и в ней два поля с именами и типами
f_id - числовой
f_Settings - Поле МЕМО
В таблицу добавьте запись с f_id = 0.
2. Создайте модуль и вставьте в него текст программы

Option Compare Database
Option Explicit

'#include "fptr10.h"

Dim p_kkm As New Fptr

'Function f_main(argc As Integer, argv As String) As Integer
Sub f_main_test()
'// Создание и настройка драйвера
Call f_initialize
'// Соединение с ККТ
p_kkm.Open

'// Регистрация кассира
p_kkm.setParam 1021, "Иванов И.И."
p_kkm.setParam 1203, "500100732259"
p_kkm.operatorLogin

'// Открытие чека (с передачей телефона получателя)
p_kkm.setParam p_kkm.LIBFPTR_PARAM_RECEIPT_TYPE, p_kkm.LIBFPTR_RT_SELL
p_kkm.setParam 1008, "+79161234567"
p_kkm.openReceipt

'// Регистрация позиции
p_kkm.setParam p_kkm.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_PRICE, 73.99
p_kkm.setParam p_kkm.LIBFPTR_PARAM_QUANTITY, 5
p_kkm.setParam p_kkm.LIBFPTR_PARAM_TAX_TYPE, p_kkm.LIBFPTR_TAX_VAT18
'Также в данном методе можно передать следущие реквизиты ФН:
p_kkm.setParam 1212, 1 'Признак предмета расчета
p_kkm.setParam 1214, 7 'Признак способа расчета
p_kkm.Registration
'// Регистрация позиции: конец

'// Регистрация итога (отбрасываем копейки)
p_kkm.setParam p_kkm.LIBFPTR_PARAM_SUM, 369#
p_kkm.receiptTotal

'// Оплата наличными
p_kkm.setParam p_kkm.LIBFPTR_PARAM_PAYMENT_TYPE, p_kkm.LIBFPTR_PT_CASH
p_kkm.setParam p_kkm.LIBFPTR_PARAM_PAYMENT_SUM, 1000
p_kkm.Payment

'// Закрытие чека
p_kkm.closeReceipt

If (p_kkm.checkDocumentClosed < 0) Then
'// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
MsgBox p_kkm.errorDescription, vbExclamation, "f_main"
End If

If p_kkm.getParamBool(p_kkm.LIBFPTR_PARAM_DOCUMENT_CLOSED) = 0 Then
'// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
p_kkm.cancelReceipt
Exit Sub
End If

If (p_kkm.getParamBool(p_kkm.LIBFPTR_PARAM_DOCUMENT_PRINTED) = 0) Then
'// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
If (p_kkm.continuePrint() < 0) Then
'// Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
MsgBox "Не удалось напечатать документ (Ошибка " & vbCrLf & _
p_kkm.errorDescription & vbCrLf & _
"). Устраните неполадку и повторите.", vbExclamation, "f_main"
End If
End If

'// Получение информации о чеке из ФН
p_kkm.setParam p_kkm.LIBFPTR_PARAM_FN_DATA_TYPE, p_kkm.LIBFPTR_FNDT_LAST_DOCUMENT
p_kkm.fnQueryData
Dim fiscalSign
fiscalSign = p_kkm.getParamStr(p_kkm.LIBFPTR_PARAM_FISCAL_SIGN)
Dim documentNumber As Integer
documentNumber = p_kkm.getParamInt(p_kkm.LIBFPTR_PARAM_DOCUMENT_NUMBER)

'// Формирование слипа ЕГАИС
p_kkm.beginNonfiscalDocument
p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.printText

p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT, "КАССА: 1 СМЕНА: 11"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.printText

p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT, "ЧЕК: 314 ДАТА: 20.11.2017 15:39"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.printText

p_kkm.setParam p_kkm.LIBFPTR_PARAM_BARCODE, " https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_BARCODE_TYPE, p_kkm.LIBFPTR_BT_QR
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.setParam p_kkm.LIBFPTR_PARAM_SCALE, 500
p_kkm.printBarcode

p_kkm.printText

p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT, " https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT_WRAP, p_kkm.LIBFPTR_TW_CHARS
p_kkm.printText

p_kkm.printText

p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT, _
"10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c " & _
"78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 " & _
"ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 " & _
"81 74"
p_kkm.setParam p_kkm.LIBFPTR_PARAM_ALIGNMENT, p_kkm.LIBFPTR_ALIGNMENT_CENTER
p_kkm.setParam p_kkm.LIBFPTR_PARAM_TEXT_WRAP, p_kkm.LIBFPTR_TW_WORDS
p_kkm.printText

p_kkm.endNonfiscalDocument

'// Z-отчет
p_kkm.setParam p_kkm.LIBFPTR_PARAM_REPORT_TYPE, p_kkm.LIBFPTR_RT_CLOSE_SHIFT
p_kkm.Report

'// Получение информации о неотправленных документах
p_kkm.setParam p_kkm.LIBFPTR_PARAM_FN_DATA_TYPE, p_kkm.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS
p_kkm.fnQueryData
' uint
Dim unsentCount As Integer
unsentCount = p_kkm.getParamInt(p_kkm.LIBFPTR_PARAM_DOCUMENTS_COUNT)
Dim unsentFirstNumber As Integer
unsentFirstNumber = p_kkm.getParamInt(p_kkm.LIBFPTR_PARAM_DOCUMENT_NUMBER)
Dim unsentDateTime As String
unsentDateTime = p_kkm.getParamStr(p_kkm.LIBFPTR_PARAM_DATE_TIME)
'// Завершение работы
p_kkm.Close
End Sub

Private Sub f_initialize()
' date: 12.09.2020: МПИ
' desc: инициализация объекта
Dim t As DAO.Recordset
Dim settings As String, s As String
Dim i As Long, b_new As Boolean
On Error Resume Next
settings = ""
b_new = False
' читаем, что есть у нас
Set t = CodeDb().OpenRecordset("t_kkm")
settings = Nz(t!f_settings, "")
' параметры еще не заданы
If settings = "" Then
' открываем диалог для поиска устройства и проверки связи _
и получаем настройки, которые сохраняем в поле таблицы
s = f_getSettings()
If s = "" Then
Exit Sub
Else
' вернули что-то новенькое
b_new = True
settings = s
End If
End If
' далее проверяем загружаем их в драйвер
i = p_kkm.SetSettings(settings)
'
If i <> 0 Then
MsgBox "Ошибка загрузки данных." & vbCrLf & p_kkm.errorDescription, vbCritical, "Подключение к ККТ"
Exit Sub
End If
' Данные загружены, делаем попытку подключения к ККТ
Call p_kkm.Open
Select Case p_kkm.isOpened
Case True
p_kkm.Beep
' p_kkm.Close
Case Else
MsgBox "Ошибка подключения." & vbCrLf & p_kkm.errorDescription, vbCritical, "Подключение к ККТ"
Exit Sub
End Select
' новенькое прошло тест -> сохраняем у себя
If b_new Then
t.Edit
t!f_settings = settings
t.Update
End If
End Sub

Private Function f_getSettings() As String
' date: 12.09.2020: МПИ
' desc: открываем диалог по определению параметров
Dim settings As String
Dim long1 As Long
' открываем диалог для поиска
long1 = p_kkm.ShowProperties(p_kkm.LIBFPTR_GUI_PARENT_NATIVE, Application.hWndAccessApp)
Select Case long1
'0, если пользователь нажал кнопку OK.
Case 0 ' сохраняем параметры для последующего использования
settings = p_kkm.getSettings
'-1, если открыть диалог не удалось
' 1, если пользователь покинул диалог любым другим способом (нажал кнопку Отмена, закрыл диалог крестиком, т.п.)
Case Else 'используем параметры без изменения
settings = ""
End Select
f_getSettings = settings
End Function

3. Выполните компиляцию модуля - для проверки на наличие ошибок
4. Запустите f_main_test()
...
Рейтинг: 0 / 0
59 сообщений из 59, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]