gifts2017

Подключение фискального регистратора MG808TL (на базе Toshiba) и MG-P800TL (на базе POSNET)

Опубликовал Evgeny K (mar_a) в раздел Оборудование - Фискальный регистратор

На сегодня существует большое множество фискальной техники. И для удобства как пользователей, так и программистов 1С выкладываю свои наработки по еще одному фискальному аппарату, собранному на базе Toshiba модель MG808TL.
Добавлена возможность работы с еще одним аппаратом MG-P800TL (подробнее о аппарате: http://gera-service.com.ua/products/9/663/ )

По MG N707TS задаем свои вопросы не связанные с RS232 соединением тут: http://infostart.ru/public/376254/

Решил поделиться с миром наработкой в 1С для фискального принтера (РРО) (ЭККА).
Не судите строго, выполнено в виде консоли для подключения и демонстрации работы с 1С.

Интерфейс собрал в себя все необходимые функции для повседневной работы с фискальным аппаратом и рекомендуется для более быстрого и удачного согласования с 1С 8.2 (8.3) или 7.7 в Ваших проектах или на базе существующего.

Для регистрации драйвера в системе необходимо скопировать исполняющий exe файл в любое удобное место на компьютере, где ожидается запуск 1С. После чего он доступен для вызова под именем MGT808TL.FiscalPrinter


Кроме всего прочего позволяет печатать:

- штрих код чека EAN-128,

- штрих-код в чеке EAN-13,

- произвольный штрихкод в чеке EAN-13,

штрихкод товара в чеке EAN-13,

- загружать в аппарат логотип (только Ч/Б монохромный .BMP)


Добавили возможность запрашивать время до блокировки аппарата. (см. скрин)

Как известно аппарат должен работать без передачи данных в налоговую не более 72 часов, иначе должен заблокироваться! 

Для этого необходимо обновить и драйвер MGT808TL Driver for 1C !

С 9.02.2016 добавлен новый версии 1.0.0.5 - если у Вас стрый OLE  - обновите до 1.0.0.5 !

Перерегистрация драйвера :
1) Запустить MGT808TL.exe c праметром -u и правами администратора

2) Запустить MGT808TL.exe с правами администратора

Все с Обновленным OLE можно работать.


Пример инициализации на VBS:

Set fp = CreateObject("MGT808TL.FiscalPrinter")

Всем удачи...

Если появятся вопросы и пожелания по доработке, милости просим - пишите.

Появилась возможность работы с MG-P800TL (на базе POSNET) задаем вопросы по его работе...

По MG N707TS задаем свои вопросы, не связанные с RS232 соединением, тут: http://infostart.ru/public/376254/

Скачать файлы

Наименование Файл Версия Размер
MGT808TL Driver for 1C 2
.exe 128,00Kb
09.02.16
2
.exe 1.0.0.5 128,00Kb Скачать
1c-v8.2 - BlockTime 9
.epf 39,43Kb
09.02.16
9
.epf 1.10 39,43Kb Скачать
1c-7.7 10
.ert 283,50Kb
08.12.14
10
.ert 1.0.01 283,50Kb Скачать
Описание методов OLE объекта 3
.pdf 115,94Kb
09.07.15
3
.pdf ReadME.pdf 115,94Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Evgeny K (mar_a) 08.06.15 10:58
Буду благодарен за найденные ошибки, неточности и разумеется пожелания по улучшению.
2. Дмитрий Елисеев (w-divin) 10.06.15 14:59
а умеет работать с сетевым MG N707TS? весь найденный мною софт для 707 (и на оф. сайте и у дилеров) ссылается на 808...
3. Evgeny K (mar_a) 10.06.15 17:00
Да умеет , если будут проблемы (а они будут). то обращайтесь

Протокол обмена у этих Аппаратов один и тот-же.

То обратите внимание , на то что Длинна строки товаров разная !
Второе кол-во строк на индикаторе 16 , а не 20 как 808 !
По разномуу называются ТИПЫ оплат.

Если эти и еще некоторые нюансы учесть то получим одновременную работу на 2х аппаратах и 707 и 808.
4. Evgeny K (mar_a) 10.06.15 17:02
Сейчас напишем демонстрацию работы с 1С через HTTP (JSON).
Если будут вопросы и рекомендации пишите пока состряпаем бету версию.
Заранее спасибо.
5. Evgeny K (mar_a) 10.06.15 18:12
(2) w-divin, Да умеет , если будут проблемы (а они будут). то обращайтесь
6. Андрей Выставной (andrvyst) 12.06.15 16:48
Огромное спасибо за обработку. Вместе с описанием OLE сервера позволила легко написать обработку обслуживания для розницы.

Но есть ситуация с округлением в скидке. Подскажите пожалуйста.
Например, 1с насчитывает скидку в 0,46 копеек. Аппарат считает скидку в 0,47 коп.
Сумма чека в 1с = 27,09. Аппарат, соответственно, оплачивает сумму в 27,08., готивкой = 27,09 и сдача 0,01
Скидка в %
Использую Объект.Драйвер.GiveDiscount(Скидка,0,0,"Знижка:");

Может подскажите по каким правилам округляет аппарат? Потому как в документации о правилах округления ни слова.
Или может я чего делаю не так.

