Печать чеков на Меркурии 119Ф USB по сети

06.06.19

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

Стандартный драйвер Меркурия 119Ф usb не позволяет осуществлять печать на фискальный регистратор с другого компьютера, поэтому был сделан простейший http сервер, который транслирует post запросы в вызовы методов com-объекта.

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Сервер для Меркурия 119Ф USB для печати по сети
.zip 635,95Kb ver:1.1
3 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

 

Установка

 

Подключаем Меркурий-119Ф к компьютеру.

Устанавливаем драйвер usb https://www.incotexkkm.ru/attachments/54-fz/119f/Mercury_119F_USB.zip.

Устанавливаем драйвер "Инкотекс: ККТ Меркурий с передачей данных в ОФД (54-ФЗ)" (М119Ф, МФ) https://forum.incotexkkm.ru/viewtopic.php?f=19&t=2066 файл MercuryOfdFPDrv.exe.

Берем исходники и собираем проект https://github.com/philippovomsk/MercuryServer, например, в визуал-студии комьюнити 2017. Или качаем собранный проект отсюда и распаковываем архив куда-нибудь.

Вешаем в автозагрузку MercuryServer.exe.

 

Настройка

В папке с MercuryServer.exe есть файл конфигурации MercuryServer.exe.config, в котором нужно настроить ip-адрес и порт ОФД. По умолчанию в качестве ОФД настроен Петер-сервис.

<add key="ofdIP" value="94.143.160.11"/> 
<add key="ofdPort" value="4000"/>

Так же может понадобиться изменить порт http сервера Меркурия.

<add key="httpServerPort" value="8090" />

 

Проверка работоспособности

Запускаем MercuryServer.exe, в панели уведомлений появляется иконка сервера.

Левый клик по иконке отображает окно сервера, в котором показывается текущее состояние Меркурия 119Ф.

 

Правый клик по иконке позволяет закрыть сервер. Перед повторным запуском стоит выждать до 30 секунд, потому что драйвер меркурия может отправлять данные в ОФД и не успеть закрыться.

В браузере в строке адреса набираем localhost:8090 нажимаем ентер, смотрим на страницу ошибки сервера Меркурия.

При настройке печати по сети аналогично в браузере компьютера, с которого будут печататься чеки, набираем айпи-адрес-серверамеркурия:8090 и смотрим страницу ошибки. Если страницы ошибки нет, то проверяем настройки брендмауэра.

 

Использование

В папке драйвера Меркурия есть документация C:\Program Files (x86)\incotex\MercuryOfdFPDriver\MercuryComOFDFPDriver Manual.pdf Параметры методов драйвера оборачиваются в json и передаются как тело POST-запроса.

Сервер умеет обрабатывать следующие запросы:

  1. /openshift открытие смены

  2. /closeshift закрытие смены

  3. /status состояние фискального регистратора

  4. /printxreport печать х-отчета

  5. /printcheck печать чека

При печати чека проверяется состояние смены и если нужно открыть смену, то она открывается. Если нужно закрыть смену, то смена закрывается, открывается и печатается чек.

Результат возвращается в виде json, согласно документации. Если при выполнении запроса происходит ошибка, то в json возвращается поле "error" со строковым описанием ошибки.

 

openshift

Вызывается метод драйвера OpenShift2.

Тело запроса

{
   "CashierName": "имя кассира",
   "CashierVATIN": "инн кассир"
}

Тело ответа

{
    "SessionNumber": номер текущей смены,
    "DocumentNumber": номер отчета об открытии смены,
    "UrgentReplacementFN":  Признак необходимости срочной замены ФН,
    "MemoryOverflowFN":  Признак переполнения памяти ФН,
    "ResourcesExhaustionFN": Признак исчерпания ресурса ФН,
    "OFDtimeout": Признак того, что подтверждение оператора для переданного фискального документа отсутствует более двух дней. Для ФД с версией ФФД 1.0 более 5 дней
}

 

closeshift

Вызывается метод драйвера CloseShift2.

Тело запроса

{
   "CashierName": "имя кассира",
   "CashierVATIN": "инн кассир"
}

Тело ответа

{
    "SessionNumber": номер текущей смены,
    "DocumentNumber": номер отчета о закрытии смены,
    "NumberOfChecks": Количество кассовых чеков за смену,
    "NumberOfDocuments": Количество общее ФД за смену,
    "BacklogDocumentsCounter": Количество непереданных документов,
    "BacklogDocumentFirstNumber"  Номер первого непереданного документа,
    "BacklogDocumentFirstDateTime" Дата и время первого из непереданных документов,
    "UrgentReplacementFN":  Признак необходимости срочной замены ФН,
    "MemoryOverflowFN":  Признак переполнения памяти ФН,
    "ResourcesExhaustionFN": Признак исчерпания ресурса ФН,
    "OFDtimeout": Признак того, что подтверждение оператора для переданного фискального документа отсутствует более двух дней. Для ФД с версией ФФД 1.0 более 5 дней
}

 

