|
v7: Мини ФП-6 после модернизации и 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
lg2marvel
15.05.13
✎
16:02
|
Добрый день. После модернизации фискального регистратора Мини-ФП6 столкнулись с проблемой: иногда при побитии чека первая позиция из накладной не пробивается. Общался с представителями с Юнисистема, сказали что нужно доработать программу, добавить буфер, мол это происходит из-за того что порт блокируется при отправке данных в налоговую.
Сталкивался ли кто с подобной проблемой? У кого-то работает нормально фп6 после модернизации? |
|||
1
ЧеловекДуши
16.05.13
✎
09:34
|
||||
2
ЧеловекДуши
16.05.13
✎
09:35
|
||||
3
lg2marvel
16.05.13
✎
10:47
|
Мы друг друга не поняли. Обработка есть, она как бы работает. Но есть проблемы.
Модуль пробития чека: [code]Перем НазваниеДрайвера; //=========================================== Процедура ИнициализацияДрайвера() КонецПроцедуры //=========================================== Процедура Инициализация() ЭККА = глРасшифровка.Получить("Касса"); Состояние("Инициализация драйвера ЭККА "+ЭККА); спПараметры = СоздатьОбъект("СписокЗначений"); глПарсить(ЭККА.ПараметрыИнициализации,спПараметры,РазделительСтрок); Попытка Драйвер = CreateObject("OLE_MiniFP6.FP6"); глПереченьДрайверов.ДобавитьЗначение(Драйвер,НазваниеДрайвера+ЭККА.Код); глКомментарий("Подключен драйвер для ЭККА "+ЭККА,2); Исключение глКомментарий("Ошибка ЭККА :"+ОписаниеОшибки(),0); глКомментарий("Возможно, драйвер не установлен !",2); КонецПопытки; КонецПроцедуры //=========================================== Процедура ПечатьЧека() Док = глРасшифровка.Получить("Документ"); // Чек ДокКО = Док; Если Док.Вид() = "ПриходныйКассовый" Тогда Док = ДокКО.ДокументОснование; КонецЕсли; Если ПустоеЗначение(Док)=1 Тогда Возврат; КонецЕсли; Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()>0 Цикл Если Док.ЦенаСНДС=0 Тогда Если Вопрос("Нулевая цена у товара "+СокрЛП(Док.Товар.Наименование)+" в строке "+Док.НомерСтроки+". Прервать печать чека?","Да+Нет")="Да" Тогда Возврат; КонецЕсли; КонецЕсли; Если Док.СуммаСНДС=0 Тогда Если Вопрос("Нулевая сумма у товара "+СокрЛП(Док.Товар.Наименование)+" в строке "+Док.НомерСтроки+". Прервать печать чека?","Да+Нет")="Да" Тогда Возврат; КонецЕсли; КонецЕсли; КонецЦикла; Если Док.ВидТорговли = Перечисление.ВидыТорговли.Предоплата Тогда Если Вопрос("Вид торговли Безналичный расчет, чек будет пробит По карточке. Прервать печать чека?","Да+Нет")="Да" Тогда Возврат; КонецЕсли; КонецЕсли; Если Док.ВидОперации = 1 Тогда // Это возврат глКомментарий("Для данного дрйавера печать чека на возврат не реализована",0); Возврат; КонецЕсли; Драйвер = глПереченьДрайверов.Получить(НазваниеДрайвера+ДокКО.ЭККА.Код); Если ПустоеЗначение(Драйвер)=1 Тогда глКомментарий("Не найден драйвер ЭККА",1); Возврат; КонецЕсли; спПараметры = СоздатьОбъект("СписокЗначений"); глПарсить(ДокКО.ЭККА.ПараметрыИнициализации,спПараметры,РазделительСтрок); Порт = Число(спПараметры.Получить("Порт")); Если ПустоеЗначение(Порт)=1 Тогда Порт = 1; КонецЕсли; Скорость = Число(спПараметры.Получить("Скорость")); Если ПустоеЗначение(Скорость)=1 Тогда Скорость = 9600; КонецЕсли; ЕдиницаВНаименовании = Число(спПараметры.Получить("ЕдиницаВНаименовании")); Если ЕдиницаВНаименовании = 1 Тогда ДлинаНаименования = Число(спПараметры.Получить("ДлинаНаименования")); Если ПустоеЗначение(ДлинаНаименования) = 1 Тогда ДлинаНаименования = 11; КонецЕсли; КонецЕсли; Попытка РезЧек = 1; Док.ВыбратьСтроки(); Пробить = 0; Пока Док.ПолучитьСтроку()=1 Цикл // печать строки // поскольку ставку НДС можно задать только для отдела, // то предполагаем, что товары разделены по отделам в соответсвии со ставками НДС НалоговаяГр = глНалоговаяГруппа(Док.Товар.СтавкаНДС,Док.ЭККА); Наименование = СокрЛП(Док.Товар.Наименование); Если ЕдиницаВНаименовании = 1 Тогда Единица = " ("+СокрЛП(Док.Единица)+")"; Наименование = Лев(Наименование,ДлинаНаименования - СтрДлина(Единица))+Единица; КонецЕсли; Наименование = Лев(СокрЛП(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Наименование,"і","i"), "#", "N"),"ї","i"),"є","е"),"№","N")),50); Рез = Драйвер.SALE_(Порт,СокрЛП(Число(Док.Товар.Код)),Наименование,Док.Кво,Окр(Док.ЦенаСНДС,2),НалоговаяГр,0); Пробить = Пробить + Окр(Док.Кво * Окр(Док.ЦенаСНДС,2),2); Если Рез = 0 Тогда ТекущийКодОшибки = Драйвер.GetLastErr_(); глКомментарий(Шаблон("Ошибка печати строки чека по строке [Док.НомерСтроки] документа ! "+ОписаниеОшибки()+"."+ТекущийКодОшибки),0); РезЧек = 0; КонецЕсли; КонецЦикла; Рез = 1; ВидОпл = 3; Если Док.ВидТорговли = Перечисление.ВидыТорговли.Предоплата Тогда ВидОпл = 0; КонецЕсли; Рез = Драйвер.PAY_(Порт,Пробить,ВидОпл,1,0); Если Рез=0 Тогда глКомментарий("Ошибка при оплате чека ! "+Пробить,0); Если Драйвер.AnnulCheck_(Порт) = 1 Тогда Сообщить("Чек аннулирован","!"); КонецЕсли; Иначе Док.ЧекПробит=1; Док.ДатаЧека=ДокКО.ДатаДок; Док.НомерЧека = Драйвер.NumberCheck_(Порт); ДокКО.ЧекПробит=1; ДокКО.НомерЧека = Драйвер.NumberCheck_(Порт); ДокКО.ДатаЧека=ДокКО.ДатаДок; Если ДокКО.Вид() = "ПриходныйКассовый" Тогда тДок = СоздатьОбъект("Документ"); тДок.НайтиДокумент(Док); тДок.ЧекПробит=1; тДок.ДатаЧека=ДокКО.ДатаДок; тДок.НомерЧека = ДокКО.НомерЧека; тДок.Записать(); КонецЕсли; КонецЕсли; Драйвер.ClosePort_(); Исключение глКомментарий("Ошибка ЭККА :"+ОписаниеОшибки()); Док.ЧекПробит=0; КонецПопытки; КонецПроцедуры //=========================================== Процедура Отчет() Сообщить("Драйвер фискального принтера не поддержвает загрузку отчета!"); КонецПроцедуры //=========================================== Процедура ВыгрузитьАртикулы() Сообщить("Драйвер фискального принтера не поддержвает выгрузку артикулов!"); КонецПроцедуры //=========================================== Процедура ПриОткрытии() Параметр = глРасшифровка.Получить("Парам"); Если Параметр = "Инициализация" тогда Инициализация(); ИначеЕсли Параметр = "ПодключитьДрайвер" тогда ИнициализацияДрайвера(); ИначеЕсли Параметр = "ВыгрузитьАртикулы" тогда ВыгрузитьАртикулы(); ИначеЕсли Параметр = "ПечатьЧека" тогда ПечатьЧека(); ИначеЕсли Параметр = "Отчет" тогда Отчет(); КонецЕсли; СтатусВозврата(0); КонецПроцедуры НазваниеДрайвера = "МиниФП6"; [/code] |
|||
4
ЧеловекДуши
16.05.13
✎
13:36
|
(3) Попробуй через отладчик отладить :)
|
|||
5
lg2marvel
16.05.13
✎
14:01
|
Да не вопрос, только вот ошибку поймать не могу. Если позиция не бьется в данный момент времени, то если еще раз нажать кнопку печати чека - обязательно вылезет.
|
|||
6
Kreont
16.05.13
✎
14:10
|
Может еще так попробуй, в одно время переписывал стандартный вывод на чек (вижу у тебя в коде так же) так, что б сначала получить все данные из сервера на локальный комп в временную ТЗ, а уже потом проход по ней и печать.
По логике клиент-серверной вроде лишнее :), но зато при мини сбоях сети или торможении сервера, чек стал печатался до конца. |
|||
7
lg2marvel
16.05.13
✎
18:03
|
11:54:18 _________________________________________________________________
12:52:39 Ошибки при выполнении функции SALE: 12:52:39 12:52:39 SALE (3, 1923, Гламур Амба, 10, 10,96, 1) 12:52:39 12:52:39 ТИП ОШИБКИ - ненулевой байт статуса устройства: 12:52:39 12:52:39 БАЙТ СТАТУСА устройства: 12:52:39 - принтер не готов 12:52:39 _________________________________________________________________ вот ошибку выдает при пробитии проблемного чека (6) Попробую, спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |