ЧПМ Меркурий 130 и z-отчёт

Модели:
Меркурий-115Ф, Меркурий-119Ф, Меркурий-130Ф, Меркурий-180Ф, Меркурий-185Ф, Меркурий-МФ...
Ответить
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Здравствуйте. Подскажите , пожалуйста, как быть в данной ситуации.
Приобрели для пробы ЧПМ Меркурий 130, прошивка 130Ru200. Аппарат перевёл в режим ФР. Сначало опробовал kkmnetsrvdbf_io.KKMNetDBSrvDataGate. Но скорость печати чеков оказалась слишком маленькая. Поэтому воспользовался внешней оле-обёрткой DynamicWrapper. Чеки распечатываются, скорость устраивает. Но на следующий день возникла проблема с закрытием кассовой смены - z- отчёт. Так как аппарат в режиме ФР, то z-отчёт попытался сделать программно. При выполнении команды ZReport() в программе ошибки не выскакивает. Но в самом аппарате сразу же после надписи РЕГ СЕРВ, выдаёт ERR 042 - ошибка подключения к серверу.
Подскажите, пожалуйста, как это победить? "Закрыть смену" удаётся только через замыкание контактов и Clear 1.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

а у Вас в ККМ как опции 21 и 22 выставлены?
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Проблема решилась. Дело было в том, что после очередного обнуления забыл активизировать память. После активизации и установки ИНН, закрытие кассовой смены прошло хорошо.
Но теперь возникла новая проблема. Какой командой считывать данные о номере чека. Эти данные мне нужны для контроля базы на 1С с пробитыми чеками.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

с ole оберткой не подскажу, а вот DrvMercFR.dll появилась функция GetLastDocNum() которую нужно вызывать после закрытия чека.
возможно вам пригодится ветка viewtopic.php?f=19&t=20 , там FR Драйвер.zip содержит и новую DrvMercFR.dll и исходники в том числе frole.exe
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Спасибо. Попытаю драйвер :-)
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Да, всё получилось. Номер чека выводится с последним драйвером. Может кому пригодится код.
//===создаю объект внешней ОЛЕ обёртки
ОЛЕ_Клиент=СоздатьОбъект("DynamicWrapper");
//===регистрирую команды из исходной библиотеки
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "Connect", "i=clts", "f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "Xreport","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "Zreport","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "GetExErrorCode","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "Disconnect","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "QueryEcrIdent","i=ccc", "f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "OpenReceipt","i=l","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "AddRecEntry","i=dlldllls", "f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "AddPay","i=ldd", "f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "CloseReceipt","i=l","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "RegisterOper","i=ls","f=s", "r=l");
ОЛЕ_Клиент.Register("DRVMercfr.DLL", "GetLastDocNum","f=s", "r=l");
//===соединяюсь
ОЛЕ_Клиент.Connect(1, 9600, 400, "000000");
//===определяю продавца
ОЛЕ_Клиент.RegisterOper(1,"Петрова");
//====открываю чек
ОЛЕ_Клиент.OpenReceipt(0);
//===добавляю товар
ОЛЕ_Клиент.AddRecEntry(Цена,Количество,0,0,1,0,0,ИмяТовара);
//===закрываю чек с печатью
ОЛЕ_Клиент.CloseReceipt(1);
//===возвращаю чек последней продажи
НомерЧека= (ОЛЕ_Клиент.GetLastDocNum());
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

Спасибо igv1, думаю пригодится.
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Нарисовалась ещё одна проблема. В драйвере DRVMercfr.DLL процедура RegisterOper(int OperNum, char OperName) игнорирует номер и имя оператора. При обращении к ней всегда выбирается первая позиция из списка кассиров. Было бы неплохо доработать это.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

igv1 писал(а):Нарисовалась ещё одна проблема. В драйвере DRVMercfr.DLL процедура RegisterOper(int OperNum, char OperName) игнорирует номер и имя оператора. При обращении к ней всегда выбирается первая позиция из списка кассиров. Было бы неплохо доработать это.
параметры (int OperNum, char OperName) заложены на будущее. Сейчас в функции RegisterOper производится регистрация в ККМ по паролю переданному в функции Connect. Соответственно по паролю и идентифицируется оператор.
Аватара пользователя
shipvsv
Сообщения: 2
Зарегистрирован: 03 мар 2011, 16:35

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение shipvsv »

Shtirlic писал(а):Сейчас в функции RegisterOper производится регистрация в ККМ по паролю переданному в функции Connect. Соответственно по паролю и идентифицируется оператор.
Какой-бы пароль не вводил - всё равно регистрируется первый кассир. Использовал примеры "TESTDll" и "TESTDll2". И ещё смотрел монитором порта, в ЧПМ символы валяться одинаковые вне зависимости от содержимого поля "ПАРОЛЬ", такое ощущение что dll -ка игнорирует содержимое этого поля.
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Да, разные пароли не определяют кассира по списку.
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

shipvsv писал(а):
Shtirlic писал(а):Сейчас в функции RegisterOper производится регистрация в ККМ по паролю переданному в функции Connect. Соответственно по паролю и идентифицируется оператор.
Какой-бы пароль не вводил - всё равно регистрируется первый кассир. Использовал примеры "TESTDll" и "TESTDll2". И ещё смотрел монитором порта, в ЧПМ символы валяться одинаковые вне зависимости от содержимого поля "ПАРОЛЬ", такое ощущение что dll -ка игнорирует содержимое этого поля.
Опцию №7 установите в 0, по умолчанию ККМ в упрощенном режиме (7в1).
Аватара пользователя
igv1
Сообщения: 7
Зарегистрирован: 01 мар 2011, 11:18

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение igv1 »

Спасибо, проверю.
Аватара пользователя
shurik_klgd
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:50

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение shurik_klgd »

Все работает, но
1. SendText возвращает постоянно ошибку 18, т.е. не работает. Причем если запустить testdll где также есть SendText такая же ерунда. В чем может быть проблема?

2. При добавлении скидки в чек "текстовое название скидки" игнорируется? Поменять никак, типа "скидка 5%", "скидка 10%" и т.д?
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

shurik_klgd писал(а):Все работает, но
1. SendText возвращает постоянно ошибку 18, т.е. не работает. Причем если запустить testdll где также есть SendText такая же ерунда. В чем может быть проблема?

2. При добавлении скидки в чек "текстовое название скидки" игнорируется? Поменять никак, типа "скидка 5%", "скидка 10%" и т.д?
1. в документации функции SendText нет соответственно её поддержки тоже нет. В dll такая функция есть, а в ККМ нет.
сделать её не так сложно и для тестовых задач, что то подобное используется, но для штатной работы этого делать нельзя так как могут пойти махинации по печати продаж в обход регистрирующих узлов.
2. К сожалению действительно текстовое название скидки игнорируется, возможность была сделана для будущих версий.
Аватара пользователя
shurik_klgd
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:50

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение shurik_klgd »

спасибо за четкий и ясный ответ
Аватара пользователя
shurik_klgd
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:50

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение shurik_klgd »

Выяснилась еще одна непрятная вещь в функции добавления позиции в чек AddRecEntry параметр Quantity (количество) целочисленный...
Нельзя поменять на double?
Аватара пользователя
shurik_klgd
Сообщения: 23
Зарегистрирован: 08 апр 2011, 16:50

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение shurik_klgd »

извиняюсь, за этим параметром идет QuantityPrec,
т.е. например 0.125 регистрируется, как я понял, след образом
AddRecEntry(Цена,125,3,0,1,0,0,Наименование);
Аватара пользователя
Shtirlic
Сообщения: 377
Зарегистрирован: 18 фев 2011, 11:21

Re: ЧПМ Меркурий 130 и z-отчёт

Сообщение Shtirlic »

shurik_klgd писал(а):извиняюсь, за этим параметром идет QuantityPrec,
т.е. например 0.125 регистрируется, как я понял, след образом
AddRecEntry(Цена,125,3,0,1,0,0,Наименование);
да, Вы правильно поняли
Ответить