ФЗ-54 Подключение фискальных регистраторов с ФН по TCP. Доработка Розницы 1.0. Обработка обслуживания Штрих-М для драйверов версии 4.13


Обработка осуществляет обслуживание фискальных регистраторов, поддерживаемых драйвером «Штрих-М» версии 4.13 для конфигураций на обычных формах.
Обработка позволяет подключать ФР как по TCP, так и через COM.
Поддерживается работа двух компонент: «AddIn.SMDrvFR1C20» и «AddIn.SMDrvFR1C». Соответственно обе компоненты должны быть зарегистрированы в системе.

Файлики SMDrvFR1CLib.dll и SMDrvFR1CLib20.dll (идут в поставке с драйверами) должны лежать в корне диска С. Знаю что коряво. Пока так.
В обработке необходимо указать, через какую из компонент будет работать ФР.  Поддержка ФЗ-54 реализована только в интерфейсе AddIn.SMDrvFR1C20, описание интерфейса можно найти на сайте ИТС http://its.1c.ru/db/metod8dev#content:4829:hdoc:checkpackage

В рознице при печати чека добавил вот такой код:

 Обработка = Неопределено; Объект = Неопределено; РезультатПолученияДрайвера = ПолучитьСерверТО().ПолучитьОбъектДрайвера(ФР, Обработка, Объект); Если ТипЗнч(Объект.Драйвер) = тип("AddIn.SMDrvFR1C20") тогда ОшибкаТО = ПечатьЧекаККМОФД(ФР, НомерЧекаККМ, НомерСменыККМ, ТаблицаТоваров, СуммаНал, СуммаБезНал, ВидОперации = Перечисления.ВидыОперацийЧекККМ.Возврат); ИНаче ОшибкаТО = ПечатьЧекаККМ(ФР, НомерЧекаККМ, НомерСменыККМ, ТаблицаТоваров, СуммаНал, СуммаБезНал, ВидОперации = Перечисления.ВидыОперацийЧекККМ.Возврат); КонецЕсли;

В зависимости от того, через какую компоненту работает драйвер, печатать чеки нужно по-разному. В старой версии схема примерно такая:

1.ОткрытьЧек

2.ПечатьСтрок (причем каждая строка печатается построчно)

3.Закрыть чек.

4 Печать слипа, если используется ЕГАИС

В новой же версии печать осуществляется через одну процедуру драйвера :

СформироватьЧек(Объект.ИДУстройства, Кассир, Электронно,          ДанныеЧека, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки);

Параметр «ДанныеЧека» это XML текст определенной структуры, которая описана по ссылке выше на сайте ИТС

<?xml version="1.0" encoding="UTF-8"?> <CheckPackage> <Parameters PaymentType="1" SenderEmail="info@1c.ru" CustomerEmail="alex2000@mail.ru" CustomerPhone="" AgentCompensation="" AgentPhone=""/> <Positions> <FiscalString Name="Макароны" Quantity="1" Price="16.75" Amount="16.75" Tax="10"/> <FiscalString Name="Томатный сок" Quantity="1" Price="200" Amount="200" Tax="18"/> <FiscalString Name="Алкоголь Шампрео 0.7" Quantity="1" Price="455" Amount="455" Tax="18"/> <TextString Text="Дисконтная карта: 00002345"/> <Barcode BarcodeType="EAN13" Barcode="2000021262157"/> </Positions> <Payments Cash="471.75" CashLessType1="0" CashLessType2="0" CashLessType3="200"/> </CheckPackage>

В обработке есть процедура, которая формирует XML такой структуры.

Привожу кусок кода из Розницы, который печатает чек:

Первые 4 строки это код из модуля документа, остальные фунции прописал в обработке ТоСервер.

ПараметрыККТ = Неопределено; ВыходныеПараметрыФискализации = Неопределено; ВходныеПараметрыИзРеальногоЧека = СформироватьПараметрыИзЧека(Ссылка); Результат = ПолучитьСерверТО().ФискализироватьЧек(Объект,ПараметрыККТ,ВходныеПараметрыИзРеальногоЧека ,ВыходныеПараметрыФискализации); Функция ПараметрыФискальнойСтрокиЧека() Экспорт; ПараметрыСтроки = Новый Структура(); ПараметрыСтроки.Вставить("ФискальнаяСтрока"); // Обязательные поля ПараметрыСтроки.Вставить("Наименование"); // Наимновнование предмета расчета ПараметрыСтроки.Вставить("Количество" , 0); // Количество предмета расчета ПараметрыСтроки.Вставить("Цена" , 0); // Цена без учета скидок и наценок ПараметрыСтроки.Вставить("Сумма" , 0); // Cтоимость предмета расчета с учетом скидок и наценок ПараметрыСтроки.Вставить("НомерСекции" , 0); // Номер cекции ФР (для совместимости) ПараметрыСтроки.Вставить("СтавкаНДС" , 0); // Cтавка НДС в % ПараметрыСтроки.Вставить("Штрихкод"); // Штрихкод // Дополнительные реквизиты начиная с ФФД 1.1 ПараметрыСтроки.Вставить("КодПризнакаСпособаРасчета"); // Код признака способа расчета (Таблица 25 документа ФФД) ПараметрыСтроки.Вставить("КодПризнакаПредметаРасчета"); // Код признака предмета расчета (Таблица 25 документа ФФД) ПараметрыСтроки.Вставить("ЕдиницаИзмеренияПредметаРасчета"); // Код признака предмета расчета ПараметрыСтроки.Вставить("КодТоварнойНоменклатуры"); // Код товарной номенклатуры Возврат ПараметрыСтроки; КонецФункции Функция СформироватьПараметрыИзЧека(Чек) ОбщиеПараметры = ПараметрыОперацииФискализацииЧека(); // Параметры установлены по умолчанию. //ОбщиеПараметры.ТипРасчета = ТипРасчета; Если ВидОперации = Перечисления.ВидыОперацийЧекККМ.Продажа Тогда ОбщиеПараметры.ТипРасчета = 1; Иначе ОбщиеПараметры.ТипРасчета = 2; КонецЕсли; ОбщиеПараметры.Электронно = Ложь; ОбщиеПараметры.ПокупательEmail = Неопределено; ОбщиеПараметры.ПокупательНомер = Неопределено; // Параметры необходимые для чека ЕНВД на принтере чеков ОбщиеПараметры.Кассир = "Кассир"; //ОбщиеПараметры.КодСистемыНалогообложения = КодСистемыНалогообложения; Было ОбщиеПараметры.КодСистемыНалогообложения = 0; ///????????????????????????????????????????????????? ОбщиеПараметры.ОрганизацияНазвание = чек.КассаККМ.Организация.Наименование; ОбщиеПараметры.ОрганизацияИНН = чек.КассаККМ.Организация.ИНН; ОбщиеПараметры.ОрганизацияКПП = чек.КассаККМ.Организация.КПП; ОбщиеПараметры.НомерКассы = "00001"; ОбщиеПараметры.НомерЧека = "1"; ОбщиеПараметры.НомерСмены = "1"; Для Каждого ТекСтрокаТовары из Чек.Товары Цикл СтрокаПозицииЧека = ПараметрыФискальнойСтрокиЧека(); СтрокаПозицииЧека.Наименование = ТекСтрокаТовары.Номенклатура.Наименование; СтрокаПозицииЧека.Количество = ТекСтрокаТовары.Количество; СтрокаПозицииЧека.Цена = ТекСтрокаТовары.Цена; СтрокаПозицииЧека.Сумма = ТекСтрокаТовары.Сумма; СтрокаПозицииЧека.НомерСекции = 1; //????????????????????????????? СтрокаПозицииЧека.СтавкаНДС = 18; ОбщиеПараметры.ПозицииЧека.Добавить(СтрокаПозицииЧека); КонецЦикла; Для Каждого ТекСтрокаОплаты из Чек.Оплата Цикл СтрокаОплаты = Новый Структура(); Если ТекСтрокаОплаты.ВидОплаты = Справочники.ВидыОплатЧекаККМ.Наличные тогда СтрокаОплаты.Вставить("ТипОплаты", 0); //???????????????????????????????? Иначе СтрокаОплаты.Вставить("ТипОплаты", 1); КонецЕсли; СтрокаОплаты.Вставить("Сумма", ТекСтрокаОплаты.сумма); ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты); КонецЦикла; Возврат ОбщиеПараметры; КонецФункции Функция ПараметрыОперацииФискализацииЧека() Экспорт; ПараметрыЧека = Новый Структура(); // Общие реквизиты для всех типов оборудования. ПараметрыЧека.Вставить("ДокументОснование" , Неопределено); //ПараметрыЧека.Вставить("ТипРасчета" , ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств")); ПараметрыЧека.Вставить("ТипРасчета" , 0 ); ПараметрыЧека.Вставить("Кассир" , Неопределено); // Должность и фамилия лица, осуществившего расчет с покупателем (клиентом), оформившего кассовый чек. ПараметрыЧека.Вставить("КассирИНН" , Неопределено); // Идентификационный номер налогоплательщика кассира, при наличии. ПараметрыЧека.Вставить("Электронно" , Ложь); // Чек будет предоставлен в элетронной форме, без печати. ПараметрыЧека.Вставить("Отправляет1СSMS" , Ложь); // SMS отправляет средствами 1C. ПараметрыЧека.Вставить("Отправляет1СEmail" , Ложь); // Email отправляет средствами 1C. ПараметрыЧека.Вставить("ОрганизацияНазвание" , Неопределено); ПараметрыЧека.Вставить("ОрганизацияИНН" , Неопределено); // ИНН организации (Для чека ЕНВД) ПараметрыЧека.Вставить("ОрганизацияКПП" , Неопределено); // Название организации (Для чека ЕНВД) ПараметрыЧека.Вставить("АдресМагазина" , Неопределено); // Адрес магазина (Для чека ЕНВД) ПараметрыЧека.Вставить("НаименованиеМагазина", Неопределено); // Наименование магазина // Параметры необходимые для ФР ПараметрыЧека.Вставить("СерийныйНомер" , Неопределено); // Заводской номер ККМ // Параметры необходимые для чека ЕНВД на принтере чеков ПараметрыЧека.Вставить("НомерКассы" , Неопределено); ПараметрыЧека.Вставить("НомерЧека" , Неопределено); ПараметрыЧека.Вставить("НомерСмены" , Неопределено); ПараметрыЧека.Вставить("ДатаВремя" , ТекущаяДата()); ПараметрыЧека.Вставить("ТекстШапки" , НСтр("ru='ДОБРО ПОЖАЛОВАТЬ!'")); ПараметрыЧека.Вставить("ТекстПодвала" , НСтр("ru='СПАСИБО ЗА ПОКУПКУ!'")); // Параметры для ККТ по ФЗ-54 ПараметрыЧека.Вставить("КодСистемыНалогообложения", Неопределено); ПараметрыЧека.Вставить("ОтправительEmail" , Неопределено); ПараметрыЧека.Вставить("ПокупательEmail" , Неопределено); ПараметрыЧека.Вставить("ПокупательНомер" , Неопределено); ПараметрыЧека.Вставить("ВознагражденияАгента" , Неопределено); // AgentCompensation ПараметрыЧека.Вставить("ТелефонПлатежногоАгента" , Неопределено); // AgentPhone ПараметрыЧека.Вставить("ТелефонОператораПоПриемуПлатежей", Неопределено); // ReceivePaymentsOperatorPhone ПараметрыЧека.Вставить("ТелефонОператораПеревода" , Неопределено); // MoneyTransferOperatorPhone ПараметрыЧека.Вставить("ТелефонПоставщика" , Неопределено); ПараметрыЧека.Вставить("АдресОператораПеревода" , Неопределено); // MoneyTransferOperatorAddress ПараметрыЧека.Вставить("ИННОператораПеревода" , Неопределено); // MoneyTransferOperatorVATIN ПараметрыЧека.Вставить("НаименованиеОператораПеревода" , Неопределено); // MoneyTransferOperatorName ПараметрыЧека.Вставить("ОперацияПлатежногоАгента" , Неопределено); ПараметрыЧека.Вставить("ТелефонБанковскогоАгента" , Неопределено); // BankAgentPhone ПараметрыЧека.Вставить("ТелефонБанковскогоСубагента" , Неопределено); // BankSubagentPhone ПараметрыЧека.Вставить("ОперацияБанковскогоАгента" , Неопределено); // BankAgentOperation ПараметрыЧека.Вставить("ОперацияБанковскогоСубагента" , Неопределено); // BankSubagentOperation ПараметрыЧека.Вставить("ВознагражденияБанковскогоАгента" , Неопределено); // BankAgentCompensation // Позиции чека для фискализации ПараметрыЧека.Вставить("ПозицииЧека" , Новый Массив()); // Массив элементов "Структура" ПараметрыЧека.Вставить("ТаблицаОплат" , Новый Массив()); // Массив элементов "Структура" Возврат ПараметрыЧека; КонецФункции 

Функция ПараметрыФискальногоНакопителяОбщие() Экспорт Параметры = Новый Структура(); Параметры.Вставить("РегистрационныйНомерККТ"); Параметры.Вставить("ОрганизацияНазвание"); Параметры.Вставить("ОрганизацияИНН"); Параметры.Вставить("АдресУстановкиККТ"); Параметры.Вставить("КодыСистемыНалогообложения"); Параметры.Вставить("ПризнакАвтономногоРежима" , Ложь); Параметры.Вставить("ПризнакАвтоматическогоРежима" , Ложь); Параметры.Вставить("НомерАвтоматаДляАвтоматическогоРежима"); Параметры.Вставить("ПризнакШифрованиеДанных" , Ложь); Параметры.Вставить("ПризнакРасчетовЗаУслуги" , Ложь); Параметры.Вставить("ПризнакФормированияТолькоБСО" , Ложь); Параметры.Вставить("ПризнакРасчетовТолькоВИнтернет", Ложь); Параметры.Вставить("ОрганизацияОФДИНН"); Параметры.Вставить("ОрганизацияОФДНазвание"); Возврат Параметры; КонецФункции Функция ПараметрыРегистрацииККТ() Экспорт Параметры = ПараметрыФискальногоНакопителяОбщие(); Параметры.Вставить("ЗаводскойНомерККТ"); Параметры.Вставить("ПризнакФискализации"); Параметры.Вставить("ЗаводскойНомерФН"); Параметры.Вставить("НомерДокументаФискализации"); Параметры.Вставить("ДатаВремяФискализации"); Параметры.Вставить("ВерсияФФДККТ"); Параметры.Вставить("ВерсияФФДФН"); Возврат Параметры; КонецФункции Функция ПолучитьТаблицуПараметрыИзXMLПакетаККТ(Данные, ИдентификаторУстройства = Неопределено) Экспорт ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(Данные); ЧтениеXML.ПерейтиКСодержимому(); Параметры = ПараметрыРегистрацииККТ(); Если ЧтениеXML.Имя = "Parameters" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Параметры.РегистрационныйНомерККТ = СокрЛП(ЧтениеXML.ЗначениеАтрибута("KKTNumber")); Параметры.ОрганизацияНазвание = ЧтениеXML.ЗначениеАтрибута("OrganizationName"); Параметры.ОрганизацияИНН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("VATIN")); Параметры.АдресУстановкиККТ = ЧтениеXML.ЗначениеАтрибута("AddressSettle"); Параметры.КодыСистемыНалогообложения = ЧтениеXML.ЗначениеАтрибута("TaxVariant"); Если ПустаяСтрока(Параметры.КодыСистемыНалогообложения) Тогда Параметры.КодыСистемыНалогообложения = ЧтениеXML.ЗначениеАтрибута("TaxVarinat"); КонецЕсли; Параметры.ПризнакАвтономногоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("OfflineMode")) = "TRUE"; Параметры.ПризнакАвтоматическогоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("AutomaticMode")) = "TRUE"; Параметры.НомерАвтоматаДляАвтоматическогоРежима = ЧтениеXML.ЗначениеАтрибута("AutomaticNumber"); Параметры.ПризнакРасчетовЗаУслуги = ВРег(ЧтениеXML.ЗначениеАтрибута("ServiceSign")) = "TRUE"; Параметры.ПризнакФормированияТолькоБСО = ВРег(ЧтениеXML.ЗначениеАтрибута("BSOSing")) = "TRUE"; Параметры.ПризнакРасчетовТолькоВИнтернет = ВРег(ЧтениеXML.ЗначениеАтрибута("CalcOnlineSign")) = "TRUE"; Параметры.ПризнакШифрованиеДанных = ВРег(ЧтениеXML.ЗначениеАтрибута("DataEncryption")) = "TRUE"; Параметры.ОрганизацияОФДИНН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("OFDVATIN")); Параметры.ОрганизацияОФДНазвание = ЧтениеXML.ЗначениеАтрибута("OFDOrganizationName"); Параметры.ЗаводскойНомерККТ = СокрЛП(ЧтениеXML.ЗначениеАтрибута("KKTSerialNumber")); Параметры.ПризнакФискализации = ВРег(ЧтениеXML.ЗначениеАтрибута("Fiscal")) = "TRUE"; Параметры.ЗаводскойНомерФН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("FNSerialNumber")); Параметры.НомерДокументаФискализации = ЧтениеXML.ЗначениеАтрибута("DocumentNumber"); Параметры.ДатаВремяФискализации = ЧтениеXML.ЗначениеАтрибута("DateTime"); Параметры.ВерсияФФДФН = ЧтениеXML.ЗначениеАтрибута("FFDVersionFN"); Параметры.ВерсияФФДККТ = ЧтениеXML.ЗначениеАтрибута("FFDVersionKKT"); КонецЕсли; //Если НЕ ПустаяСтрока(ИдентификаторУстройства) Тогда // СохранитьПараметрыРегистрацииУстройства(ИдентификаторУстройства, Параметры); //КонецЕсли; Возврат Параметры; КонецФункции Функция ПолучитьПараметрыККТ(Объект, Параметры, ВыходныеПараметры) Экспорт ПараметрыККТ = ""; Попытка Ответ = Объект.Драйвер.ПолучитьПараметрыККТ(Объект.ИДУстройства, ПараметрыККТ); Если НЕ Ответ Тогда //Результат = Ложь; //ВыходныеПараметры.Очистить(); //ВыходныеПараметры.Добавить(999); //ВыходныеПараметры.Добавить(""); //Объект.Драйвер.ПолучитьОшибку(ВыходныеПараметры[1]); Иначе // Заполнение выходных параметров. ВыходныеПараметры = ПолучитьТаблицуПараметрыИзXMLПакетаККТ(ПараметрыККТ); КонецЕсли; Исключение Результат = Ложь; ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(999); ВыходныеПараметры.Добавить(НСтр("ru='Ошибка вызова метода <ОбъектДрайвера.ПолучитьПараметрыККТ>.'") + Символы.ПС + ОписаниеОшибки()); КонецПопытки; Возврат Результат; КонецФункции Функция ФискализироватьЧек(Идентификатор, ПараметрыККТ, ВходныеПараметры, ВыходныеПараметры) Экспорт Обработка = Неопределено; Объект = Неопределено; Результат = ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект); Если ЗначениеЗаполнено(Объект.ОписаниеОшибки) Тогда Результат = мОшибкаНеизвестно; Иначе Результат = мНетОшибки; КонецЕсли; ВыходныеПараметры = новый Массив; ОбщиеПараметры = ВходныеПараметры; ФискальныйПризнак = ""; АдресСайтаПроверки = ""; //Пока так Параметры = ""; ПараметрыККТ = Неопределено; ПолучитьПараметрыККТ(Объект,Параметры,ПараметрыККТ); // ПараметрыРегистрации = ПараметрыККТ; РегистрационныйНомерККТ = ?(ПараметрыРегистрации.Свойство("РегистрационныйНомерККТ"), ПараметрыРегистрации.РегистрационныйНомерККТ, ""); Кассир = ОбщиеПараметры.Кассир; Электронно = ОбщиеПараметры.Электронно; Отправляет1СSMS = ОбщиеПараметры.Отправляет1СSMS; Отправляет1СEmail = ОбщиеПараметры.Отправляет1СEmail; СуммаЧека = 0; ДанныеЧека = ПолучитьXMLПакетДляФискализацияЧека(ОбщиеПараметры, ВходныеПараметры, СуммаЧека); НомерСмены = 0; НомерЧека = 0; Попытка Результат = Объект.Драйвер.СформироватьЧек(Объект.ИдУстройства, Кассир, Электронно, ДанныеЧека, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки); Если НЕ Результат Тогда Результат = мОшибкаНеизвестно; ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(999); ВыходныеПараметры.Добавить(""); Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки); Иначе // Заполнение выходных параметров. ДатаСеанса = ТекущаяДатаСеанса(); ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(НомерСмены); ВыходныеПараметры.Добавить(НомерЧека); ВыходныеПараметры.Добавить(2); // 2 - Открыта - Состояние смены ВыходныеПараметры.Добавить(ДатаСеанса); ВыходныеПараметры.Добавить(ФискальныйПризнак); ВыходныеПараметры.Добавить(АдресСайтаПроверки); ВыходныеПараметры.Добавить(РегистрационныйНомерККТ); Результат = мНетОшибки; КонецЕсли; Исключение Результат = мОшибкаНеизвестно; ВыходныеПараметры.Очистить(); ВыходныеПараметры.Добавить(999); ВыходныеПараметры.Добавить(НСтр("ru='Ошибка вызова метода <ОбъектДрайвера.СформироватьЧек>.'") + Символы.ПС + ОписаниеОшибки()); КонецПопытки; Возврат Результат; КонецФункции Функция ПолучитьXMLПакетДляФискализацияЧека(ОбщиеПараметры, ВыходныеПараметры, СуммаЧека) Экспорт ПозицииЧека = ОбщиеПараметры.ПозицииЧека; ТаблицаОплат = ОбщиеПараметры.ТаблицаОплат; СуммаЧека = 0; // Пакетная печать чека. Подготовка пакета. ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("CheckPackage"); ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters"); //ТипРасчета = ПолучитьКодТипаРасчетаДенежнымиСредствами(ОбщиеПараметры.ТипРасчета); ЗаписьXML.ЗаписатьАтрибут("PaymentType" , XMLСтрока(ОбщиеПараметры.ТипРасчета)); Если ОбщиеПараметры.Свойство("КодСистемыНалогообложения") И ОбщиеПараметры.КодСистемыНалогообложения <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("TaxVariant" , XMLСтрока(ОбщиеПараметры.КодСистемыНалогообложения)); КонецЕсли; ЗаписьXML.ЗаписатьАтрибут("SenderEmail", XMLСтрока(?(ОбщиеПараметры.Свойство("ОтправительEmail"), ОбщиеПараметры.ОтправительEmail, ""))); // Email отправляет средствами 1C Если ОбщиеПараметры.Свойство("Отправляет1СEmail") И НЕ ОбщиеПараметры.Отправляет1СEmail Тогда ЗаписьXML.ЗаписатьАтрибут("CustomerEmail", XMLСтрока(?(ОбщиеПараметры.Свойство("ПокупательEmail"), ОбщиеПараметры.ПокупательEmail, ""))); КонецЕсли; // SMS отправляет средствами 1C Если ОбщиеПараметры.Свойство("Отправляет1СSMS") И НЕ ОбщиеПараметры.Отправляет1СSMS Тогда ЗаписьXML.ЗаписатьАтрибут("CustomerPhone", XMLСтрока(?(ОбщиеПараметры.Свойство("ПокупательНомер"), ОбщиеПараметры.ПокупательНомер, ""))); КонецЕсли; Если ОбщиеПараметры.Свойство("ВознагражденияАгента") И ОбщиеПараметры.ВознагражденияАгента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("AgentCompensation" , XMLСтрока(ОбщиеПараметры.ВознагражденияАгента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ТелефонПлатежногоАгента") И ОбщиеПараметры.ТелефонПлатежногоАгента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("AgentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонПлатежногоАгента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ТелефонОператораПоПриемуПлатежей") И ОбщиеПараметры.ТелефонОператораПоПриемуПлатежей <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("ReceivePaymentsOperatorPhone" , XMLСтрока(ОбщиеПараметры.ТелефонОператораПоПриемуПлатежей)); КонецЕсли; Если ОбщиеПараметры.Свойство("ТелефонОператораПеревода") И ОбщиеПараметры.ТелефонОператораПеревода <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorPhone" , XMLСтрока(ОбщиеПараметры.ТелефонОператораПеревода)); КонецЕсли; Если ОбщиеПараметры.Свойство("АдресОператораПеревода") И ОбщиеПараметры.АдресОператораПеревода <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorAddress" , XMLСтрока(ОбщиеПараметры.АдресОператораПеревода)); КонецЕсли; Если ОбщиеПараметры.Свойство("ИННОператораПеревода") И ОбщиеПараметры.ИННОператораПеревода <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorVATIN" , XMLСтрока(ОбщиеПараметры.ИННОператораПеревода)); КонецЕсли; Если ОбщиеПараметры.Свойство("НаименованиеОператораПеревода") И ОбщиеПараметры.НаименованиеОператораПеревода <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("MoneyTransferOperatorName" , XMLСтрока(ОбщиеПараметры.НаименованиеОператораПеревода)); КонецЕсли; Если ОбщиеПараметры.Свойство("ТелефонБанковскогоАгента") И ОбщиеПараметры.ТелефонБанковскогоАгента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("BankAgentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонБанковскогоАгента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ТелефонБанковскогоСубагента") И ОбщиеПараметры.ТелефонБанковскогоСубагента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("BankSubagentPhone" , XMLСтрока(ОбщиеПараметры.ТелефонБанковскогоСубагента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ОперацияБанковскогоАгента") И ОбщиеПараметры.ОперацияБанковскогоАгента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("BankAgentOperation" , XMLСтрока(ОбщиеПараметры.ОперацияБанковскогоАгента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ОперацияБанковскогоСубагента") И ОбщиеПараметры.ОперацияБанковскогоСубагента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("BankSubagentOperation" , XMLСтрока(ОбщиеПараметры.ОперацияБанковскогоСубагента)); КонецЕсли; Если ОбщиеПараметры.Свойство("ВознагражденияБанковскогоАгента") И ОбщиеПараметры.ВознагражденияБанковскогоАгента <> Неопределено Тогда ЗаписьXML.ЗаписатьАтрибут("BankAgentCompensation" , XMLСтрока(ОбщиеПараметры.ВознагражденияБанковскогоАгента)); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); // Табличная часть Если ОбщиеПараметры.ПозицииЧека <> Неопределено Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("Positions"); Для ИндексМассива = 0 По ОбщиеПараметры.ПозицииЧека.Количество() - 1 Цикл ТекущаяПозиция = ОбщиеПараметры.ПозицииЧека[ИндексМассива]; Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString"); ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование)); ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество)); ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена)); ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма)); ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС)); ЗаписьXML.ЗаписатьКонецЭлемента(); СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма; ИначеЕсли ТекущаяПозиция.Свойство("ТекстоваяСтрока") Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("TextString"); ЗаписьXML.ЗаписатьАтрибут("Text", XMLСтрока(ТекущаяПозиция.Текст)); ЗаписьXML.ЗаписатьКонецЭлемента(); ИначеЕсли ТекущаяПозиция.Свойство("ШтрихКод") Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("Barcode"); ЗаписьXML.ЗаписатьАтрибут("BarcodeType", XMLСтрока(ТекущаяПозиция.ТипШтрихкода)); ЗаписьXML.ЗаписатьАтрибут("Barcode", XMLСтрока(ТекущаяПозиция.ШтрихКод)); ЗаписьXML.ЗаписатьКонецЭлемента(); Иначе ТекстОшибки = НСтр("ru='Не определен тип позиции чека.'"); ВыходныеПараметры.Очистить(); ВыходныеПараметры.Вставить("ТекстОшибки", ТекстОшибки); Результат = Ложь; Возврат Результат; КонецЕсли; КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЕсли; // Таблица оплат Если ТаблицаОплат <> Неопределено Тогда СуммаНаличнойОплаты = 0; СуммаЭлектроннойОплаты1 = 0; СуммаЭлектроннойОплаты2 = 0; СуммаЭлектроннойОплаты3 = 0; Для ИндексОплаты = 0 По ТаблицаОплат.Количество() - 1 Цикл Если ТаблицаОплат[ИндексОплаты].ТипОплаты = 0 Тогда СуммаНаличнойОплаты = СуммаНаличнойОплаты + ТаблицаОплат[ИндексОплаты].Сумма; ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = 1 Тогда СуммаЭлектроннойОплаты1 = СуммаЭлектроннойОплаты1 + ТаблицаОплат[ИндексОплаты].Сумма; ИначеЕсли ТаблицаОплат[ИндексОплаты].ТипОплаты = 2 Тогда СуммаЭлектроннойОплаты2 = СуммаЭлектроннойОплаты2 + ТаблицаОплат[ИндексОплаты].Сумма; Иначе СуммаЭлектроннойОплаты3 = СуммаЭлектроннойОплаты3 + ТаблицаОплат[ИндексОплаты].Сумма; КонецЕсли; КонецЦикла; ЗаписьXML.ЗаписатьНачалоЭлемента("Payments"); ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличнойОплаты)); ЗаписьXML.ЗаписатьАтрибут("CashLessType1", XMLСтрока(СуммаЭлектроннойОплаты1)); ЗаписьXML.ЗаписатьАтрибут("CashLessType2", XMLСтрока(СуммаЭлектроннойОплаты2)); ЗаписьXML.ЗаписатьАтрибут("CashLessType3", XMLСтрока(СуммаЭлектроннойОплаты3)); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); Возврат ЗаписьXML.Закрыть(); КонецФункции 

