Работа с драйвером "Атол v.10" через COM Объект для 1С: 8.3

10.07.20

Интеграция - ККМ

Компания АТОЛ стала выпускать кассы с платформой 5.0. Залить старую платформу невозможно. Новая платформа работает с драйвером 10-й версии и выше. Для нетиповой конфигурации пришлось переписывать работу с ККТ, т.к. ранее работали на 8-м драйвере.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Внешняя обработка для работы с драйвером «Атол v.10» через COM Объект для 1с 8.3:
.epf 7,38Kb ver:1.0
81
81 Скачать (1 SM) Купить за 1 850 руб.

Проверял на 32х разрядных системах. Платформа 8.3.15.1830

1) сносим старый драйвер

2) устанавливаем драйвер 10й версии https://www.atol.ru/company/service-support/dkkt10-platforma5/ . Все библиотеки должны прописаться в системе самостоятельно.

3) пробуем подключиться и снять Х-отчет.

Создаем COM Объект:

                fptr = Новый COMобъект("AddIn.Fptr10");

Передаем параметр и подключаемся к кассе:
Либо как подключение по USB:

                fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, Строка(fptr.LIBFPTR_PORT_USB));

                fptr.applySingleSettings();

Либо как подключение по COM:

                fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, Строка(fptr.LIBFPTR_MODEL_ATOL_AUTO));

                fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, Строка(fptr.LIBFPTR_PORT_COM));

                fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, "COM16");

                fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, Строка(fptr.LIBFPTR_PORT_BR_115200));

                fptr.applySingleSettings();

Далее открываем соединение с кассой:

              fptr.open();

Делаем нужные запросы (подробно о всех методах http://integration.atol.ru/api/) :

                fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_X);

                Ответ=fptr.report();

Закрываем соединение:

                 fptr.close();

Пример обработки с Х-отчетом, Z-Отчетом, пробитием чека прихода и возвратом прихода во вложении.

Подключение АТОЛ драйвер 10 пример пробить чек

См. также

ККМ Розничная торговля Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль синхронизации незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочем месте кассира) установлен Frontol или планируется его установка. Подходит для 1С:Розница 2.3 / 3.0, 1С:УНФ 3.0

7900 руб.

22.03.2019    87953    601    479    

201

ККМ Программист Бухгалтер Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Хотите серьезно ускорить печать чеков, или печатать с разных рабочих мест на один ккм? В этом вам поможет программа K-SOFT от фирмы АТОЛ, а данная разработка позволит интегрировать его с вашей программой 1С. Печатать чеки можно будет даже с мобильного телефона. Работает на любой платформе 1С управляемые формы и на любой операционной системе. Подойдет для конфигураций: Розница 2, Управление нашей фирмой, Управление Торговлей 11, Бухгалтерия 3, Комплексная автоматизация 2, ERP, ЗУП 3, БГУ 2, Управление холдингом, конфигурации Рарус и многих других отраслевых решений

3600 руб.

01.02.2021    53324    512    252    

163

ККМ ЭДО и ОФД Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Бухгалтерский учет Платные (руб)

Обработка «Заполнение авансовых отчетов в 1С и поступлений товаров по онлайн-чекам ФНС» позволяет загружать онлайн чеки в формате JSON из официального мобильного приложения "Проверка чеков ФНС" и заполнять документы «Авансовый отчет» и «Приобретение товаров». Помощник заполнения поможет найти /создать номенклатуру и номенклатуру поставщика по указанным настройкам и перенесет данные чеков в документы учетной системы. Данные чеков из мобильного приложения можно выгружать как по каждому чеку в отдельности, так и выпиской за период.

5400 руб.

09.06.2020    33065    125    44    

118

Пакетная печать ККМ Кассовые операции Загрузка и выгрузка в Excel Бухгалтер Пользователь Россия Бухгалтерский учет Платные (руб)

Предназначена для групповой печати чеков. Что печатать в теле чека описано в текстовом файле с разделителем запятая (CSV) Подходит для любого языка программирования который умеет записывать в текстовый файл

3600 руб.

26.07.2019    26068    39    17    

24

ККМ Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Абонемент ($m)

Формирование чека на ККТ по желанию пользователя: либо электронного без вывода на печать, либо печать чека.

1 стартмани

28.03.2022    12825    39    1st    16    

10

Кассовые операции ККМ Программист Платформа 1С v8.3 Россия Управленческий учет Бесплатно (free)

Реализация функций продажи/возврата маркированной продукции в ФФД 1.2 для ККМ марки АТОЛ для самописных конфигураций. DTO 10.9.1.0.

07.12.2021    33921    slava_1c    153    

26

ККМ Программист Пользователь Платформа 1С v8.3 1С:Розница 2 1С:Управление торговлей 11 Россия Платные (руб)

При работе в связке Розница или УТ - Frontol многие сталкиваются с проблемой создания скидок и маркетинговых мероприятий в Frontol, типовыми средствами из 1С: Розницы не предусмотрено выгрузки и создания акции. Для создания акции или дисконтных карт во Frontol, требовалось заводить в каждом Frontolе, если у вас несколько рабочих мест, что неудобно. При помощи обработки можно выгружать и создавать акции прямо из 1С: Розницы и УТ на любое рабочее место (оффлайн оборудование), выгружать информацию о картах, клиентах и назначить скидки на виды карт, что значительно упрощает процесс создания акции, и это может делать любой обученный оператор (товаровед) или бухгалтер.

3360 руб.

30.11.2021    21906    74    78    

54
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Akuji 22 15.07.20 11:03 Сейчас в теме
Работа с маркировкой там есть?
2. Vil1983 25 15.07.20 15:20 Сейчас в теме
(1) Нет, но можно добавить. Методы все описаны:

Для разбора кода маркировки, полученного от сканера, необходимо вызвать метод parseMarkingCode() и указать в параметре LIBFPTR_PARAM_MARKING_CODE значение штрихкода. Если передаётся марки ЕГАИС 2.0 или ЕГАИС 3.0, это нужно указать в параметре LIBFPTR_PARAM_MARKING_CODE_TYPE. Он принимает следующие значения:

LIBFPTR_MCT_EGAIS_20 - ЕГАИС 2.0
LIBFPTR_MCT_EGAIS_30 - ЕГАИС 3.0
LIBFPTR_MCT_OTHER - другая марка, кроме перечисленных выше
Сформированное значение реквизита 1162 будет записано в параметр 1162.
24. pqt 30.07.22 09:51 Сейчас в теме
3. fixin 4286 01.05.21 15:43 Сейчас в теме
Спасибо, очень помогло, когда переводил нетиповую с ДТО8 на ДТО10.
4. silverr 13 18.05.21 17:50 Сейчас в теме
Доброго времени суток!
Как определяется (задается) номер порта при подключении по USB? Какой вариант подключения производительней - очень много чеков?
5. Vil1983 25 18.05.21 20:12 Сейчас в теме
(4) при подключении по USB, если касса одна то автоматом... если несколько то надо думать.

Какой вариант подключения производительней - Не сравнивал, но предполагаю что USB будет производительней.
6. silverr 13 18.05.21 21:55 Сейчас в теме
7. Karollo 19.05.21 10:57 Сейчас в теме
Для УТ 10.3.47.3 сделал обработку с выбором типа подключения, по USB или по COM(порт выбрать можно).
Печать копии чека из Чек ККМ, Приходный кассовый ордер, Оплата платёжной картой.
Но к сожалению работает только под обычными интерфейсами. Под интерфейсом кассира не печатает ничего, не могу понять, где получить подключение драйвера. В РМК соединение держит постоянно сама конфигурация.
Прикрепленные файлы:
8. Vil1983 25 19.05.21 11:47 Сейчас в теме
(7)
лучить подключение драйв

Если честно не понимаю чем отличается "обычный интерфейс" от "интерфейса кассира" может в вашей обработке важно какой клиент работает? тонкий или толстый? (хотя вряд ли в этом дело) Скорей, наверное, проблема в правах... Но это не точно)
12. Karollo 19.05.21 20:40 Сейчас в теме
(8) В УТ 10.3 есть интерфейс Интерфейс кассира. Из него недоступны основные документы, справочники, отчёты. Он только для торговли, продажа, возврат. И когда с этим интерфейсом входит пользователь, то срабатывает процедура которая держит соединение с драйвером ККТ.
В интерфейсе, к примеру Полный, там не держит соединение, так как нет обращения к драйверу ККТ. Поэтому тут обработка срабатывает, потому что она создаёт объект драйвера, и выполняет команды самого драйвера.
Права тут не причём.
13. Vil1983 25 20.05.21 09:43 Сейчас в теме
(12) ну яб предложил переписать ту часть кода которая держит соединение... А так, не знаю, надо что то придумывать глядя на код.
9. silverr 13 19.05.21 11:57 Сейчас в теме
Доброго времени суток!
Не подскажете синтаксис команды установки ставки НДС на позицию (не на чек). В старом 8-шном варианте выглядело так:

Если СписокТоваров.НДС = 20 Тогда
Объект.Department = 3;
Объект.TaxTypeNumber = 3;
10. silverr 13 19.05.21 12:19 Сейчас в теме
(9)И еще, как получить длину наименования данного аппарата? В старом варианте было:

ДлинаНаименования = Объект.ДлинаСтрокиСимволов;
11. Vil1983 25 19.05.21 14:10 Сейчас в теме
(9)
Я думаю на все вопросы вы найдете ответ в документации http://integration.atol.ru/api
Например по налогу поищите LIBFPTR_PARAM_TAX_TYPE в "операции с чеками" Все остальные возможности там перечислены.
20. alexlug95 11.01.22 08:58 Сейчас в теме
Чеки коррекции были реализованы на 8 драйвере?
21. Vil1983 25 11.01.22 10:14 Сейчас в теме
(20) я не занимался разработкой взаимодействия 1с с 8ым драйвером, так что не знаю.
14. k770888 14.08.21 06:26 Сейчас в теме
Василий день добрый. А вы не сталкивались с чеками коррекции прихода в атоле 10.
Есть задача сделать обработку. из реестра в экселе взять данные и через драйвер или напрямую на ккт создавать чеки коррекции и отправлять на ккт, с последующей распечаткой. Вы не могли бы помочь с решением такой задачи.
15. Vil1983 25 16.08.21 09:26 Сейчас в теме
(14) Ну не вижу особо проблем, чек коррекции аналогичен обычным чекам, только с другими параметрами. Помочь могу, но в чем мой профит?)
16. guglion 4 29.09.21 12:16 Сейчас в теме
(9) Чек продаж содержит цикл перебора списка товаров, в конце исполняется регистрация покупки. Можно прямо перед регистрацией покупки вставить код, где переменная ECR - это объект драйвера ККМ:

Если Налог = "Без НДС" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_NO);
КонецЕсли;
Если Налог = "НДС 18%" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT18);
КонецЕсли;
Если Налог = "НДС 10%" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT10);
КонецЕсли;
Если Налог = "НДС расчитанный 18/118" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT118)
КонецЕсли;
Если Налог = "НДС расчитанный 10/110" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT110) ;
КонецЕсли;
Если Налог = "НДС 0%" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT0) ;
КонецЕсли;
Если Налог = "НДС 20%" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT20);
КонецЕсли;
Если Налог = "НДС расчитанный 20/120" Тогда
ECR.setParam(ECR.LIBFPTR_PARAM_TAX_TYPE, ECR.LIBFPTR_TAX_VAT120);
КонецЕсли;

Лесенку из Если и КонецЕсли, которую я условно написал, можно потом красивее сделать - мне просто кажется так понятнее

И уж после вставки строки налога, строку можно зарегистрировать:

ECR.registration();
Если Результат <> 0 Тогда
ОшибкаККМ=Истина;
сообщить("Ошибка ККМ : " + ECR.errorCode() + " " + ECR.errorDescription(), СтатусСообщения.Важное);
КонецЕсли;
17. Vil1983 25 29.09.21 14:42 Сейчас в теме
(16) НДС у разных позиций может отличаться. Например у молока НДС 10%, а у пива 20%. Определять налог заранее имеет смысл только если известно что ставка не измена для всех позиций в организации.
19. guglion 4 30.09.21 03:26 Сейчас в теме
(17) Конечно, верно согласен. Параметр Налог - это просто переменная.

Например Список - это список товаров Документа ЧекПродаж

Для Каждого ТекСтрокаСписок Из Список Цикл

Налог = ТекСтрокаСписок.Товар.СтавкаНДС.Наименование;

.....

КонецЦикла;

И вот так можно в одном чеке разные ставки налога на каждую позицию товаров регистрировать. Надо сказать что 10 драйвер Атол в этом плане лучше - в 6 или 8 драйверах нужно было использовать ECR.TaxTypeNumber = 6 - что означало выбрать из таблицы ККМ налогов нужный, беда в том что я встречал ККМ где эти таблицы прошиты по разному. И выходит, что на одной ККМ нужно выбирать 6 позицию, а на стоящей рядом 0. Это просто беда.
18. guglion 4 30.09.21 03:22 Сейчас в теме
Конечно, верно согласен. Параметр Налог - это просто переменная.

Например Список - это список товаров Документа ЧекПродаж

Для Каждого ТекСтрокаСписок Из Список Цикл

                       Налог = ТекСтрокаСписок.Товар.СтавкаНДС.Наименование;

                       .....

КонецЦикла;


И вот так можно в одном чеке разные ставки налога на каждую позицию товаров регистрировать. Надо сказать что 10 драйвер Атол в этом плане лучше - в 6 или 8 драйверах нужно было использовать ECR.TaxTypeNumber = 6 - что означало выбрать из таблицы ККМ налогов нужный, беда в том что я встречал ККМ где эти таблицы прошиты по разному. И выходит, что на одной ККМ нужно выбирать 6 позицию, а на стоящей рядом 0. Это просто беда.
22. Mainframe1C 29.01.22 14:28 Сейчас в теме
есть несколько магазинов с кассами, работают через rdp, к кассам подключение через IP по впн (через com порт по RDP все мега медленно). Один из этих магазинов подключен через Yota, и периодически связь пропадает. Когда 1с с сервера пытается подключиться к кассе этого магазина в момент потери связи, все зависает на Драйвер.open(); (в вашем варианте fptr.open();) . У других тоже все блокируется, т.к. этот сеанс блокирует драйвер.
Вопрос: есть ли какой-нибудь параметр , который надо передать в драйвер перед open() , чтобы ограничить время попытки выполнения open(), т.е. например передал Limit=5, значит если не получилось в течении 5 секунд подключиться, то освобождаем драйвер и выдаем исключение?
23. Vil1983 25 29.01.22 15:03 Сейчас в теме
(22) Ссылка на документацию есть в посте. Там описаны все методы. В вашем случае яб попробовал перед открытием соединения, сперва закрывать старое (неважно есть оно или нет). Думаю это решило бы проблему.
25. srt2020 10.03.23 09:03 Сейчас в теме
А как узнать процесс регистрации чека прошел успешно, или была какая-то ошибка (например чек бумажный не отпечатался)?
26. Vil1983 25 10.03.23 10:14 Сейчас в теме
(25) Все методы и ответы от оборудования описаны тут: http://integration.atol.ru/api/
Если касса что то возвращает, то можно это обработать. Если не возвращает ничего, то обрабатывать нечего. Но конкретно с чеками, обратная связь была описана в мануале АТОЛа
27. RustIG 1881 09.11.23 09:02 Сейчас в теме
(0) Добрый день!
Можно ли тестировать Атоловский драйвер ККМ без самого ККМ?
Есть ли какой тестовый режим у драйвера?
Аппарата нет, а запрограммировать функционал надо.
28. Vil1983 25 09.11.23 09:45 Сейчас в теме
(27) Добрый, я работал с аппаратом, попробуйте найти какой то эмулятор устройства, может есть где...
29. RustIG 1881 11.11.23 21:09 Сейчас в теме
(28) спасибо за идею, пока отложу вопрос
30. slava_d2000 20.04.24 13:56 Сейчас в теме
Добрый день.
а есть кто ни будь кто разливное пиво проверял ?

FR.setParam(FR.LIBFPTR_PARAM_MARKING_CODE_TYPE, FR.LIBFPTR_MCT12_AUTO);
FR.setParam(FR.LIBFPTR_PARAM_MARKING_CODE, "0104607053473544215EYZU1" + Символ(29) + "93ywXU");
FR.setParam(FR.LIBFPTR_PARAM_MARKING_CODE_STATUS, FR.LIBFPTR_MES_DRY_FOR_SALE);
FR.setParam(FR.LIBFPTR_PARAM_MEASUREMENT_UNIT, FR.LIBFPTR_IU_LITER);
FR.setParam(FR.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
FR.setParam(FR.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, "500/20000");
//FR.setParam(FR.LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER, true);
FR.setParam(FR.LIBFPTR_PARAM_QUANTITY, 1.000);

как только указываю FR.LIBFPTR_IU_LITER
драйвер сообщает что некорректный код маркировки.

или надо как то по другому проверять ?
Оставьте свое сообщение