status

Вызывается метод драйвера GetCurrentStatus.

Тело запроса

Пустое.

Тело ответа

{
    "CheckNumber": Номер последнего пробитого фискального документа из ФН,
    "SessionNumber": Номер смены,
    "SessionState":  Статус смены: 1-Закрыта, 2-Открыта,
    "BacklogDocumentsCounter": Количество непереданных документов,
    "BacklogDocumentFirstNumber"  Номер первого непереданного документа,
    "BacklogDocumentFirstDateTime" Дата и время первого из непереданных документов
}

 

printxreport

Вызывается метод драйвера PrintXReport.

Тело запроса

Пустое.

Тело ответа

Пустое.

 

printcheck

Вызывается метод драйвера ProcessCheck.

{
   "CashierName": "имя кассира",
   "CheckPackage": "xml с чеком"
}

Тело ответа

{
    "CheckNumber": Номер фискального чека, возвращаемый ФН,
    "SessionNumber": Номер открытой смены,
    "FiscalSign":  Фискальный признак,
    "AddressSiteInspections": Адрес сайта проверки
}

 

Лог сервера

В папке сервера формируется подробный лог запросов и ответов. Файл mercury.log. Настройки лога log4net.config.

 

Пример печати чека из 1С:Предприятия 8.3

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

ДокЧек = "<?xml version=""1.0"" encoding=""UTF-8""?>
|<CheckPackage>
|<Parameters PaymentType=""1"" TaxVariant=""#Налогообложение#"" #ИННКассира#/>
|<Positions> 
|#Строки# 
|</Positions> 
|<Payments Cash=""#СуммаЧека#""/> 
|</CheckPackage>";

ДокЧек = СтрЗаменить(ДокЧек, "#Налогообложение#", 2); // 0-общая, 1-усн-доход, 2 - усн-расход, 3-енвд
ДокЧек = СтрЗаменить(ДокЧек, "#ИННКассира#", "CashierVATIN=""123456789012""");

ШаблонСтроки = "<FiscalString Name=""#Товар#"" Quantity=""#Количество#"" Price=""#Цена#"" Tax=""#СтавкаНДС#"" Amount=""#Сумма#""/>";

Строки = "";
Сумма = 0;
Для Каждого СтрТоваров Из СтрокиДокумента Цикл 
	
	ТекСтрока = ШаблонСтроки;
	ТекСтрока = СтрЗаменить(ТекСтрока, "#Товар#", ЭкранироватьСимволы(СокрЛП(СтрТоваров.Номенклатура))); 
	ТекСтрока = СтрЗаменить(ТекСтрока, "#Количество#", Формат(СтрТоваров.Количество, "ЧРД=.; ЧГ=0")); 
	ТекСтрока = СтрЗаменить(ТекСтрока, "#Цена#", Формат(СтрТоваров.Цена, "ЧРД=.; ЧГ=0")); 
	ТекСтрока = СтрЗаменить(ТекСтрока, "#СтавкаНДС#", "none"); //СтавкаНДСМеркурий(СтрТоваров.СтавкаНДС, ПлательщикНДС)); 
	ТекСтрока = СтрЗаменить(ТекСтрока, "#Сумма#", Формат(СтрТоваров.Сумма, "ЧРД=.; ЧГ=0")); 
	
	Строки = Строки + ТекСтрока;
	Сумма = Сумма + СтрТоваров.Сумма;
КонецЦикла;
ДокЧек = СтрЗаменить(ДокЧек, "#Строки#", Строки);
ДокЧек = СтрЗаменить(ДокЧек, "#СуммаЧека#", Формат(Сумма, "ЧРД=.; ЧГ=0"));

ПараметрыЗапроса = Новый Структура();
ПараметрыЗапроса.Вставить("CashierName", "Иванов И.И.");
ПараметрыЗапроса.Вставить("CheckPackage", ДокЧек);

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
ТелоЗапроса = ЗаписьJSON.Закрыть();

Запрос = Новый HTTPЗапрос("/printcheck");
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);

Соединение = Новый HTTPСоединение("айпи сервера меркурия", 8090,,,,60);
Попытка
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Исключение
	ПоказатьПредупреждение(,"Не удалось пробить чек! Нет соединения с сервером чеков!");
	Возврат;
КонецПопытки;

Если Ответ.КодСостояния <> 200 Тогда
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());

	Результат = ПрочитатьJSON(ЧтениеJSON, Ложь);
	ПоказатьПредупреждение(,"Не удалось пробить чек! " + ?(Результат.Свойство("error"), Результат.error, ""));
	Возврат;
КонецЕсли;

 

Подключение через стандартную подсистему торгового оборудования 1С:Предприятия 8.3

Мне было не нужно, но вполне можно написать обработку, которая будет взаимодействовать с сервером. За основу можно смело брать стандартную обработку от Инкотекс.

Вступайте в нашу телеграмм-группу Инфостарт

Фискальный_регистратор Меркурий_119Ф Инкотекс 54-ФЗ

См. также

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

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1, ФФД 1.2). Подключайте любую онлайн кассу к практически любой конфигурации на обычных формах. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим и маркировку. Поддерживает локальный модуль честного знака для офлайн проверки. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows

6000 руб.

27.02.2017    843728    5309    9840    

2982

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

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5% и НДС 7%.

7900 руб.

25.05.2015    350531    2136    3128    

1106

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

Расширение для типовых конфигураций для Управляемых форм позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

9500 руб.

27.08.2018    128108    702    603    

913

ККМ Розничная торговля Системный администратор Программист 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    89699    636    479    

208

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

«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест с поддержкой очереди печати. Поддерживаются ВСЕ ревизии требований фирмы 1С к разработке драйверов ККТ от 2.2 до 4.4.

5000 руб.

02.09.2016    142898    138    196    

207

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

Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).

7080 руб.

12.04.2023    11834    70    8    

58

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

Расширение для 1С:Управление торговлей 11.5 и 11.4, которое позволяет из рабочего места кассира разбивать чек ККМ на несколько чеков и пробивать их на разных кассах подключенных к одному РМК. Можно пробивать разные группы товаров по разным организациям на разных кассовых аппаратах.

7080 руб.

22.08.2022    12336    38    17    

38

Кассовые операции ККМ Системный администратор Программист Бухгалтер 1С v7.7 1С v8.3 1C:Бухгалтерия 1C77 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями включена 1 лицензия Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

6000 руб.

31.07.2017    177968    611    609    

214
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. muskul 10.06.19 01:57 Сейчас в теме
Сколько клиент за это заплатил и не проще было купить фискальник который может работать в тех режимах в которых хочет клиент
2. philya 78 10.06.19 11:27 Сейчас в теме
"Клиент" заплатил зарплату. Было не проще - мы меняем наши 12 Атолов на Меркурии, которых у нас под 400 штук.

Меркурий дешевле, умеет широкую и узкую ленту, есть отрезчик чека, перепрошивается своими силами бесплатно. Чтобы перепрошить Атол в Тевризе Омской области мне нужно проехать 1400 километров и заплатить за перепрошивку, т.е. одна перепрошивка Атола займет больше моего рабочего времени, чем написание этого сервера )
3. aspirator23 340 26.07.19 16:28 Сейчас в теме
(2) Насколько надежны меркурии? Рынок захватил Атол и Штрих, поэтому интересно как у других фискальных регистраторов. Насколько просто сложно обслуживать меркурии в сравнении с атолом. Есть ли проблемы при их работе в сравнении с атолами?
5. philya 78 28.07.19 16:47 Сейчас в теме
(3) ответ ниже - промазал кнопкой.
4. philya 78 28.07.19 16:44 Сейчас в теме
(3) Надежны. У нас штук 400. У части был заводской брак - не включались, отремонтировали по гарантии. Те которые включились работают пока в киоск молния не ударит, а там как повезет. )

Мне нравятся больше Атолов тем, что перепрошиваются бесплатно и своими силами. В итоге специально обученный человек с ноутбуком ездит по киоскам, меняет ФН и заливает прошивку с поддержкой маркированной табачной продукции. В поддержке Меркурия на телефоне сидят не девочки, которые говорят "обратитесь в цто", а нормальные люди, которые могут даже подключить разработчиков ПО. Лента закидывается, есть автоотрезчик, скорость печати нормальная, честный юсб, стоят дешевле.

Есть ровно одна проблема: на самой дешевой тонкой кассовой ленте в конце катушки начинает делать гормошку из чека - при использовании нормальной бумаги проблем нет.
6. aspirator23 340 28.07.19 20:51 Сейчас в теме
(4) Спасибо. "..Нормальные люди.." - это действительно проблема. :)
7. user1871052 15.12.22 11:27 Сейчас в теме
Здравствуйте. Как с вами можно связаться (автор статьи (philya)?
Нам очень нужно решить точно такую же проблему. Мы хотели бы обратиться к вам за помощью. Как с вами можно связаться?
8. philya 78 21.12.22 23:41 Сейчас в теме
(7) я отошел от кассовых аппаратов и 1с. Вряд ли я смогу вам помочь.
Оставьте свое сообщение