Публикация получилась немного сумбурная. Задавайте вопросы, постараюсь всё объяснить. 

Сам столкнулся с полным непониманием, что и как. Как подключить фискальник по TCP, чтобы он работал и отправлял данные в интернет. В итоге вроде всё работает. 

99 Comments

  1. djserega

    Как на счет «Открытие смены»? Нужно ли ее выполнять?

    «При вызове метода командного интерфейса НачатьОткрытиеСменыНаФискальномУстройстве() будет отправлена команда открытия смены на фискальное устройство, создан документ кассовая смена и, в случае использования ККТ, будут заполнены реквизиты фискальных данных.»

    Или это только для заполнения документа?

    Reply
  2. sdv88

    Не много не понял вопроса… у меня смена открывается автоматически при первом пробитии чека.

    Reply
  3. djserega

    Нашел в описании к БПО:

    «БПО 2.0 включает документ КассоваяСмена. Если в конфигурации уже имеется документ КассоваяСмена и/или перечисление СтатусыКассовойСмены — переименуйте эти объекты конфигурации. При этом определение необходимости сохранения данных документа Кассовая смена, существовавшего в конфигурации ранее и алгоритмы переноса данных в новый докуемнт, определяется на уровне прикладного решения.»

    Думал, что без этого документа нельзя будет открыть кассовую смену…

    Reply
  4. mrrom

    (3) Нужно открывать без открытия чек не пробить.

    Reply
  5. sdv88

    (4) Скорее всего это зашито где то в настройках самого ФР, у нас около 200 точек, всплыло только несколько где без открытия смены чек не пробивается. Все модели ФР одинаковые.

    Reply
  6. vis_tmp

    Скажите, для какого именно релиза «Розницы 1.0» подходит эта обработка?

    У меня достаточно старая 1.0.8.4

    Reply
  7. sdv88

    Обработка не будет работать сразу, конфигурацию в любом случае нужно будет дорабатывать. Я дорабатывал свою много много доработанную, не думаю что будут какие то кардинальные различия по части взаимодействия с торговым оборудованием.

    Reply
  8. kn8603

    Большое спасибо!

    Reply
  9. kn8603

    А почему в «Parameters» нет атрибута TaxVariant?

    Reply
  10. rafaiil

    Добрый день!я как понимаю вы ФР одновременно подключили и к com порту и через USB?В итоге если подключить через com порт данные передаются в интернет?

    Reply
  11. sdv88

    (10) от фр идёт один провод он USB, в фр есть где то настройка как он определяется в системе как com или как сетевое соединение. Данные передаются в интернет только тогда когда фр подключён как сетевое соединение причём в другом сетевом соединении через которое система получает интернет должна стоять галочка разрешать другим соединениям использовать интернет этого соединения) не помню как она называется, на последней вкладке

    Reply
  12. Luck_DMST

    Денис, спасибо что написали данную статью + выложили обработку!

    Скажите пожалуйста что нужно прописать в конфигурации розницы, чтобы Ваша обработка работала:

    1. Это закинуть библиотеки на диск С

    2. Я так понимаю нужно доработать документ ЧекККМ

    3. Доработать СерверТО

    но не понял откуда взять функцию ПечатьЧекаККМОФД

    Reply
  13. sdv88

    (12) первые четыре строки кода это и есть функция ПечатьЧекаККМОФД()

    Библиотеки нужно еще зарегестрировать.

    Функция ПечатьЧекаККМОФД(Объект, НомерЧека, НомерСмены,ОписаниеЧека, СуммаНал, СуммаБезнал, ПризнакВозврата)
    
    
    ПараметрыККТ = Неопределено;
    ВыходныеПараметрыФискализации = Неопределено;
    ВходныеПараметрыИзРеальногоЧека = СформироватьПараметрыИзЧека(Ссылка);
    
    Результат = ПолучитьСерверТО().ФискализироватьЧек(Объект,ПараметрыККТ,ВходныеПараметрыИзРеальногоЧека ,ВыходныеПараметрыФискализации);
    
    НомерСмены = ВыходныеПараметрыФискализации[0];
    НомерЧека     = ВыходныеПараметрыФискализации[1]; // тут вопрос надо ли брать номер чека из фр или оставлять так как есть чтобы он шел по порядку. каждый решает сам наверно)
    
    
    КонецФункции
    

    Показать

    Reply
  14. itabkb

    У меня почему то кассир на чеке не выводится. И в данных офд его нет. Хотя в логе он виден. .

    Reply
  15. rinik88

    на 8.1 пойдет?

    Reply
  16. sdv88

    (15) у нас платформа 8.3.6.2332 розница 1.0. всё работает.

    Reply
  17. rinik88

    (16)это хорошо что у вас платформа новая, я же про старую

    Reply
  18. sdv88

    (17) обновите. я не продаю эту обработку, делюсь тем что есть

    Reply
  19. rinik88

    (18) обновить пока не успеем, пока будем обновлять и переносить данные, кассы накроются) поэтому и спрашиваю, а вообще просто проблема с новыми дровами)

    Reply
  20. sdv88

    (19) я не могу протестировать обработку на всех версиях платформы.

    Reply
  21. user691478_it_1c4

    подскажите пжлст, вы при этом кассу в торговом оборудовании подключаете как фискальный регистратор или как ККТ с передачей данных?

    Reply
  22. nike-arz

    (19) Работает под 8.1 без проблем. Все старые методы поддерживаются. Надо толь дописать метод отсылки телефона или E-mail клиента.Но это только на Штрихе. По атолу не знаю нет аппарата. Пишите на pozdiaev_n@mail.ru. Помогу, чем смогу. Сам варюсь в такой же каше.

    Reply
  23. nike-arz

    (21) Без разницы для 8.1. Все зависит от того как написана обработка обслуживания.

    Reply
  24. user691478_it_1c4

    Отчет о состоянии расчетов заменяет x-отчет? нигде не могу найти ответа. в новой обработке Штриха нет х-отчета..

    Reply
  25. nike-arz

    (24) Все старые методы работают.

    Объект.Пароль = Пароль;

    Объект.СнятьОтчётБезГашения();

    Но я рассматриваю обработку для 8.1. А для 8.2 надо самому сделать по аналогии z-отчета.

    Reply
  26. user691478_it_1c4

    (25)Спасибо! там похоже оочень много чего надо самой сделать, а поговорить об этом не с кем)

    Reply
  27. sdv88

    (25) в компоненте AddIn.SMDrvFR1C20 нет метода СнятьОтчётБезГашения()

    в последней рознице на упр. формах Х-отчет снимается по данным 1с, а не из памяти ФР.

    Reply
  28. nike-arz

    Согласен. Я не использую SMDrvFR1C20.

    Reply
  29. nike-arz

    У меня самописная конфа на УТ 10.2. Платформа 8.2.19.130. Мои методы не подойдут для конфы УТ 10.3.

    ККМ старая модель ШТРИХ-ФР-К, после модернизации ШТРИХ-ФР-01Ф. Чеки печтаются. QR-код тоже. В ОФД отправляются в налоговую тоже. На телефоны клиента и на E-mail все прекрасно уходит. Есть конечно свои заморочки, но над ними я работаю.

    Reply
  30. sdv88

    (29) насколько я знаю через старую компоненту не передается наименование товара (в ОФД есть только количественные и суммрвые данные), а это вроде как требования закона, точно не знаю наши юристы дали такую информацию)

    Reply
  31. nike-arz

    Передается без проблем

    //Пишем наименование товара для передачи в ОФД «//» озаначает что текст передается в ОФД но не печтается на ККМ
    
    Если СтрДлина(СокрЛП(Товар.Товар)) > ШиринаСтрокиНаименование Тогда
    Объект.СтрокаДляПечати = «//»+СокрЛП(Лев(Товар.Товар,ШиринаСтрокиНаименование));
    Иначе
    Объект.СтрокаДляПечати = «//»+СокрЛП(Товар.Товар);
    КонецЕсли;

    надо просто текст раэделить на 2 блок тот, который передаете В ОФД и тот который печатаете на ККМ.

    Все прекрано работает.

    Reply
  32. nataliya_vl

    Подскажите, как сформировать фискальную строку, в которой НДС не выделяется (платежный агент) ? При установке НДС в ноль получается НДС 0%, а это не совсем одно и то же.

    Reply
  33. sdv88

    (31) Если не секрет где вы об этом узнали?)

    Reply
  34. nike-arz

    (32)

    Если НДС Тогда
    Если Товар.СтавкаНДС = 18 Тогда
    Ставка = 1;                         //Настройки для новых касс 1 — НДС -18, 2- НДС — 10
    ИначеЕсли Товар.СтавкаНДС = 10 Тогда    // 3-НДС 0
    Ставка = 2;                         // 4- без  налога
    ИначеЕсли Товар.СтавкаНДС = 0 Тогда    // 5 НДС 18/118
    Ставка = 3;                         // 6 НДС 10/110
    Иначе
    Ставка = 0;
    КонецЕсли;
    
    Объект.Налог1 = Ставка;
    Иначе
    Ставка = 0;
    Объект.Налог1 = Ставка; //Без налога
    КонецЕсли;
    

    Показать

    Здесь я рассматриваю старый драйвер для Штриха DrvFR.dll

    Reply
  35. nike-arz

    (33) Интернет великая сила, кладезь знаний.

    Reply
  36. nataliya_vl

    (34)

    В xml в теге «ставкаНДС» содержится явное значение ставки, не номер позиции. Не указывать ничего нельзя. Если указать 0, будет «НДС 0%», ну ли «Без налога» ( я так понимаю, что раньше встретится в таблице налоговых ставок ФР). Это не совсем верно, НДС есть, но он не выделен при данной операции. Нужно значение » Не выделяется» , ну или полное отсутствие упоминания об НДС.

    Reply
  37. nike-arz

    (36) Насколько я предполагаю в ОФД уйдет даже при ставке НДС 0% -НДС НЕ ОБЛАГАЕТСЯ.

    Во всяком случае на старом драйвере так. А если Вам надо вывод на чек ну попробуйте решить это программно.

    Reply
  38. Lesya_RS

    Как вы отрабатываете случай, когда товар продается со скидкой?

    Reply
  39. nataliya_vl

    (37)

    Там просто в графе НДС 0. С чеком программно сложнее, там «без налога». Впрочем техподдержка уже ответила, что набор ставок НДС фиксирован и менять их нельзя.

    Reply
  40. nike-arz

    (38) Сделал блок уменьшающий цену на скидку. На ФР идет цена со скидкой. Конечно существует погрешность

    при работе с нечетными числами, но я ее тоже учитываю в виде разбивки 1 позиции на 2.

    Reply
  41. Wladimir_spb

    (40) Тоже столкнулся с проблемой при печати чеков со скидками.

    На сайте 1С есть описание метода СформироватьЧек (ProcessCheck) и в нем черным по белому написано, что Цена (Price) — Цена единицы товара без учета скидок/наценок

    Но на практике выяснилось, что у Штриха свое представление о цене без учета скидок/наценок

    Reply
  42. nike-arz

    (41) Скидка (дисконт) — коммерческая, маркетинговая, финансовая льгота, предоставляемая в форме снижения цены на продукцию. Это формулировка что такое скидка. Так как на уровне ФР скидки отключены, поэтому нам никто не запрещает снижать цену. Представления о скидках и способах ее предоставления дело лично каждого.

    Reply
  43. Lesya_RS

    1C ответила на вопрос о скидках. Чтобы заработал расчет скидки в чеке:

    «Проверьте в настройках ККТ — таблица 17, поле 3, значение 0?

    Если там 2, то нужно установить 0.»

    Reply
  44. МимохожийОднако

    Как можно подключить эту обработку к БП2.0?

    Reply
  45. Erne100

    (44) Присоединяюсь к вопросу.

    Reply
  46. Tarlich

    Можно ли подсоединить к УТ 10,3 (старая, Уриб — изменить в конфигураторе ничего не могу)?

    Reply
  47. kir-g

    Как можно с вами связаться?

    Reply
  48. nike-arz

    Всем привет. В ЦТО поставили последнюю прошивку на ШТРИХ-ФР-01Ф проверил. Все прекрасно заработало. Чеки пробиваются. Скидки работают. Чеки в ОФД отправляются. Драйвер для Штриха DrvFR.dll 4.13.0.552. Но радость была преждевременной. После закрытия смены появляется ошибка ОЗУ. Только тех.обнуление. Будем дальше работать и исправлять ошибки. Таблица 17.1.3 режим исчисления скидок 0.

    Reply
  49. kir-g

    Не подскажешь, как поменять интерфейс подключения в фр…

    Reply
  50. sdv88

    (44)думаю что нет.

    Reply
  51. sdv88

    (46)можно, при использовании старой компоненты.

    Reply
  52. sdv88

    (47) в лс..

    Reply
  53. Tarlich

    (50) старая компонента может передавать данные в ОФД ? может разве работать с ФН?

    Reply
  54. mirajen

    Добрый день!

    Пытаюсь внедрить на нашу базу, столкнулась с ошибкой:

    При пробитии чека выдает ошибку «Метод объекта не обнаружен ПолучитьПараметрыККТ в модуле Обработка.ТОСервер.МодульОбъекта» в строке

    Ответ = Объект.Драйвер.ПолучитьПараметрыККТ(Объект.ИДУстройства, ПараметрыККТ);

    Есть подозрение, что DLL SMDrvFR1CLib20.dll и SMDrvFR1CLib.dll действительно не содержат данного метода.

    Установлен драйвер версии DrvFR_4.13_538, в нем есть SMDrvFR1CLib17.dll, но как подключить и использовать ее я не понимаю.

    Прошу совета!

    Reply
  55. mirajen

    (54) уточнение: драйвер DrvFR 4.13_501 содержит библиотеки SMDrvFR1CLib.dll и SMDrvFR1CLib17.dll, а в DrvFR_4.13_538 SMDrvFR1CLib20.dll и SMDrvFR1CLib.dll. Но у меня не работает ни с одним из этих драйверов 🙁

    Reply
  56. kir-g

    Добрый день.

    Прошу совета, а как быть с эквайрингом печатать чек по такой же схеме или как?

    Reply
  57. L33tBot1

    (48) Привет! У нас тоже такой же фискальник. Пробивается все хорошо со скидками построчно. А вот беда, при закрытии чека Скидка еще и на Итог накручивается. Как быть не знаешь?

    Reply
  58. L33tBot1

    Кассовый аппарат Штрих-М-01Ф. Пробивается все хорошо со скидками построчно. А вот беда, при закрытии чека Скидка еще и на Итог накручивается. Как быть не знаете?

    Reply
  59. nike-arz

    (53) Работает без проблем.

    Reply
  60. nike-arz

    (57) Какая прошивка. У меня от 22.02.2017. Драйвер 4.13.0.552

    Reply
  61. L33tBot1

    Итог на каждый чек еще на скидку умножает, что неправильно. Версия последняя с сайта штрих у меня.

    Reply
  62. L33tBot1

    а вот сам чек со скидкой прилагаю. Как видно итог не правильный, хотя код стандартный ЗакрытьЧек(идентификатор, СуммаНал, СуммаБезнал);

    Reply
  63. Tarlich

    Беда ! пишет при пробитии

    8eH нулевой итог чека

    хотя все введено

    Reply
  64. nike-arz

    (63) Посмотри настройку таблиц №1 где есть разрешение нулевого чека и таблица №17 режим исчисления скидок должно быть 0

    Reply
  65. L33tBot1

    (64) Так и стоит 0

    Reply
  66. nike-arz

    (65) Проверь таблица №1 ряд 1 поле 23 должно быть 0.

    Reply
  67. AKV77

    Спасибо

    Reply
  68. Tarlich

    (64) чек не нулевой был , может что то из за скидок?

    Reply
  69. nike-arz

    (68) Могу выслать настройку своих таблиц. Сообщите куда. Настройки меняются в 1, 17, 23 таблицах.

    Вышлю свежий драйвер может поможет. По последней прошивке обратись к модернизаторам. От себя добавлю у меня появлялась ошибка ОЗУ при закрытии смены. Решение: при обновлении прошивки форматировать флешку, в таблице 23 отключить обновление с сервера. поле 1 и 5 должно быть 0. Пока полет нормальный. Прошивка

    Версия ПО : C.1

    Сборка ПО : 35692

    Дата ПО : 22.02.2017

    Драйвер 4.13.0.552

    Reply
  70. omut

    (62) меняйте прошивку кассового аппарата. Там грабли.

    Reply
  71. ики

    (54)

    Была такая же проблема , решилась путем переименования обработки обслуживания и настройки ФР в «ШТРИХ-ФР-Ф исп.04»

    И убрали старую настройку, оставили только новую

    Однако после попытки снятия Х-отчета драйвер отвалился, пришлось заново установить ком порт, после чего опять продажа прошла

    Если у кого была проблема со снятием Х-отчет отпишитесь как решить?

    Reply
  72. L33tBot1

    (70)

    Спасибо. Проверю. Сообщу.

    Reply
  73. omut

    (71) Попробуйте 552 релиз драйвера. И еще: пользователь, под которым запускаете 1С с правами администратора?

    Reply
  74. Tarlich

    (69) Спасибо ! может не высылать а добавить к публикации -))?

    Reply
  75. nike-arz

    (74)

    Reply
  76. nike-arz

    (71) Попробуйте должно работать

    ПодключитьВнешнююКомпоненту(«AddIn.DrvFR»);
    FR = Новый COMОбъект («AddIn.DrvFR»);
    FR.Сonnect();
    FR.Пароль = 30;
    FR.СнятьОтчётБезГашения();
    Если FR.Результат <> 0 Тогда
    ОшибкаПараметра=FR.ОписаниеРезультата;
    Сообщить(«ОшибкаПараметра «+ОшибкаПараметра);
    КонецЕсли;
    FR.РазорватьСвязь();

    Показать

    Reply
  77. nike-arz

    (76) На русском языке методы не проходят. Вот это работает проверено.

    ПодключитьВнешнююКомпоненту(«AddIn.DrvFR»);
    FR = Новый COMОбъект («AddIn.DrvFR»);
    FR.Password = 30;
    FR.PrintReportWithoutCleaning();
    Попытка
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    FR.Disconnect();

    Показать

    Reply
  78. Divanoff

    Напишите, плиз, процедуры:

    ПараметрыФискальнойСтрокиЧека()

    СформироватьПараметрыИзЧека(Чек)

    ПараметрыОперацииФискализацииЧека()

    Не в одной строке.

    Либо подскажите, плиз, где можно их найти.

    Спасибо.

    Reply
  79. Divanoff

    Вроде все сделал как написано (у нас древняя УПП), перенес из новой УПП функционал, но выдает ошибку:

    FFFFFFF7h, Устройство с таким ИДУстройства не подключено

    Что это может быть?

    Reply
  80. dr2c

    При помощи этой обработки у меня получится обещанное 1с «В кассовом чеке, сформированном, из документов «Приходный кассовый ордер» и «Оплата от покупателя платежной картой» с видом операции «Оплата от покупателя», выводятся подробные сведения о номенклатуре — наименование, количество, цена, сумма, сумма НДС.»?

    Ут 10.3.41 при попытке печатать чек из ПКО требует подключения ФР (у меня ШТрих-on-line подключен как ККТ с передачей данных).

    Если его подключить как ФР, то не печатаются ЧекиККМ, а ПКО выходит с одной строкой- общая сумма…

    Reply
  81. nike-arz

    (79Для древней УПП используйте древний драйвер DrvFR. Конечно надо потрудится. но все прекрасно работает. Не надо изобретать велосипед и прикручивать новый драйвер к древней УПП. E-mail мой знаете пришли свой. вышлю обработку и драйвер, а дальше сам. Сразу оговорюсь работаю только со Штрихом. Атола к сожалению нет. Для 7.7 писал обработку, но сейчас нет под руками документации.

    Reply
  82. nike-arz

    (80)В УТ 10.3.41 в стандартной конфигурации 1с-ки прекрасно все сделали. Но они сделали все стандарно. А дальше идут «нюансы», которые за вас никто не будет решать. Изучайте код, интегрируйте свой. Кстати в 10.3.41 доработки минимум.

    Reply
  83. dr2c

    (82)Я не спрашивал прекрасно или нет сделали в 1с. Я спрашивал алгоритм действий для печати чека из ПКО в СТАНДАРТНОЙ ут 10.3.41

    Reply
  84. nike-arz

    (83)Извините у меня УТ-10.2

    Reply
  85. Yashazz

    (77) Приведённый код отрабатывает без сообщений об ошибках, но ни-че-го не делает. И вообще ФР игнорирует команды, даже Beep. Подключение через IP, потому что usb-кабеля нету. Драйвер и тестовый интерфейс утилиты отрабатывают нормально, всё видят и делают.

    Где у меня кривые руки?

    Reply
  86. Yashazz

    (85) ВОПРОС ОТПАДАЕТ. Была-таки проблема связи, отвал по таймауту)

    Reply
  87. L33tBot1

    (70) Поменяли прошивку. Помогло! Спасибо!

    Reply
  88. kosta

    фискальник «РР-04Ф поддреживаеться ? от RR-Electro http://rr-electro.com/products/online-kassa-kkt-rr-04f/

    Заранее благодарен

    Reply
  89. kosta

    Извините за назойливость а для RR-Electro http://rr-electro.com/products/online-kassa-kkt-rr-04f/ АСПД

    есть варианты подключения к 1с 7.7

    Reply
  90. 1prog@bk.ru

    Ребята привеи, у меня следующий вопрос

    В таблице налоговых ставок следующее

    1.1800 — НДС 18%;

    2. 1000 — НДС 10%;

    3. 0 — НДС 0%;

    4. 0 — Без налога;

    5. 1800 — Ставка 18/118;

    6. Ставка 10/110.

    в драйвере аналогично заполнены первые 4 позиции (их там всего 4)

    При фискализации чека я передаю ставку 18, печатается НДС 18%, а теперь вопрос,

    как заставить распечатать ставку 5. 1800 — Ставка 18/118; ???

    использую: «Штрих-М»-01Ф и БПО 2.0.2.4

    Reply
  91. mikitondom

    Драйвер ФР 4.13.562 .. использую AddIn.SMDrvFR1C, после перехода на 4.13 перестал выводится QR код Объект.Драйвер.НапечататьШтрихКод(Объект.ИДУстройства, ТипШтрихКода, ШтрихКод)

    на версии 4.12 все прекрасно работало..

    такое впечатление что метод разучился выводить QR кода, только EAN13…

    касса не менялась…

    вернутся на 4.12 не вариант, так как вторая касса это уже ККТ

    Сама касса не менялась и прекрасно выводила QR код.. Что делать не понятно..Хотя конечно проблема уйдет сама, когда кассу переведут на ФЗ-54..

    Reply
  92. AlexMC75

    Кто-нибудь знает как заставить работать стандартную обработку ККТ с передачей данных через R

    DP ?

    Причина: не подключается внешня компонента.

    А ваша обработка работает в RDP ?

    Совместима ли она с КА 1.1.82.2 ?

    Reply
  93. omut

    (92)

    Кто-нибудь знает как заставить работать стандартную обработку ККТ с передачей данных через R

    DP ?

    Все прекрасно работает на штатной КА 1.1.85.2. И так было с самого начала (как только добавили поддержку ККТ с передачей данных, вроде с 1.1.81.2),

    Reply
  94. L33tBot1

    Никто не знает как печатать чеки по отделам. В таблицах ККТ он есть, а в модулях 1с не могу найти.

    Reply
  95. L33tBot1

    (94) Разобрался! В модуль добавил, чеки печатает по отделам. Вот только с гашением по отделам не выводит. Как быть?

    Reply
  96. dmam

    (29) Прошу подсказать, как печатается QR -код через DrvFR на штрих. Даже не сам вывод интересует а где взять ссылку проверки для указания в коде? или Штрих-М сам выводит QR при закрытии чека?

    Reply
  97. nike-arz

    (96) Касса сама формирует QR при закрытии чека.

    Reply
  98. user725488

    (28)

    (59) Подскажите старая компонента это DrvFR.dll? В каком руководстве есть методы этой компоненты. А то в начале пути. А времени осталось мало.

    Reply
  99. nike-arz

    (99)Пришли e-mail вышлю обработку. там все найдешь.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *