Подскажите пожалуйста есть ли возможность получить реквизит ФПД чека с кассы (Штрих - М) , он необходим для отправки ссылки на чек для клиентов которые оплачивают безналом через банк из др. регионов? В стандартных реквизитах документа я не нашел, будет ли обновление в котором он появиться?
Добрый день, Сергей, ФПД выдает сам аппарат, а не Альфа-Авто, это настройка самого ККТ. по данному вопросу Вам нужно обратиться в компанию, которая обслуживает Вас по фискальному регистратору.
Светлана Сулименко написал: Добрый день, Сергей, ФПД выдает сам аппарат, а не Альфа-Авто, это настройка самого ККТ. по данному вопросу Вам нужно обратиться в компанию, которая обслуживает Вас по фискальному регистратору.
Это я понимаю, вопрос не много в другом. После печати чека, Альфа запросом получает от ККТ последние реквизиты чека (Номер, дату, смену) возможно ли в этом месте кода получать и ФПД, и будет ли это реализовано?
Светлана Сулименко написал: Добрый день, Сергей, ФПД выдает сам аппарат, а не Альфа-Авто, это настройка самого ККТ. по данному вопросу Вам нужно обратиться в компанию, которая обслуживает Вас по фискальному регистратору.
Это я понимаю, вопрос не много в другом. После печати чека, Альфа запросом получает от ККТ последние реквизиты чека (Номер, дату, смену) возможно ли в этом месте кода получать и ФПД, и будет ли это реализовано?
Сергей Степченков написал: Альфа запросом получает от ККТ последние реквизиты чека (Номер, дату, смену) возможно ли в этом месте кода получать и ФПД, и будет ли это реализовано?
Об этом месте кода речь?
Код
Попытка
КоличествоСтрок=0; КоличествоСтолбцов=0;
SafeArrayПараметрыЧека.GetBounds(КоличествоСтрок,КоличествоСтолбцов);
НомерСмены=Число(SafeArrayПараметрыЧека.GetValue(0,0));
НомерЧека=Число(SafeArrayПараметрыЧека.GetValue(1,0));
ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'");
НомерДокумента=Число(SafeArrayПараметрыЧека.GetValue(2,0));
СтруктураВозвратныхПараметров=Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены",ДатаФР,НомерЧека,НомерДокумента,НомерСмены);
Исключение
ТекстОшибки="Ошибка получения фискальных реквизитов пробитого чека: "+ОписаниеОшибки();
КонецПопытки;
Другие значения SafeArrayПараметрыЧека.GetValue(x, y) проверяли, существуют? Что в них, есть Фискальный признак чека?
Михаил Волков написал: Другие значения SafeArrayПараметрыЧека.GetValue(x, y) проверяли, существуют?
Нет, но их можно добавить в обработке Торговое оборудование. У меня ФР АТОЛ, поэтому доработал функцию и процедуру формы ФР_Атол_ДрайверФР следующим образом:
Код
// Получить параметры чека
Функция ПолучитьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека,Фискальный = Истина,НомерФПД = ""); //+МВ 27.03.2019
// Сохраняем номер,дату и время чека
Устройство.ПолучитьСостояние();
КодОшибки = РезультатВыполненияДействия(); Если КодОшибки <> 0 Тогда Возврат КодОшибки; КонецЕсли;
ПроверкаПоддержки54ФЗ();
Если Поддерживает54ФЗ Тогда
Устройство.НомерРегистра = 53;
КодОшибки = ВыполнитьКоманду("ПолучитьРегистр");
Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли;
// Получим номер смены
НомерСмены = -1;
НомерСмены = Число(Устройство.Смена);
Если НомерСмены=0 Тогда НомерСмены=-1; КонецЕсли;
Если Фискальный Тогда
НомерЧека = Устройство.КоличествоИтераций;
Если НомерЧека=0 Тогда НомерЧека=-1; КонецЕсли;
Устройство.НомерРегистра = 52;
КодОшибки = ВыполнитьКоманду("ПолучитьРегистр");
Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли;
НомерДок = Устройство.НомерДокумента;
//+МВ 27.03.2019 Получим фискальный признак
НомерФПД = Устройство.ФискальныйПризнак;
Иначе
НомерДок = Устройство.НомерЧека - 1;
КонецЕсли;
Иначе
// Сохраняем номер чека
Устройство.ПолучитьСостояние();
КодОшибки = РезультатВыполненияДействия(); Если КодОшибки <> 0 Тогда Возврат КодОшибки; КонецЕсли;
Устройство.НомерРегистра = 19;
КодОшибки = ВыполнитьКоманду("ПолучитьРегистр");
Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли;
НомерЧека = Устройство.НомерЧека-1;
НомерДок = Устройство.НомерДокумента-1;
// Получим номер закрытой смены
НомерСмены = -1;
Устройство.НомерРегистра = 21; // номер текущей смены
КодОшибки = ВыполнитьКоманду("ПолучитьРегистр");
Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли;
НомерСмены = Число(Устройство.Смена);
Если НомерСмены=0 Тогда НомерСмены=-1; КонецЕсли;
КонецЕсли;
// Сохраняем дату и время чека
ДатаЧека=Формат(Устройство.Год,"ЧЦ=4; ЧВН=; ЧГ=0")+"."+
Формат(Устройство.Месяц,"ЧЦ=2; ЧВН=; ЧГ=0")+"."+
Формат(Устройство.День,"ЧЦ=2; ЧВН=; ЧГ=0")+" "+
Формат(Устройство.Час,"ЧЦ=2; ЧВН=; ЧГ=0")+":"+
Формат(Устройство.Минута,"ЧЦ=2; ЧВН=; ЧГ=0")+":"+
Формат(Устройство.Секунда,"ЧЦ=2; ЧВН=; ЧГ=0");
Возврат 0;
КонецФункции
// Вернуть параметры чека
Процедура ВернутьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека,НомерФПД) //+МВ 27.03.2019
// Возвращает данные пробитого на ФР чека
// .. НомерЧека = Число(<Номер пробитого чека>)
// .. ДатаЧека = Дата(<Дата пробитого чека>)
ПараметрыВозврата=Рарус_Компонента.СоздатьПараметры(5,1); //+МВ 27.03.2019
ПараметрыВозврата.SetValue(0,0,НомерСмены);
ПараметрыВозврата.SetValue(1,0,НомерЧека);
ПараметрыВозврата.SetValue(2,0,НомерДок);
ПараметрыВозврата.SetValue(3,0,ДатаЧека);
ПараметрыВозврата.SetValue(4,0,НомерФПД); //+МВ 27.03.2019
КонецПроцедуры // ВернутьПараметрыЧека
Далее добавил в документ ЧекНаОплату и обработку ФронтКассира реквизит НомерФПД (тип Строка 10) - Фискальный признак документа. И дописал https://rarus.ru/forum/forum7/topic12988/#message82204 в выше упомянутый код ФронтКассира следующее:
Код
Попытка
КоличествоСтрок=0; КоличествоСтолбцов=0;
SafeArrayПараметрыЧека.GetBounds(КоличествоСтрок,КоличествоСтолбцов);
НомерСмены=Число(SafeArrayПараметрыЧека.GetValue(0,0));
НомерЧека=Число(SafeArrayПараметрыЧека.GetValue(1,0));
ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'");
НомерДокумента=Число(SafeArrayПараметрыЧека.GetValue(2,0));
НомерФПД = ""; //+МВ 27.03.2019
Если КоличествоСтрок > 4 Тогда
НомерФПД = СокрЛП(SafeArrayПараметрыЧека.GetValue(4,0));
КонецЕсли;
СтруктураВозвратныхПараметров = Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД",ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД); //-МВ
Исключение
ТекстОшибки="Ошибка получения фискальных реквизитов пробитого чека: "+ОписаниеОшибки();
КонецПопытки;
А в функцию ЗаписатьЧек():
Код
Функция ЗаписатьЧек(ФлагПроведения,СообщениеОбОшибке,ПраваДополнительно=НЕОПРЕДЕЛЕНО, КПопыток=-1, ПроверитьКорректность=ЛОЖЬ) Экспорт
Результат=ЛОЖЬ;
// Сформируем и заполним объект для записи в БД
Если ХозОперация=Справочники.ХозОперации.ПриходныйКассовыйОрдер ИЛИ (НЕ УстановленРежим("РКО") И ХозОперация=Справочники.ХозОперации.РасходныйКассовыйОрдер) Тогда
ДокументОбъект = Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(ДокументОбъект, ЭтотОбъект, "НомерЧека,ДатаФР,НомерДокумента,НомерСмены,ФР,КассаККМ,СкладКомпании");
ИначеЕсли ХозОперация=Справочники.ХозОперации.ЧекНаОплату И (НЕ Ссылка.Пустая()) Тогда
ДокументОбъект = Ссылка.ПолучитьОбъект();
ДокументОбъект.Оплаты.Загрузить(Оплаты.Выгрузить());
ЗаполнитьЗначенияСвойств(ДокументОбъект, ЭтотОбъект, "НомерЧека,ДатаФР,НомерДокумента,НомерСмены,ФР,КассаККМ,СкладКомпании,ПолученоНал,ПолученоБезНал,НомерФПД"); //+МВ 27.03.2019
Попытка ДокументОбъект.АвтоЗакрытиеСделок = ЭтотОбъект.ДоговорВзаиморасчетов.АвтоЗакрытиеСделок; Исключение КонецПопытки;
ДокументОбъект.Дата=ТекущаяДата();
В форме документа ЧекНаОплату реквизит НомерФПД расположил на вкладке Фискальные реквизиты в виде гиперссылки, при нажатии на которую открывается чек на сайте ОФД:
Код
// Открыть чек на сайте ОФД Такском-Касса
//+МВ 29.03.2019
Процедура НомерФПДНажатие(Элемент)
Если ПустаяСтрока(НомерФПД) Тогда Возврат; КонецЕсли;
ЗапуститьПриложение("https://receipt.taxcom.ru/v01/show?fp=" + СокрЛП(НомерФПД) + "&s=" + Формат(СуммаДокумента,"ЧГ=0") + "&sf=False&sfn=False");
КонецПроцедуры
Таким образом всегда можно убедиться ушел ли чек в ОФД.
Изменено: Михаил Волков - 30.03.2019 15:20:46(Добавление текста)