7. Evgeny K (mar_a) 15.06.15 12:37
(6) andrvyst,
0,46 копеек = 1копейка ? Передается число ЦЕЛЫХ копеек.
Будьте так любезны округлить ЛЮБЫМ известным ВАМ методом, с отбрасыванием или математическим округлением до целого числа копеек.
И все будет ОБИ-ОК.

Теперь перефразирую ВОПРОС , т.к. он был неправильно задан:
(Поправте если что не так)
Был товар на сумму 27.55 грн (27грн 55коп)
Хочу Выполнить абсолютную скидку в 46копеек (0,46грн)
Теперь ответ:
Создал - в своей конфигурации и пробиваю одну позицию на 27.55 грн со скидкой в 46копеек
В результате Сумма 27,09 грн
Закрываю ее подрасчет и Готiвкою 27.09грн
Сдача =0.00

Ошибок нет , проверил на своем тестовом аппарате.
Если появляется ошибка прошу привести код посылки.
Ради теста выводим через Сообщить все параметры передваемые в аппарат , суммы, скидки и т.д.
Я думаю что-то банальное...
8. Strawberry (Strawberry) 18.06.15 08:31
1C 7.7
ЭККР=СоздатьОбъект("MGT808TL.FiscalPrinter");
ЭККР.Connect(Порт,Скорость);
ЭККР.GetXReport();

GetXReport: Ошибка протокола обмена.
Получаем ошибку метод не существует.
Вопросы:
1. При каких условиях работает GetXReport ??
2. Как можно получить номера а) последжнего чека продаж ; б) последнего чека возврата; в) последнего Z отчета
9. Evgeny K (mar_a) 18.06.15 10:55
(8) Strawberry,
Причин может быть несколько:
-Нет бумаги,
-неправильно подключен (не тот порт или скорость).
-Время работы превышает 24 часа - это для любой команды пока не снимете Z отчет.
-Данный объект работает только в режиме чтения - следовательно что-то записать невозможно.

Судя по коду ...
как идет обращение к этой функции , мне интуитивно непонятно , а что ожидаете от этой комманды?
Например первое встреченное мною это получение количества чеков ЭККР.GetXReport().ChecksCount
Где в моем коде Вы такое( ЭККР.GetXReport(); ) встретили? Я исправлю...
-------------------------------------------
Количество чеков продаж соответствует ЭККР.GetXReport().ChecksCount т.е. последний распечатанный чек на сегодня.
Количество чеков возвратов соответствует ЭККР.GetXReport().RefundChecksCount
Количество Z отчетов в ЭККР.GetXReport() - несуществует!

Да добавил файл с ОПИСАНИЕ методов OLE объекта.
Увы незнаю как съделать его бесплатным.
10. Strawberry (Strawberry) 18.06.15 13:50
(9) mar_a,
по Z отчету не количество а номер последнего как можно получить ??

киньте в личку описание и ert файлик


по поводу кода

//25 Получение информации о чеках продаж и выплат///////////////////////////////////////
Процедура ЧекИнфо()  
 Перем ПоследнийЧекПродажи,
 	   ПоследнийЧекВозврата;  
 	   
 	   ///Вся информация получается из GetXReport 
 	
         Xreport= ЭККР.GetXReport();
		  
 	//25.1 Получение последнего номера чека продажи///////////////////////////
	ПоследнийЧекПродажи = Число(Xreport.ChecksCount);
    Если (Результат() <> 0) Тогда
	 Сообщить ("--------------------------------------------------");	
	 Сообщить (СообщениеОбОшибке(),"!");
	 Сообщить ("Байт статуса    - "+ Строка(СтатусРегистратора()) + РазделительСтрок +
	 		   "Байт результата - "+ Строка(Результат()),"!");
	 Возврат;		   
	КонецЕсли;     	

  //25.2 Получение сумм продаж по всем чекам текущей смены///////////////////
     SumPayt=Xreport.SumByPayType;
	 
    СуммаПродажОпл1=Число(SumPayt.ByCard);
	СуммаПродажОпл2=Число(SumPayt.ByCredit); 
	СуммаПродажОпл3=Число(SumPayt.ByCheck);
	СуммаПродажОпл4=Число(SumPayt.ByCash); 
	
	SumTaxt=Xreport.SumByPayType;
	
	 СуммаПродажА=Число(SumTaxt.TaxTypeA);
	 СуммаПродажБ=Число(SumTaxt.TaxTypeB);
	 СуммаПродажВ=Число(SumTaxt.TaxTypeV);
	 СуммаПродажГ=Число(SumTaxt.TaxTypeG);
	 СуммаПродажД=Число(SumTaxt.TaxTypeD);
	 СуммаПродажЕ=Число(SumTaxt.TaxTypeE);
	
	СуммаПродажОпл = СуммаПродажОпл1+СуммаПродажОпл2+СуммаПродажОпл3+СуммаПродажО­пл4; 
	СуммаПродаж =  СуммаПродажА+СуммаПродажБ+СуммаПродажВ+СуммаПродажГ+СуммаПро­дажД+СуммаПродажЕ;  
	
	Если (СуммаПродаж<СуммаПродажОпл) Тогда СуммаПродаж=СуммаПродажОпл; КонецЕсли; 
	
    Если (Результат() <> 0) Тогда
	 Сообщить ("--------------------------------------------------");	
	
	 Возврат;		   
	КонецЕсли;     	

	//25.3 Получение последнего номера чека выплаты////////////////////////////
	ПоследнийЧекВозврата =  Число(Xreport.RefundChecksCount);
    Если (Результат() <> 0) Тогда
	
	 Возврат;		   
	КонецЕсли;     	

    //25.4 Получение сумм выплат по всем чекам текущей смены/////////////////// 
	
	 RefSumPayt=Xreport.RefundSumByPayType;
	 СуммаВозврА=Число(RefSumPayt.TaxTypeA);
	 СуммаВозврБ=Число(RefSumPayt.TaxTypeB);
	 СуммаВозврВ=Число(RefSumPayt.TaxTypeV);
	 СуммаВозврГ=Число(RefSumPayt.TaxTypeG);
	 СуммаВозврД=Число(RefSumPayt.TaxTypeD);
	 СуммаВозврЕ=Число(RefSumPayt.TaxTypeE);
	
	
	СуммаВыплат = СуммаВозврА+СуммаВозврБ+СуммаВозврВ+СуммаВозврГ+СуммаВозврД+­СуммаВозврЕ;
	
    Если (Результат() <> 0) Тогда
	 Сообщить ("--------------------------------------------------");	
	
	 Возврат;		   
    КонецЕсли;
	
	Предупреждение ("Номер последнего чека продажи: " + Число(ПоследнийЧекПродажи) + РазделительСтрок +
 	                "Сумма продаж составляет: " + СокрЛ(Формат(СуммаПродаж/100,"Ч12.2")) + " Грн." + РазделительСтрок +
 					"Номер последнего чека выплаты: " + Число(ПоследнийЧекВозврата) +РазделительСтрок +
 					"Сумма выплат составляет: " + СокрЛ(Формат(СуммаВыплат/100,"Ч12.2")) + " Грн.");	                                                     
КонецПроцедуры  
...Показать Скрыть
11. Evgeny K (mar_a) 18.06.15 14:20
(10) Strawberry,
И я о том-же , временно поместил ЭККР.GetXReport(); в переменную Xreport, и никто к этой переменной не обращается на прямую.
Обращение ведется (смотрите ниже) например SumPayt=Xreport.SumByPayType; и в переменную SumPayt записано значение.Xreport.SumByPayType; но никак не ЭККР.GetXReport() (или Xreport.ChecksCount - которая интересует ВАС)
Странно но в моей 1С 7.7. конструкция вида ЭККР.GetXReport().SumByPayType неработала.
Поэтому пришлось прибегнуть к временной переменной (по сути объекту) Xreport.

Ошибок тут нет, я просто заострил на этом внимание.
Ну а если вытаскивать непосредственно ЭККР.GetXReport(); - то ничего не выйдет - объекта такого действительно не существует.
Существует Xreport.RefundChecksCount, Xreport.ChecksCount и т.д.


по Z отчету не количество а номер последнего как можно получить ??
Никак... нет такого в свойствах данного аппарата (косвенно только) или посмотреть в кассовой книге РРО.
Для чего ВАМ этот номер?
12. Strawberry (Strawberry) 18.06.15 15:56
(11) mar_a,
Номер Z отчета храню в в доке 1С для проверки. Хм и так исторически сложилось что номер дока в РРО дублируется в 1С

Ок, вечером попробую переменную Xreport
13. Evgeny K (mar_a) 18.06.15 16:43
(12) Strawberry, Увы - разработчики посчитали это ненужным.
Но есть например косвенные методы:
При снятии скажем Z отчета - можно вести сквозную нумерацию внутри 1С, (снял Z отчета - увеличил значение переменной на 1 и сохранил в каком-то поле БД). При следующем снятии опять добавил к существующему числу 1 и сохранил в БД.

Чаще людей интересует номер пакета в КЛЭФ который доступен в момент снятия Z отчета
NumberKLEF=ЭККР.PrintZReport(ОтчетыПароль);
Этот номер будет полезен в при печати скажем копии ленты от NumberKLEF_start до NumberKLEF_End
В функции PrintReportById
Сам-же номер Zотчета нигде в протоколе в явном виде более не фигурирует.
Чаще это действительно Номер КЛЭФ (NumberKLEF)
14. Strawberry (Strawberry) 18.06.15 17:00
(13) mar_a,

В самом протоколе то оно есть, его нет в ОЛЕ сервере

вот документация

GetDayReport прочитать данные дневного отчета
Код: 42.
Параметры Размер Формат
таг нужных данных 1 бин
Данные Размер Формат
Нет параметров
счетчик чеков продаж 2 бин
счетчики продаж по налоговым группам и формам оплат 4*(6+10) бин
дневная наценка по продажам 4 бин
дневная скидка по продажам 4 бин
дневная сумма служебного вноса 4 бин
счетчик чеков выплат 2 бин
11
счетчики выплат по налоговым группам и формам оплат 4*(6+10) бин
дневная наценка по выплатам 4 бин
дневная скидка по выплатам 4 бин
дневная сумма служебной выдачи 4 бин
Таг 0
текущий номер Z-отчета 2 бин
счетчик чеков продаж 2 бин
счетчик чеков выплат 2 бин
дата конца смены в формате ДДММГГ 3 BCD
время конца смены в формате ЧЧММ 2 BCD
дата последнего дневного отчета в формате ДДММГГ 3 BCD
счетчик артикулов 2 бин
Таг 1
суммы налогов по налоговым группам для наложенного НДС 4*(6+6) бин
Таг 2
количество аннулированных чеков продаж 2 бин
количество аннулированных чеков выплат 2 бин
сумма аннулированных чеков продаж 4 бин
сумма аннулированных чеков выплат 4 бин
количество отказов продаж 2 бин
количество отказов выплат 2 бин
сумма отказов продаж 4 бин
сумма отказов выплат 4 бин


тег 0 содержит данные о текущем Z отчете
15. Evgeny K (mar_a) 18.06.15 17:07
(14) Strawberry,
Я передам пожелание на доработку , думаю в понедельник обновить.
16. Strawberry (Strawberry) 18.06.15 18:53
(15) mar_a,

Это лог
18:46:15.390 Connect - COM1 9600bps
18:46:15.390 -> (7) 10 02 00 00 00 10 03
18:46:15.578 <- (126) 10 02 00 00 00 00 20 20 45 49 43 33 30 38 30 30 31 34 39 20 32 34 2D 30 35 2D 31 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 90 85 F2 91 92 90 80 92 8E 90 20 4D 47 20 4E 37 30 37 54 53 0C 93 8A 90 80 F4 8D 80 20 32 30 31 34 18
18:46:15.578 data (116) 20 45 49 43 33 30 38 30 30 31 34 39 20 32 34 2D 30 35 2D 31 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 90 85 F2 91 92 90 80 92 8E 90 20 4D 47 20 4E 37 30 37 54 53 0C 93 8A 90 80 F4 8D 80 20 32 30 31 34 18 2A 2A 2A 2A 2A 2A
18:46:15.578 -> (7) 10 02 01 00 FF 10 03
18:46:15.765 <- (126) 10 02 01 00 00 00 20 20 45 49 43 33 30 38 30 30 31 34 39 20 32 34 2D 30 35 2D 31 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 90 85 F2 91 92 90 80 92 8E 90 20 4D 47 20 4E 37 30 37 54 53 0C 93 8A 90 80 F4 8D 80 20 32 30 31 34 18
18:46:15.765 data (116) 20 45 49 43 33 30 38 30 30 31 34 39 20 32 34 2D 30 35 2D 31 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 90 85 F2 91 92 90 80 92 8E 90 20 4D 47 20 4E 37 30 37 54 53 0C 93 8A 90 80 F4 8D 80 20 32 30 31 34 18 2A 2A 2A 2A 2A 2A
18:46:15.765 Connect - Ok
18:46:26.640 -> (7) 10 02 02 2A D4 10 03
18:46:26.843 <- (144) 10 02 02 2A 00 00 20 03 00 B8 C9 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B8 C9 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 30 D4
18:46:26.843 data (134) 03 00 B8 C9 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B8 C9 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 30 D4 05 00 00 00 00 00
18:46:26.843 GetXReport - Ошибка протокола обмена.


это то что хотелось
ЭККР=СоздатьОбъект("MGT808TL.FiscalPrinter");
ЭККР.Connect(Порт, СкоростьПорта );
Xreport= ЭККР.GetXReport();
ПоследнийЧекПродажи = Число(Xreport.ChecksCount);

1с отписала
Xreport= ЭККР.GetXReport();
{ХХХХХХХХХХХХХХХХХХХХХХХХ}: GetXReport: Ошибка протокола обмена.

пробовал под 8.2 метод тоже возвращает ошибку
18. Evgeny K (mar_a) 19.06.15 14:59
(17) Strawberry, результат стабильный: не работает/
Неработает что?
И с каким аппартом?
С 808 - сам проверял - все в конфигурации работает для 1С 8.2 версия аппарата MG-08
И кстати драйвер я не видел что-б у меня вообще кто-то скачивал.
19. Strawberry (Strawberry) 19.06.15 16:15
(18) mar_a,
аппарат MG N707TS
подключенный через сом порт
под Windows XP 1с 27 релиз
драйвер скачан с сайта производителя

неработает команда
Xreport= ЭККР.GetXReport();
{ХХХХХХХХХХХХХХХХХХХХХХХХ}: GetXReport: Ошибка протокола обмена.

см. посты выше там приведен лог оле сервера
20. Evgeny K (mar_a) 19.06.15 16:31
(19) Strawberry,
Вы УВАЖАЕМЫЙ внимательнее прочтите 2 пункта.
1) Название темы (а именно MG808TL)
2) (3) Если эти и еще некоторые нюансы учесть то получим одновременную работу на 2х аппаратах и 707 и 808.

Во всех Ваших сообщениях небыло указано , что идет работа с 707!!!
3) Только пишем (4) под сетевое обращение к 707 , не под RS232 !!!

Действительно эта опция GetXReport() не работает в 707 аппарате.
Теперь стало все на свои места... (понятно зачем сбросили ЛОГ). Я в курсе про эти вещи!!!
21. Strawberry (Strawberry) 19.06.15 17:03
(20) mar_a,
а будет ли решение для 707 для опции GetXReport() ??
22. Evgeny K (mar_a) 19.06.15 17:12
(21) Strawberry, Давайте дождемся пока он (707) в серию выйдет.
Разработчик пока еще обкатывает пробную партию.
Надо будет исправить , конено-же. Пока такой инфы нет.
23. Евгений Сосна (pumbaE) 20.06.15 10:22
(4) mar_a, а зачем пишите? Или вы официальный подрядчик?
24. Evgeny K (mar_a) 22.06.15 09:37
(23) pumbaE, Зачем пишу ответы?
Мне задают вопросы - я отвечаю.

Почему 707 совместим только на 80% с 808 (Нюансы я уже писал, и дал намек что это(3) еще не все нюансы).
Совместимость пока на 80-90% , иначе я бы дал заглавие и 707 и 808.
Но над этим повторюсь люди работают.

Основной упор в 707 будет дан на сетевую (Ethernet) коммуникацию. Поэтому режим совместимости у этих двух аппаратов только по RS232 (СОМ-порту).
25. Евгений Сосна (pumbaE) 22.06.15 10:07
(24) mar_a, я знаю про их совместимость. Меня в основном интересует вопрос "вы официальный подрядчик" по интеграции с 1с или нет. Я просто видел, заготовки кода для взаимодействия 1с и 707 по json с digest авторизацией и у меня возникли вопросы и пожелания разработчикам по этой обработке.
Хотелось бы донести им прям в уши.
26. Evgeny K (mar_a) 22.06.15 10:35
(25) pumbaE, Хотите написать к разработчику железа?
Хотите высказатья - прошу в личку, я передам ВАШИ пожелания в уши разработчику железа.
27. Анатолий Далека (An79) 05.07.15 15:10
День добрый!

Может кто здесь поможет...

Для аппарата MG808TL команды PrintXReport и PrintZReport с параметром пароля - 0 проходят на ура. А вот для аппарата MG N707TS выдает "Ошибка ЭККР 12: Неправильный пароль".

Пароль писал и "0", "0000", 0.

При том что остальные очеты (по артикулам и т.д.) с этим же паролем (0) печатаются нормально.

В чем может быть проблема, кто сталкивался?

Спасибо!
28. Владимир Тютюн (tyutyun) 05.07.15 19:38
Поделитесь, пожалуйста готовой обработкой для работы этого РРО в "УТ для Украины".
29. Evgeny K (mar_a) 06.07.15 10:02
(27) An79, Ну 100% OLE объект у меня не скачивали... (как предположение MGT808TL Driver for 1C). Заметьте именно OLE объект.
30. Evgeny K (mar_a) 06.07.15 10:08
(28) tyutyun, А этого примера недостаточно, чтобы даже скопировать функции и вставить в нужное место?
Или есть подводные камни именно с УТ ?
31. Евгений Сосна (pumbaE) 06.07.15 11:55
32. Evgeny K (mar_a) 07.07.15 14:12
(31) pumbaE, Спасибо и от меня лично. Полезно ознакомится, т.к. никогда не писал под УТ, да и вообще наверное надо было делать обработку под универсальную конфигурацию?
Или неимеет смысла ? (поскольку их очень много и не факт, что вообще нужна будет под каждую стандартую обработку)
33. Евгений Сосна (pumbaE) 07.07.15 14:38
(32) mar_a, имеет, по факту сейчас есть два стандарта для уф и не уф конфигураций. Данная обработка подойдет для УТП, УПП 1.3, Бухгалтерия, УТ 2.3 без всяких передолок, т.е. 80% конфигураций покрываете, для уф УТ 3.0 и УНФ немного по другому надо делать.
34. Strawberry (Strawberry) 09.07.15 14:18
(27) An79, OLE брали с сайта разработчика. Там в архиве лежит два EXE файла один глюкавый - непечатает отчеты, второй нормальный. Стал на эти грабли у заказчика.
35. Evgeny K (mar_a) 09.07.15 14:42
(34)Где архив ? Я сегодня только выложил exe файл, без архива... Версия должна быть 1.0.0.3
Последняя версия более стабильно работает на различных СОМ портах (вне зависимости родной СОМ порт материнки или внешний расширитель портов или RS 2 USB переходник).
36. Станислав Романенко (stas_roman) 25.07.15 12:55
Я извиняюсь, но как тут скачать?
37. Tiger77 (Tiger77) 10.11.15 14:17
Подскажите печатаем чек на MG N707TS через COM-порт.

На некоторые товары в SetArticle получаем ошибку "Неправильное описание артикула". Попробовали ограничить длину артикула до 35 символов, ошибка стала появляться намного реже, но все равно есть. В названии каких-то спецсимволов не обнаружено.

С чем это может быть связано, что смотреть ?

38. Evgeny K (mar_a) 11.11.15 12:57
(37) Tiger77,
На некоторые товары ? Какие именно?
Чем больше информации тем мне проще понять!
-----------------------------
Читаю мысли удаленно (такой опции нет).
-----------------------------
Неправильное описание артикула - это ответ СТАРОГО OLE драйвера ... не говорит о том , что ошибка именно в описании товара.

Попробовали ограничить длину артикула до 35 символов

Я свободно пробивал товары и в 50 символов !!! Ошибка явно не там.

С чем это может быть связано, что смотреть ?

Так хочется ответить в рифму...
Но я сегодня в хорошем настроении поэтому отвечу так:
Необходим ЛОГ если это было через мой драйвер (а его скачал только 1 чел и это УВЫ не Вы).
Что посылалось , с какими налоговыми ставками, был ли на этом месте ранее другой товар , сколько чеков было (тонкий намек что стопор происходит на 7...8 чеках), переключили ли аппарат в RS-232 протокол (пунк по середине , а не верхний!!!) и т.п.

Кстати не писал о этом, но версия драйвера давно обновлена с 1.0.0.3 до 1.0.0.4

Слишком мало информации для рекомендации...
39. Андрей Выставной (andrvyst) 18.11.15 18:54
mar_a,
Подскажите пожалуйста как бороться со следующей ситуацией.
Использую драйвер 1.0.0.4 На некоторые товары (например, Активіа Біфідойогурт питний 1,5% пет 290г полун-су ) регистратор выдает ошибку "Ошибка ЭККР 28: ошибка в описании артикула.". Следующие чеки не пробиваются - помогает только закрытие смены. После закрытия, этот же чек, который не пробивался, пробивается без ошибок.
__
В принципе вопрос решен. Ошибка возникает если в течении смены менялось наименование(например, Хаеб на Хлеб). Нельзя ли в следующей версии Ole-драйвера пофиксить это?
Спасибо.
40. Evgeny K (mar_a) 23.11.15 12:40
(39) andrvyst, Это не трабл - это требование налоговой.
Привидите пример в каком аппарате такое сработает?
Первая продажа - записывает товар с кодом в аппарат под кодом с которым он продавался (считайте индентификатор - это и есть код товара).
Изменение названия , цены, налога - приводит к изменению артикульной таблицы !!!
Собственно для этого необходимо использовать другой код товара - их в аппарате предостаточно.
На основании этих артикулов - можно выполнить отчет по проданным товаров из аппарата.

Хотя отвечу на вопрос ВАШИМИ дословно словами
Ошибка возникает если в течении смены менялось наименование(например, Хаеб на Хлеб). Нельзя
в течении открытой смены.
После снятия отчетов (закрытия смены) таблица артикулов разблокируется и работает в режиме динамического программирования.
41. Андрей Выставной (andrvyst) 23.11.15 15:06
(40) mar_a,
На аппарате Datecs FP-3530T(работаем на них 5 лет) у нас таких траблов не возникает( таблица артикулов аппарата хранится на компьютере к которому подключен аппарат в dbf файле)
Я понимаю, что так задумано и что требования налоговой такие. К сожалению, наименования номенклатуры у нас меняются(требования налоговой опять таки, подбивается наименование к наименованию поставщика).

Буду благодарен за найденные ошибки, неточности и разумеется пожелания по улучшению.


SetTime - строка в формате HH:MM:SS. В Вашей консоли, если переводить время до 10:00:00, время будет в формате H:MM:SS

В любом случае, спасибо Вам за ответ.
42. Evgeny K (mar_a) 23.11.15 16:17
(41) andrvyst,
На аппарате Datecs FP-3530T(работаем на них 5 лет) у нас таких траблов не возникает( таблица артикулов аппарата хранится на компьютере к которому подключен аппарат в dbf файле)

Никто не запрещал с первого раза пробивать товар с ПРАВИЛЬНЫМ названием...
Может таблица соответствий ?
Тогда это не только у Датексов , и у Марий (Резонанс) и др. производителей. Но все-таки правильнее не давать под одним и тем-же номером пробивать два разных товара.
Иначе этот аппарат не мог пройти серификацию ЧЕСТНО. Исходя из вышесказанного товар под кодом 1 можно пробить Водка а потом исправить на Мороженное (акцизный и неакцизный товар) под тем-же кодом - то аппарат абсолютно адекватно выдаст чек в обоих случаях (без снятия Z отчета)?
Ситуация номер 2: Комп подвис и надо выполнить отчет по товарам за текущую смену, но поскольку у ВАС таблица артикулов лежит на компе (а комп просто висит или умер) то снять этот отчет не представляется возможным (что нарушает правила налоговой)?

SetTime - строка в формате HH:MM:SS. В Вашей консоли, если переводить время до 10:00:00, время будет в формате H:MM:SS

Время передается для 808 как и в 707 в формате 09:12:00 (09 часов утра 12 минут 00 сек.) - это если смотреть напрямую через порт.
В OLE объект с помощью обработки передается действительно 9:12:00 причем в самом поле форме даже если указать 09:12:00 тут-же после нажатия кнопки передается 9:12:00 (проверил путем вывода переменной непосредственно) замечу что формат ставил ДФЛ=T .
Это связанно скорее всего с тем что я не профи в 1С и работы с типами переменных в 1С.
Через VBS время передается в правильном формате , если посылать именно 09:12:00
Поэтому честно БЛАГОДАРЮ - мой глюк.(за мое незнание).
Как поставить формат принудительно HH:MM:SS именно в 1С ?
43. Андрей Выставной (andrvyst) 23.11.15 17:10
(42) mar_a,
Исходя из вышесказанного товар под кодом 1 можно пробить Водка а потом исправить на Мороженное (акцизный и неакцизный товар) под тем-же кодом - то аппарат абсолютно адекватно выдаст чек в обоих случаях (без снятия Z отчета)?

Без снятия Z-отчета не выйдет. В общем ладно, буду выкручиваться по-другому)

Как поставить формат принудительно HH:MM:SS именно в 1С ?

Я сделал конкатенацией
	
        Время 	        = Формат('00010101100000', "ДФ=HHmmss");    //10:00:00
	ТекВремя  	= Формат(ТекущаяДата(), "ДФ=HHmmss");
	
	Если ТекВремя < Время Тогда
		ТекВремя = "0"+Час(ТекущаяДата())+":"+Минута(ТекущаяДата())+":"+Секунда(ТекущаяДата());
	КонецЕсли; 

	ЭККР.SetTime(ТекВремя); 
...Показать Скрыть
44. Evgeny K (mar_a) 23.11.15 17:48
(43) andrvyst,
Без снятия Z-отчета не выйдет. В общем ладно, буду выкручиваться по-другому)

По другому только кодТовара + 1 где кодТовара это обычный счетчик который постоянно в рамках ОТКРЫТОЙ рабочей смены будет прибавляться до 8000
Ну уж 8000 товаров за 1 смену точно не успеете пробить ;)
Потом Z отчет ну и новый день опять считаем от 1 до 8000.

По поводу конкатенации - это на костыль похоже, а не на стандартный метод.
Но спасибо , я б тоже так подтавил опору...
45. Андрей Выставной (andrvyst) 23.11.15 17:59
По другому только кодТовара + 1 где кодТовара это обычный счетчик который постоянно в рамках ОТКРЫТОЙ рабочей смены будет прибавляться до 8000

Спасибо огромное за идею!

По поводу конкатенации - это на костыль похоже, а не на стандартный метод.

Конечно костыль. В 4 утра только костыли и получаются
Спасибо Вам
46. Evgeny K (mar_a) 23.11.15 18:15
(45) andrvyst, Я вобщето так не рекомендую делать но если ВЫ ничего более путного не можете придумать, то ...
47. Tiger77 (Tiger77) 23.11.15 20:13
(38) Проблема оказалась не в 1С и не в драйвере. Проблема в прошивке кассового аппарата - он выдавал ошибку на 8-м по счету артикуле с начала дня.
48. Evgeny K (mar_a) 24.11.15 10:23
(47) Tiger77, И это даже не прошивка...
Сам с таким столкнулся, аппарат был подготовлен для работы по HTTP протоколу, а там другая разметка артикульной таблицы.
Я ВАМ намекал на это
сколько чеков было (тонкий намек что стопор происходит на 7...8 чеках), переключили ли аппарат в RS-232 протокол

Но Вы упорно не хотели давать полную информацию о ошибке...
Да проще переразметить область памяти, ну при перепрошивке это происходит автоматически. (Кстати убирается большее количество глюков).
49. Andrey Rusyn (nems) 27.11.15 19:11
(6) andrvyst,
та же проблема, подскажите как установить скидку на товар метод Объект.Драйвер.GiveDiscount(Скидка,0,0,"Знижка:") не срабатывает,
может это быть связано с тем что регистратор не фискализирован.
вот лог работы:

2015-11-27 18:02:07,986 INFO Driver - >> Size = 7 $ 10 02 01 00 ff 10 03
2015-11-27 18:02:08,154 INFO Driver - << Size = 128 $ 06 10 02 01 00 00 00 60 62 05 49 43 33 30 38 30 30 36 35 36 20 30 31 2d 30 37 2d 31 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 90 85 f2 91 92 90 80 92 8e 90 20 4d 47 20 4e 37 30 37 54 53 0c 93 8a 90 80 f4 8d 80 20 32 30 31 34 18 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0f 8f 8d 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 4d 47 2d 30 37 f3 10 03
2015-11-27 18:02:08,288 INFO Driver - >> Size = 11 $ 10 02 02 32 00 00 00 00 cc 10 03
2015-11-27 18:02:08,332 INFO Driver - << Size = 21 $ 06 10 02 02 32 00 00 60 08 83 8e 92 49 82 8a 8e 9e 40 10 03
2015-11-27 18:02:08,490 INFO Driver - >> Size = 11 $ 10 02 03 32 00 00 01 00 ca 10 03
2015-11-27 18:02:08,527 INFO Driver - << Size = 18 $ 06 10 02 03 32 00 00 60 05 97 85 8a 8e 8c a6 10 03
2015-11-27 18:02:08,692 INFO Driver - >> Size = 11 $ 10 02 04 32 00 00 02 00 c8 10 03
2015-11-27 18:02:08,730 INFO Driver - << Size = 19 $ 06 10 02 04 32 00 00 60 06 8a 90 85 84 88 92 27 10 03
2015-11-27 18:02:08,894 INFO Driver - >> Size = 11 $ 10 02 05 32 00 00 03 00 c6 10 03
2015-11-27 18:02:08,933 INFO Driver - << Size = 20 $ 06 10 02 05 32 00 00 60 07 8a 80 90 92 8a 8e 9e 80 10 03
2015-11-27 18:02:09,094 INFO Driver - >> Size = 11 $ 10 02 06 32 00 00 04 00 c4 10 03
2015-11-27 18:02:09,139 INFO Driver - << Size = 25 $ 06 10 02 06 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 55 10 03
2015-11-27 18:02:09,295 INFO Driver - >> Size = 11 $ 10 02 07 32 00 00 05 00 c2 10 03
2015-11-27 18:02:09,343 INFO Driver - << Size = 25 $ 06 10 02 07 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 54 10 03
2015-11-27 18:02:09,497 INFO Driver - >> Size = 11 $ 10 02 08 32 00 00 06 00 c0 10 03
2015-11-27 18:02:09,545 INFO Driver - << Size = 25 $ 06 10 02 08 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 53 10 03
2015-11-27 18:02:09,699 INFO Driver - >> Size = 11 $ 10 02 09 32 00 00 07 00 be 10 03
2015-11-27 18:02:09,746 INFO Driver - << Size = 25 $ 06 10 02 09 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 52 10 03
2015-11-27 18:02:09,901 INFO Driver - >> Size = 11 $ 10 02 0a 32 00 00 08 00 bc 10 03
2015-11-27 18:02:09,948 INFO Driver - << Size = 25 $ 06 10 02 0a 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 51 10 03
2015-11-27 18:02:10,102 INFO Driver - >> Size = 11 $ 10 02 0b 32 00 00 09 00 ba 10 03
2015-11-27 18:02:10,143 INFO Driver - << Size = 25 $ 06 10 02 0b 32 00 00 60 0c 8d 85 20 82 88 87 8d 80 97 85 8d 8e 50 10 03
2015-11-27 18:02:14,108 INFO Driver - >> Size = 7 $ 10 02 0c 0f e5 10 03
2015-11-27 18:02:14,179 INFO Driver - << Size = 12 $ 06 10 02 0c 0f 00 00 20 c5 10 03
50. Evgeny K (mar_a) 30.11.15 11:50
(49) nems, Скидка ставиться 100 раз проверено.
Пошагово как передаем цену на товар , как передем скидку , абсолютную или относительную?
То что ВЫ выслали (лог) пока не нужен, т.к. с работой и скидками ошибок нет.
Ошибка в том что ВЫ посылаете.
Напишите пошагам и ВАМ сразу станет ясно где ошибка.
1) Передаем SAle Название товара , код и т.д.
2) Скидка - ее значение
и .т.д.
51. Andrey Rusyn (nems) 01.12.15 13:57
Ра(50) mar_a, разобрался со скидкой, возникла проблема с печатью из терминальной сессии - очень долго идет проведение и иногда чек не пробивается (остается открытым)
52. Evgeny K (mar_a) 27.01.16 14:47
(51) nems, Это чудно что разобрались. А по поводу терминальной сессии - согласитесь это не из-за аппарата.
И кстати выпустили для таких нужд сетевой Фискальный регистратор MG707 ( http://infostart.ru/public/376254/ ) который работает по TCP|IP.
53. Сергей Суриков (Sergey_S) 25.02.16 17:49
Здравствуйте!
Поставили задачу обеспечить печать чеков на регистраторе, но столкнулся с проблемой, может по неопытности, потому попрошу сильно ногами не бить.
Регистратор MG N707TS
RS232
драйвер версии 1.0.0.4
среда разработки VS2010
-----------
Фрагмент кода:
'1. Создаю объект
Dim TotalSumma As Long
Dim fp As New MGT808TL.FiscalPrinter
'2. Подключаюсь
fp.Connect("COM3", 9600)
'3. Регистрируем продажу стоимость 1700,00 грн
TotalSumma = fp.SaleArticle("101", 1, 170000, FPTaxType.fpttD, "Товар № 1")
...Показать Скрыть

--------
Значение переменной TotalSumma при просмотре = 170
В документации написано, что должна возвращаться рассчитанная стоимость в копейках, а тут значение в 1000 раз меньше. Подскажите в чём может быть причина
Спасибо.

54. Evgeny K (mar_a) 02.03.16 14:29
(53) Sergey_S, Количество 0,001шт ? Это нормально ?
Или я не вижу что-бы передавался разряд степени кол-ва. (См. документацию по команде SaleArticle )
на скорую руку слепил скрипт на VBS для демонстрации .

com_port = InputBox("Введите Номер порта:",,com)
com_port ="COM"&com_port
' устанавливаю связь к объекту
	Set fp = CreateObject("MGT808TL.FiscalPrinter") 
	fp.Connect com_port, 9600


'Строка продажи товара
code = 142
'Кол-во 1 кг !
count = 1000
'Цена в копейках !!!
price = 1733
Name= "Товар Цена"
'Налог А
fpttA=&h80    
TotalSum = fp.SaleArticle ( code, count, price, fpttA, Name )

MsgBox ("TotalSum = "&CStr(TotalSum))

fp.CommentCheck ""&code&" "&count&" "&price&" "&Name&" "&fpttA

'Оплата подрасчет
fp.PayCheck
...Показать Скрыть


Все работает отдает в моем случае 1733.
С Вашими данными (кстати хоть Д налог активный? Невижу что там за параметр!)
55. Сергей Суриков (Sergey_S) 02.03.16 20:41
(54) mar_a, Вчера я заподозрил, что дело в количестве (у меня не весовой товар, а услуги) потому добавил параметр разрядности количества CountFormat=128 (0-знаков после запятой) и получил правильное значение:
TotalSumma = fp.SaleArticle(101, 1, 170000, FPTaxType.fpttD, "Товар № 1", 128)


Спасибо за ответ!

56. vadim ttv ttv (vahate) 25.05.16 18:24
очень надо сделать 1С Розница 2.2 (Россия) + IKC_C651T MZ11 (http://ics-market.com.ua/ru/oborudovanie/fiskalnoe-oborudovanie/fiskalnye-registratory/321-fiskalnie-registratori/1940-fiskalnyj-registrator-ikc-c651t#dopolnitelno). Это я к автору публикации, не нашёл имейл личных данных.
57. Evgeny K (mar_a) 26.05.16 15:30
(56) vahate, ПЕРВОЕ - Вы темой ошиблись...
Ну а ВТОРОЕ - там есть обработка у них на сайте. Правда не под Росссию , а
ТРЕТЬЕ данные кассовые аппараты не под Россиию!!!
И тот что на сайте тоже...


И так у ВАС 3 -нет прощайте.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа