powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
9 сообщений из 59, страница 3 из 3
Атол ККТ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
9 сообщений из 59, страница 3 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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