|
Работа с ФФД 1.2 для Штрих-М на нетиповой конфигурации | ☑ | ||
---|---|---|---|---|
0
mzelensky
21.02.22
✎
10:10
|
Доброго времени суток!
Имеется нетиповая конфа на платформе 8.2.15. Необходимо подключить работу касс по новому формату ФФД 1.2 (с контролем марок). Сейчас используется софт Штрих-М и соответствующее оборудование. Читал, что в типовой рознице "2.3.10.43" уже более-менее все работает, но просто взять функционал из нее довольно проблематично - необходимый функционал сильно размазан по БСП и какой либо инструкции как все это работает нет. Поэтому вопрос - если у кого-то есть уже готовые наработки (не обязательно готовое решение, достаточно именно примера формирования последовательности запросов и пример пакета данных), то буду крайне благодарен за информацию. Готов рассмотреть покупку. |
|||
1
mzelensky
21.02.22
✎
12:25
|
ап
|
|||
2
Kigo_Kigo
21.02.22
✎
13:20
|
На инфострате полноплатных обработок , да еще с подключением, что бы не купить, раз сами не зуб ногой?
|
|||
3
mzelensky
21.02.22
✎
13:23
|
(2) Покажи мне хотя бы одну. Под Штрих-М. Не написанную чисто под типовую?
|
|||
4
Kigo_Kigo
21.02.22
✎
13:28
|
||||
5
Kigo_Kigo
21.02.22
✎
13:42
|
&НаКлиенте
Функция ПодключитьсяКФР(Пароль) Рез = 0; глФР.Password=Пароль; глФР.Connect(); Ответ = глФР.ResultCode; Если Ответ=0 Тогда Рез=1; Иначе Сообщить(глФР.ResultCodeDescription); КонецЕсли; глФР.Beep(); Возврат Рез; КонецФункции &НаКлиенте Функция ОтключитьсяОтФР(Пароль, ЗапоминатьОшибку = 1) Рез = 0; // пеключим ФР в нерабочий режим глФР.Password=Пароль; глФР.Disconnect(); Ответ = глФР.ResultCode; Если Ответ=0 Тогда Рез=1; ИначеЕсли ЗапоминатьОшибку = 1 Тогда Сообщить(глФР.ResultCodeDescription); КонецЕсли; Возврат Рез; КонецФункции &НаКлиенте Функция ОткрытьСмену(рКодОшибки=0) Экспорт Попытка рКодОшибки=0; фр=глФР; фр.Password=1; Если фр.ECRMode<>4 Тогда // смена уже открыта, или некий другой режим рКодОшибки=99; Возврат Истина; КонецЕсли; рез=фр.OpenSession(); Если рез<>0 Тогда Сообщить("ОткрытьСмену, ошибка выполнения: "+фр.ResultCodeDescription); рКодОшибки=фр.ResultCode; Возврат Ложь; КонецЕсли; Сообщить("ОткрытьСмену, смена успешно открыта."); Возврат Истина; Исключение Сообщить("ОткрытьСмену, ошибка: "+ОписаниеОшибки(),СтатусСообщения.Важное); Возврат Ложь; КонецПопытки; КонецФункции &НаКлиенте Функция ЗакрытьСмену(рКодОшибки=0) Экспорт Попытка рКодОшибки=0; фр=глФР; фр.Password=30; // можно ещё 29 Если фр.ECRMode<>2 и фр.ECRMode<>3 Тогда // смена уже закрыта, или другой режим рКодОшибки=99; Возврат Истина; КонецЕсли; рез=фр.PrintReportWithCleaning(); Если рез<>0 Тогда Сообщить("ЗакрытьСмену, ошибка выполнения: "+фр.ResultCodeDescription); рКодОшибки=фр.ResultCode; Возврат Ложь; КонецЕсли; Сообщить("ЗакрытьСмену, смена успешно закрыта."); Возврат Истина; Исключение Сообщить("ЗакрытьСмену, ошибка: "+ОписаниеОшибки(),СтатусСообщения.Важное); Возврат Ложь; КонецПопытки; КонецФункции &НаСервере Функция ВернутьИННКассира() Возврат Объект.Кассир.Физлицо.ИНН; КонецФункции &НаКлиенте Функция ФнОперация(ТипЧека,Цена,Количество,Налог,Сумма, ПризнакСпособаРасчета, ПризнакПредметаРасчета, Наименование,получено,ПоКарте,КудаОтправитьЧек,Детально) КорректноКудаОтправитьЧек = -1;//-1 не ввден, 1- корректно,0 не корректно Если СокрЛП(КудаОтправитьЧек) <> "" Тогда Если Найти(СокрЛП(КудаОтправитьЧек),"@") <> 0 Тогда КорректноКудаОтправитьЧек = 1; ИначеЕсли Лев(СокрЛП(КудаОтправитьЧек),2) = "+7" Тогда КорректноКудаОтправитьЧек = 1; Иначе КорректноКудаОтправитьЧек = 0; КонецЕсли; Если КорректноКудаОтправитьЧек = 0 Тогда Сообщить("Не корректно введен email или номер телефона клиента"); Возврат 0; Иначе КорректноКудаОтправитьЧек = -1; //Предупреждение("Проверте email или номер телефона клиента, номер телефона должен начинаться на +7"); КонецЕсли; КонецЕсли; //Если Объект.Кассир.ПарольККТ = 0 тогда глФР.Password = 1; //Иначе //глФР.Password = Объект.Кассир.ПарольKKT; //КонецЕсли; ИннКассира = ВернутьИННКассира(); Если СокрЛП(ИннКассира) = "" тогда Сообщить("У кассира/приемщика не указан ИНН"); Возврат 0; Иначе глФР.TagNumber = 1203; глФР.TagType = 7; глФР.TagValueStr = СокрЛП(ИннКассира); //глФР.TagValueStr = "623"; глФР.FNSendTag(); КонецЕсли; СколькоНадоПолученно = 0; Если Детально = 0 Тогда глФР.CheckType = ТипЧека; глФР.StringForPrinting = Наименование; глФР.Price = Цена; глФР.Quantity = Количество; глФР.Tax1 = Налог; глФР.Tax2 = Налог; глФР.Tax3 = Налог; глФР.Tax4 = Налог; глФР.Department = 1; //глФР.Summ1 = Сумма; //глФР.PaymentTypeSign = ПризнакСпособаРасчета; //глФР.PaymentItemSign = ПризнакПредметаРасчета; Если Объект.ЧекНаВозврат = Истина Тогда глФР.ReturnSale(); Иначе глФР.Sale(); КонецЕсли; Иначе Для каждого СтрокаРаботы Из Объект.Работы Цикл глФР.CheckType = ТипЧека; глФР.StringForPrinting = СокрЛП(СтрокаРаботы.Номенклатура); Если СтрокаРаботы.Количество <> 0 Тогда глФР.Price = СтрокаРаботы.Сумма/СтрокаРаботы.Количество; глФР.Quantity = СтрокаРаботы.Количество; //СколькоНадоПолученно = СколькоНадоПолученно + СтрокаРаботы.Сумма/СтрокаРаботы.Количество*СтрокаРаботы.Количество; Иначе глФР.Price = СтрокаРаботы.Сумма; глФР.Quantity = 1; //СколькоНадоПолученно = СколькоНадоПолученно + СтрокаРаботы.Сумма; КонецЕсли; глФР.Tax1 = Налог; глФР.Tax2 = Налог; глФР.Tax3 = Налог; глФР.Tax4 = Налог; глФР.Department = 1; //глФР.Summ1 = Сумма; //глФР.PaymentItemSign = ПризнакПредметаРасчета; // ГлФР.FNOperation(); Если Объект.ЧекНаВозврат = Истина Тогда глФР.ReturnSale(); Иначе глФР.Sale(); КонецЕсли; КонецЦикла; КонецЕсли; //глФР.PaymentTypeSign = 4; //ГлФР.FNOperation(); Если КорректноКудаОтправитьЧек = 0 Тогда глФР.CustomerEmail = СокрЛП(КудаОтправитьЧек); глФР.FNSendCustomerEmail(); КонецЕсли; Если (Получено = 0) И (ПоКарте = 0) Тогда глФР.Summ1 = Объект.Работы.Итог("Сумма"); глФР.Summ2 = 0; глФР.Summ3 = 0; глФР.Summ4 = 0; ИначеЕсли (Получено <> 0) И (ПоКарте = 0) Тогда глФР.Summ1 = Объект.Получено; глФР.Summ2 = 0; глФР.Summ3 = 0; глФР.Summ4 = 0; ИначеЕсли (Получено <> 0) И (ПоКарте <> 0) Тогда глФР.Summ1 = Объект.Получено; глФР.Summ2 = Объект.ПоКарте; глФР.Summ3 = 0; глФР.Summ4 = 0; ИначеЕсли (Получено = 0) И (ПоКарте <> 0) Тогда глФР.Summ1 = 0; //ГлФР.CheckSubTotal(глФР.Summ2); глФР.Summ2 = Объект.ПоКарте; глФР.Summ3 = 0; глФР.Summ4 = 0; КонецЕсли; //итогоитого=0; //Сообщить(СколькоНадоПолученно); //ГлФР.RoundingSumm(); глФР.FNCloseCheckEx(); Если глФР.ResultCode <> 0 Тогда Сообщить(глФР.ResultCode); глФР.Password=30; глФР.SysAdminCancelCheck(); //ОтключитьсяОтФР(Объект, Пароль, 0); Возврат 0; Иначе Объект.ЧекПробитККМ = Истина; КонецЕсли; Возврат 1; КонецФункции &НаКлиенте Процедура ИнициализироватьФР() Экспорт Попытка ПодключитьВнешнююКомпоненту("AddIn.DrvFR"); // достаточно штатной установки драйвера на локальный ПК или сервер ком=Новый COMОбъект("AddIn.DrvFR"); // никакой более регистрации на современных ОС обычно не требуется глФР=ком; // экспортная переменная глФР переменная должна быть объявлена в глобальном модуле обычного приложения Исключение Сообщить("Ошибка инициализации фискального регистратора кассовых чеков: "+ОписаниеОшибки(),СтатусСообщения.Важное); КонецПопытки; Пароль = 30; ПодключитьсяКФР(Пароль); рКодОшибки = ""; //ОткрытьСмену(рКодОшибки); //Если рКодОшибки <> 99 тогда //сменаОтрыта // Сообщить(рКодОшибки); //КонецЕсли; ТипЧека = 1; Цена = Объект.Работы.Итог("Сумма"); Количество = 1; Налог = 0; Сумма = Цена; ПризнакСпособаРасчета = 1; ПризнакПредметаРасчета = 4; Наименование = "Оплата по Заказ-наряду № " + Строка(Объект.Номер) + " от " + Строка(Объект.Дата); Рез = 0; Если Объект.Детально тогда Рез = ФнОперация(ТипЧека,Цена,Количество,Налог,Сумма, ПризнакСпособаРасчета, ПризнакПредметаРасчета, Наименование,Объект.Получено,Объект.Покарте,Объект.КудаОтправитьЧек, 1); Иначе Рез = ФнОперация(ТипЧека,Цена,Количество,Налог,Сумма, ПризнакСпособаРасчета, ПризнакПредметаРасчета, Наименование,Объект.Получено,Объект.Покарте,Объект.КудаОтправитьЧек,0); КонецЕсли; //ЗакрытьСмену(рКодОшибки) оставим для снятия Zотчета Если Рез = 0 Тогда Сообщить("Чек ККМ не пробит",СтатусСообщения.Важное); Иначе Записать(); КонецЕсли; ОтключитьсяОтФР(Пароль); КонецПроцедуры &Наклиенте Процедура ПробитьЧекККМ(Кнопка) ИнициализироватьФР(); //ПодключитьсяКФР("30") КонецПроцедуры |
|||
6
Kigo_Kigo
21.02.22
✎
13:42
|
но здесь без кода маркировки, но там 3-4 команды надо чтобы допилить до передачи КД, сча примера нет под рукой
|
|||
7
Kigo_Kigo
21.02.22
✎
13:43
|
КД = КТ(Код товара)
|
|||
8
mzelensky
21.02.22
✎
13:44
|
(4) Для начала спасибо ,уже хоть что-то. У них там какая-то неразбериха с версиями обработок\драйверов. Но это я уже у тех.поддержки выясню
|
|||
9
mzelensky
21.02.22
✎
13:47
|
(5) Это точно для Штрих-М под формат ФФД 1.2 ?
|
|||
10
Kigo_Kigo
21.02.22
✎
13:51
|
(9) Да, работает с 15-м драйвером, допилена клиенту для передачи кода товаров(база с передачей КТ не доступна мне сейчас), правда какая ФФД у него уже не помню
|
|||
11
Kigo_Kigo
21.02.22
✎
13:52
|
Но кода товаров улетают и видны в ОФД
|
|||
12
mzelensky
21.02.22
✎
13:54
|
(11) Они и на ФФД 1.0 улетают.
Нужна работа именно по новому протоколу ФФД 1.2 с функциями контроля марок |
|||
13
ColonelAp4u
21.02.22
✎
14:33
|
(12) ответил на почту
|
|||
14
helloman
21.02.22
✎
15:47
|
(13) Можно и мне пожалуйста
|
|||
15
mzelensky
21.02.22
✎
15:49
|
(13) Огромное спасибо, получил. Чуть позже изучу
|
|||
16
mzelensky
21.02.22
✎
15:49
|
(14) Если что, черкни - перешлю.
|
|||
17
helloman
21.02.22
✎
16:23
|
(16) Написал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |