Программная печать чеков ККМ

1. АтлантМ 03.10.17 18:38 Сейчас в теме
Добрый день, Коллеги!
Используем конфиг Бухгалтерия предприятия 3.0, последний релиз.

Стоит задача автоматизировать печать чеков на онлайн ККМ.
Аппарат Атол FPrint-22ПТК.

На предприятии нет кассира с доступом в 1С.
Сотрудник кассы банка в нашем отделении при расчете клиента сканирует бланк заказа.
В 1С по полученному штрихкоду должен автоматически подтянуться чек (чеки загружаются в 1С тоже автоматически из внешней системы) и этот чек должен автоматически распечататься на ККМ. Сотрудник банка к нашему 1С отношения не имеет.

Коллеги, вопрос в том, как программно заставить 1С распечатать чек, если известен документ "Розничная продажа (чек)", из которого его нужно распечатать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
24. АтлантМ 07.10.17 14:43 Сейчас в теме +0.6 $m
По всей видимости беда в том, что драйвера ККТ стоят на компьютере кассира, а не на сервере, где запускается обработка.
А нет ли возможности инициировать печать чека на сервере, чтобы на компьютере кассира ККМ в итоге напечатал чек?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tjurikov_ivan 213 03.10.17 20:43 Сейчас в теме
(1)если вы можете программно получить чек, в чем проблема вызвать функцию фискализации чека? Можно поглядеть как она вызывается через форму чека и запустить её после сканирования
3. tjurikov_ivan 213 03.10.17 20:48 Сейчас в теме
(1)сейчас нет возможности посмотреть, но могу сказать что принцип действия будет такой :
Сканирование
Получение ссылки на чек
Подключение оборудования (взять из формы чека)
Получить параметры фискализации чека (функция в модуле объекта, почти так и называется)
Запустить функцию фискализоватьчек (в модуле объекта)
Отключить оборудование (взять из формы чека)
6. АтлантМ 03.10.17 20:56 Сейчас в теме
(3)

Во вложении скриншот модуля документа РозничнаяПродажа, из которого печатается чек
В модуле нет функций со словом Фискализация и ФискализироватьЧек.
Где же еще можно найти эти функции?
Прикрепленные файлы:
4. АтлантМ 03.10.17 20:48 Сейчас в теме
(2) Проблема в том, что при нажатии кнопки "Выполнить операцию" на форме оплаты, после которой вручную запускается печать чека, задано выполнение непонятной команды, в которой нет следов обращения к функциям ККМ:

&НаКлиенте
Процедура ВыполнитьОперацию(Команда)
	Если НЕ ПроверитьЗаполнение() Тогда
		Возврат;
	КонецЕсли; 
	
	СтруктураРезультата = СтруктураРезультата();
	
	Закрыть(СтруктураРезультата);
КонецПроцедуры
Показать
5. tjurikov_ivan 213 03.10.17 20:56 Сейчас в теме
(4)это функция возврата выбора оплаты, смотрите в форме формадокументаобщая процедуру принять оплату завершение, она туда передаёт данные о выбранных оплатах
7. АтлантМ 03.10.17 21:02 Сейчас в теме
(5)
В функции ПринятьОплату заполняются параметры формы, а затем вызывается форма ФормаОплаты, о которой я уже писал.
Поэтому всё ещё не понятно, как программно запустить печать чека.
8. tjurikov_ivan 213 03.10.17 21:13 Сейчас в теме
(7)Нет не ПринятьОплату, а ПринятьОплатуЗавершение
9. АтлантМ 06.10.17 16:27 Сейчас в теме
Удалось разработать модуль, в котором выполняются функции подключения оборудования и печати чека.
Но! В результате выполнения выдаётся сообщение:

При подключении устройства произошла ошибка.
Чек не напечатан на фискальном устройстве.
Дополнительное описание:
При подключении оборудования произошла ошибка: Выбранное устройство не может использоваться для подключения. Укажите другое устройство.

Хотя вручную чеки печатаются. В чём может быть проблема?
10. АтлантМ 06.10.17 22:32 Сейчас в теме
Новая проблема.
В модулях конфигурации при печати чека вводится переменная ОбъектДрайвера.
Свойства этой переменной переданы правильно, вопросов нет.
Но в модулях используются методы, например
Ответ = ОбъектДрайвера.ПолучитьПараметрыККТ(ПараметрыПодключения.ИДУстройства, ПараметрыККТ);
В этом месте вылетает ошибка, что метод не определен.
Продолжаю разбираться, почему ОбъектДрайвера без методов
11. tjurikov_ivan 213 06.10.17 22:42 Сейчас в теме
(10)я немного уточню, у вас фпринт подключен в подключаемом оборудовании в бухгалтерии? и у вас онлайн-касса?
14. DAL 07.10.17 11:50 Сейчас в теме
(10)
Продолжаю разбираться, почему ОбъектДрайвера без методов


Потому что ОбъектДрайвера не инициализирован.
12. АтлантМ 07.10.17 11:10 Сейчас в теме
У нас онлайн касса.
ККМ есть в справочнике "Подключаемое оборудование".
При создании чека ссылка на оборудование передаётся в документ, в поле ИдентификаторУстройства.
ККМ уже полгода нормально функционирует в "ручном" режиме.
13. DAL 07.10.17 11:42 Сейчас в теме
(12)

Оборудование описано в справочнике и имеет свой идентификатор.
В интерактивном интерфейсе оно привязано к рабочему месту конкретного пользователя.

Распечатка чека программно подразумевает, что:

1. Фискальный регистратор определен и подключен.
2. Пользователь с нужными правами определен и рабочее место имеет тот же фискальник.
3. Объект печати определен.
15. DAL 07.10.17 11:57 Сейчас в теме
(12)
Вообще логика печати чека в бухгалтерии следующая:

1. Чек печатается на основании документа (Приходный кассовый ордер - при приеме выручки, и расходный кассовый ордер - при возвратах товара и выдаче ДС покупателю)
2. В документах есть специальный реквизит "Номер чека ККМ", который заполняется только если чек пробит на ККТ из программы корректно.

Если вы хотите распечатать на ККТ произвольный чек без использования правил программы (создание документа, проведение, пробитие), то вам нужно писать полностью свой алгоритм.

Вариант "Вот массив с данными чека, распечатай его на ККТ" не прокатит.
16. АтлантМ 07.10.17 12:42 Сейчас в теме
Логика печати чеков вручную у нас никак не привязана к приходным кассовым ордерам.
Приходные кассовые ордера не создаются в 1С в принципе.
Создаются расходные документы по 41 счету и вместе с ними создаются документы Розничная реализация (чек).
Из этого документа кассир вручную запускает печать чека на ККМ.

Конфигурация БП у нас типовая, но в ней происходит какая-то непонятная мне лажа.
В общем модуле ПодключаемоеОборудованиеУниверсальныйДрайверКлиент есть вызовы:
Ответ = ОбъектДрайвера.ПолучитьПараметрыККТ(ПараметрыПодключения.ИДУстройства, ПараметрыККТ);
НО!
Глобальный поиск по конфигурации находит функцию ПолучитьПараметрыККТ только в том же самом модуле, но с другими параметрами:
Функция ПолучитьПараметрыККТ(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВходныеПараметры, ВыходныеПараметры)

В конфигурации нет больше такой функции и совсем не понятно, к чему обращается модуль при выполнении команды ОбъектДрайвера.ПолучитьПараметрыККТ(...)
Поиск ссылки (F12) ссылается на свою же функцию общего модуля ПолучитьПараметрыККТ, которая с другими параметрами...

Кстати, в том же общем модуле есть функция ВыполнитьКоманду(...), в которой вызывается нормальная (своя) функция с правильными параметрами
ИначеЕсли Команда = "GetDataKKT" ИЛИ Команда = "ПолучитьПараметрыККТ" Тогда
Результат = ПолучитьПараметрыККТ(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВходныеПараметры, ВыходныеПараметры);
23. DAL 07.10.17 14:22 Сейчас в теме
(16)
ОбъектДрайвера.ПолучитьПараметрыККТ(...)

Это вызов функции объекта ОбъектДрайвера.

У вас установлены драйвера ККТ от АТОЛ. В 1С есть обработка обслуживания ТО для драйвера АТОЛ.

ОбъектДрайвера вызывает методы именно драйвера, а не процедуры и функции текущего модуля.
17. АтлантМ 07.10.17 12:51 Сейчас в теме
В дополнение ко всему мне написала кассир:
"Сегодня не получается выбить нормально чек, т.к. ККМ выдает ошибку.... но если я выключу-включу, чек выбивается..."
Судя по всему связь с ККМ пропадает после выполнения моего модуля...
Прикрепленные файлы:
18. spacecraft 07.10.17 13:12 Сейчас в теме
(17) похоже на то, что при попытке печати, идет обращение к ККТ, которая не была освобождена до этого.
Идея следующая. Получаем драйвер, подключаем устройство, печатаем, освобождаем устройство.
Значит где-то не было освобождение устройства, при новой попытке подключить устройство.
19. АтлантМ 07.10.17 13:17 Сейчас в теме
В моём модуле при попытке освобождения устройства происходит ошибка из-за не возможности выполнить ОбъектДрайвера.ПолучитьПараметрыККТ
Получается, каждый запуск моего модуля блокирует ККТ для дальнейшей работы.
Это подверждается еще и тем, что два раза подряд модуль не запускается. Второй раз при попытке получить оборудование возвращается пустой список.
21. spacecraft 07.10.17 13:33 Сейчас в теме
(19) обычно код с получением параметров пускают через модуль с повторно используемых возвращаемых значений, а не напрямую каждый раз.
20. АтлантМ 07.10.17 13:28 Сейчас в теме
Несколько дней безуспешных попыток меня утомили.
Может быть, тут есть специалисты, которые легко разбираются с печатью фискальных чеков.
Цепляю к сообщению модуль, который получился у меня за несколько дней работы.
Задача модуля - запустить печать чека к документу Чек на ККМ. Номер документа пока фиксированно задается в модуле. Ссылка на оборудование ККМ есть в документе Чек.
Если кто-то сможет настроить печать чека на ККМ в этом модуле без блокировки ККМ, отдам ему с благодарностью 5 СтартМани.
У меня есть СтартМани на другой учетной записи, которая временно заблокирована для написания новых сообщений, поверьте.
Прикрепленные файлы:
ПечатьЧекаПроба.epf
22. АтлантМ 07.10.17 14:01 Сейчас в теме
П.С. Модуль для толстого клиента и обычного приложения, без управляемых форм. Не люблю эти нововведения.
Олдскульные "семерочники" меня поймут :)
24. АтлантМ 07.10.17 14:43 Сейчас в теме +0.6 $m
По всей видимости беда в том, что драйвера ККТ стоят на компьютере кассира, а не на сервере, где запускается обработка.
А нет ли возможности инициировать печать чека на сервере, чтобы на компьютере кассира ККМ в итоге напечатал чек?
25. Жернов Виктор 7 20.03.19 08:32 Сейчас в теме
Для печати чека должны быть права кассира. Для настройки права администратора ККМ. Полных и прав администрирования недостаточно. Беда многих конфигураций в том что многие операции разрешаются только если РольДоступна("Роль") =Истина .
26. DrZombi 290 11.09.19 14:52 Сейчас в теме
В БП 3.0 чеки сейчас печатают чуть ли ни всегда, и отовсюду.
Даже из корректировки долга.
А тем более реализаций, актов и отовсюду :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот