ФЗ-54 Подключение фискальных регистраторов с ФН по TCP. Доработка Розницы 1.0. Обработка обслуживания Штрих-М для драйверов версии 4.13
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Файлики 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, чтобы он работал и отправлял данные в интернет. В итоге вроде всё работает.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
ККМ Кассовые операции Розничная торговля НДС 22% Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения Россия Платные (руб)
Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1, ФФД 1.2). Подключайте любую онлайн кассу к практически любой конфигурации на обычных формах. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим и маркировку. Поддерживает локальный модуль честного знака для офлайн проверки. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows Адаптировано к ставке НДС 22% и ТС ПИоТ.
6100 руб.
27.02.2017 918863 6631 10489
ККМ Кассовые операции Розничная торговля НДС 22% Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)
Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима. Поддержка пробития чеков с новыми ставками НДС 5%, НДС 7% и НДС 22%.
7900 руб.
25.05.2015 406064 2036 3372
ККМ Розничная торговля Системный администратор Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)
Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль синхронизации незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочем месте кассира) установлен Frontol или планируется его установка. Подходит для 1С:Розница 2.3 / 3.0, 1С:УНФ 3.0
4200 руб.
22.03.2019 106480 892 494
ККМ Кассовые операции Розничная торговля Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Расширение для типовых конфигураций для Управляемых форм позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую! Решение для розничных продаж! Обновление 19.03.26 для 1С:Розница 2.3.23 и 27.04.2026 для 1С:УТ 11.5.25 в новых релизах tcp/ip. Реализована работа с ПИОТ.
9500 руб.
27.08.2018 142362 828 603
ККМ Кассовые операции Розничная торговля НДС 22% Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Торговля и склад 7.7 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Платные (руб)
«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест или нескольких баз 1С. Поддержка ТСПИоТ для Атол, Штрих, Ритейл и РР-Электро. Возможность работы с ТСПИоТ без изменения конфигурации 1С! Поддерживаются ВСЕ ревизии требований фирмы 1С к разработке драйверов ККТ от 2.0 до 4.7. Бесплатные функции: Эмулятор ККМ с возможностью эмуляции различных сбоев, печать чеков продажи и покупки до 1000р, прочие виды чеков - без ограничений.
18000 руб.
02.09.2016 160672 243 210
Кассовые операции Розничная торговля ККМ 1С 8.3 1С 8.5 1С:Розница 2 1С:Управление торговлей 11 Россия Платные (руб)
Расширение для «Розницы» 2.3 и «Управления торговлей» 11.5. При сканировании пачки сигарет ставит в строку чека МРЦ из её кода маркировки. Возвращает коды маркировки на свои строки перед пробитием: типовая программа в чеке с пачками разной МРЦ может отправить в ККТ и «Честный знак» код одной пачки с ценой другой. Не даёт пробить чек дороже МРЦ. Конфигурацию не меняет.
23.09.2026 5378 14 G_100802897175107255412 0
Кассовые операции ККМ Пользователь 1С:Предприятие 8 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)
Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).
7198 руб.
12.04.2023 17719 137 15
ККМ Разработчик Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Россия Бухгалтерский учет Платные (руб)
Хотите серьезно ускорить печать чеков, или печатать с разных рабочих мест на один ккм? Разработка позволит интегрировать его с вашей программой 1С. Печатать чеки можно будет даже с мобильного телефона. Работает на любой платформе 1С управляемые формы и на любой операционной системе. Подойдет для конфигураций: Розница 2, Управление нашей фирмой, Управление Торговлей 11, Бухгалтерия 3, Комплексная автоматизация 2, ERP, ЗУП 3, БГУ 2, Управление холдингом, конфигурации Рарус и многих других отраслевых решений
5490 руб.
01.02.2021 61746 531 296
"При вызове метода командного интерфейса НачатьОткрытиеСменыНаФискальномУстройстве() будет отправлена команда открытия смены на фискальное устройство, создан документ кассовая смена и, в случае использования ККТ, будут заполнены реквизиты фискальных данных."
Или это только для заполнения документа?
"БПО 2.0 включает документ КассоваяСмена. Если в конфигурации уже имеется документ КассоваяСмена и/или перечисление СтатусыКассовойСмены - переименуйте эти объекты конфигурации. При этом определение необходимости сохранения данных документа Кассовая смена, существовавшего в конфигурации ранее и алгоритмы переноса данных в новый докуемнт, определяется на уровне прикладного решения."
Думал, что без этого документа нельзя будет открыть кассовую смену...
Скажите пожалуйста что нужно прописать в конфигурации розницы, чтобы Ваша обработка работала:
1. Это закинуть библиотеки на диск С
2. Я так понимаю нужно доработать документ ЧекККМ
3. Доработать СерверТО
но не понял откуда взять функцию ПечатьЧекаККМОФД
Библиотеки нужно еще зарегестрировать.
Функция ПечатьЧекаККМОФД(Объект, НомерЧека, НомерСмены,ОписаниеЧека, СуммаНал, СуммаБезнал, ПризнакВозврата)
ПараметрыККТ = Неопределено;
ВыходныеПараметрыФискализации = Неопределено;
ВходныеПараметрыИзРеальногоЧека = СформироватьПараметрыИзЧека(Ссылка);
Результат = ПолучитьСерверТО().ФискализироватьЧек(Объект,ПараметрыККТ,ВходныеПараметрыИзРеальногоЧека ,ВыходныеПараметрыФискализации);
НомерСмены = ВыходныеПараметрыФискализации[0];
НомерЧека = ВыходныеПараметрыФискализации[1]; // тут вопрос надо ли брать номер чека из фр или оставлять так как есть чтобы он шел по порядку. каждый решает сам наверно)
КонецФункции
ПоказатьККМ старая модель ШТРИХ-ФР-К, после модернизации ШТРИХ-ФР-01Ф. Чеки печтаются. QR-код тоже. В ОФД отправляются в налоговую тоже. На телефоны клиента и на E-mail все прекрасно уходит. Есть конечно свои заморочки, но над ними я работаю.
//Пишем наименование товара для передачи в ОФД "//" озаначает что текст передается в ОФД но не печтается на ККМ
Если СтрДлина(СокрЛП(Товар.Товар)) > ШиринаСтрокиНаименование Тогда
Объект.СтрокаДляПечати = "//"+СокрЛП(Лев(Товар.Товар,ШиринаСтрокиНаименование));
Иначе
Объект.СтрокаДляПечати = "//"+СокрЛП(Товар.Товар);
КонецЕсли;надо просто текст раэделить на 2 блок тот, который передаете В ОФД и тот который печатаете на ККМ.
Все прекрано работает.
Если НДС Тогда
Если Товар.СтавкаНДС = 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
В xml в теге "ставкаНДС" содержится явное значение ставки, не номер позиции. Не указывать ничего нельзя. Если указать 0, будет "НДС 0%", ну ли "Без налога" ( я так понимаю, что раньше встретится в таблице налоговых ставок ФР). Это не совсем верно, НДС есть, но он не выделен при данной операции. Нужно значение " Не выделяется" , ну или полное отсутствие упоминания об НДС.
Там просто в графе НДС 0. С чеком программно сложнее, там "без налога". Впрочем техподдержка уже ответила, что набор ставок НДС фиксирован и менять их нельзя.
На сайте 1С есть описание метода СформироватьЧек (ProcessCheck) и в нем черным по белому написано, что Цена (Price) - Цена единицы товара без учета скидок/наценок
Но на практике выяснилось, что у Штриха свое представление о цене без учета скидок/наценок
Пытаюсь внедрить на нашу базу, столкнулась с ошибкой:
При пробитии чека выдает ошибку "Метод объекта не обнаружен ПолучитьПараметрыККТ в модуле Обработка.ТОСервер.МодульОбъекта" в строке
Ответ = Объект.Драйвер.ПолучитьПараметрыККТ(Объект.ИДУстройства, ПараметрыККТ);
Есть подозрение, что DLL SMDrvFR1CLib20.dll и SMDrvFR1CLib.dll действительно не содержат данного метода.
Установлен драйвер версии DrvFR_4.13_538, в нем есть SMDrvFR1CLib17.dll, но как подключить и использовать ее я не понимаю.
Прошу совета!
Была такая же проблема , решилась путем переименования обработки обслуживания и настройки ФР в "ШТРИХ-ФР-Ф исп.04"
И убрали старую настройку, оставили только новую
Однако после попытки снятия Х-отчета драйвер отвалился, пришлось заново установить ком порт, после чего опять продажа прошла
Если у кого была проблема со снятием Х-отчет отпишитесь как решить?
ПодключитьВнешнююКомпоненту("AddIn.DrvFR");
FR = Новый COMОбъект ("AddIn.DrvFR");
FR.Сonnect();
FR.Пароль = 30;
FR.СнятьОтчётБезГашения();
Если FR.Результат <> 0 Тогда
ОшибкаПараметра=FR.ОписаниеРезультата;
Сообщить("ОшибкаПараметра "+ОшибкаПараметра);
КонецЕсли;
FR.РазорватьСвязь(); ПоказатьПодключитьВнешнююКомпоненту("AddIn.DrvFR");
FR = Новый COMОбъект ("AddIn.DrvFR");
FR.Password = 30;
FR.PrintReportWithoutCleaning();
Попытка
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
FR.Disconnect(); ПоказатьГде у меня кривые руки?
Вышлю свежий драйвер может поможет. По последней прошивке обратись к модернизаторам. От себя добавлю у меня появлялась ошибка ОЗУ при закрытии смены. Решение: при обновлении прошивки форматировать флешку, в таблице 23 отключить обновление с сервера. поле 1 и 5 должно быть 0. Пока полет нормальный. Прошивка
Версия ПО : C.1
Сборка ПО : 35692
Дата ПО : 22.02.2017
Драйвер 4.13.0.552
Ут 10.3.41 при попытке печатать чек из ПКО требует подключения ФР (у меня ШТрих-on-line подключен как ККТ с передачей данных).
Если его подключить как ФР, то не печатаются ЧекиККМ, а ПКО выходит с одной строкой- общая сумма...
В таблице налоговых ставок следующее
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
на версии 4.12 все прекрасно работало..
такое впечатление что метод разучился выводить QR кода, только EAN13...
касса не менялась...
вернутся на 4.12 не вариант, так как вторая касса это уже ККТ
Сама касса не менялась и прекрасно выводила QR код.. Что делать не понятно..Хотя конечно проблема уйдет сама, когда кассу переведут на ФЗ-54..
DP ?
Все прекрасно работает на штатной КА 1.1.85.2. И так было с самого начала (как только добавили поддержку ККТ с передачей данных, вроде с 1.1.81.2),
там нужно создать атрибут - ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ПозицииЧека[0].НомерСекции));
потом в
// Табличная часть
Если ОбщиеПараметры.ПозицииЧека <> Неопределено Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Positions");
Для ИндексМассива = 0 По ОбщиеПараметры.ПозицииЧека.Количество() - 1 Цикл
ТекущаяПозиция = ОбщиеПараметры.ПозицииЧека[ИндексМассива];
Если ТекущаяПозиция.Свойство("ФискальнаяСтрока") Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
ЗаписьXML.ЗаписатьАтрибут("Name" , XMLСтрока(ТекущаяПозиция.Наименование));
ЗаписьXML.ЗаписатьАтрибут("Quantity" , XMLСтрока(ТекущаяПозиция.Количество));
ЗаписьXML.ЗаписатьАтрибут("Price" , XMLСтрока(ТекущаяПозиция.Цена));
ЗаписьXML.ЗаписатьАтрибут("Amount" , XMLСтрока(ТекущаяПозиция.Сумма));
ЗаписьXML.ЗаписатьАтрибут("Department", XMLСтрока(ТекущаяПозиция.НомерСекции));
ЗаписьXML.ЗаписатьАтрибут("Tax" , XMLСтрока(ТекущаяПозиция.СтавкаНДС));
ЗаписьXML.ЗаписатьКонецЭлемента();
СуммаЧека = СуммаЧека + ТекущаяПозиция.Сумма;
ИначеЕсли ТекущаяПозиция.Свойство("ТекстоваяСтрока") Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", XMLСтрока(ТекущаяПозиция.Текст));
ЗаписьXML.ЗаписатьКонецЭлемента();
ИначеЕсли ТекущаяПозиция.Свойство("ШтрихКод") Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Barcode");
ЗаписьXML.ЗаписатьАтрибут("BarcodeType", XMLСтрока(ТекущаяПозиция.ТипШтрихкода));
ЗаписьXML.ЗаписатьАтрибут("Barcode", XMLСтрока(ТекущаяПозиция.ШтрихКод));
ЗаписьXML.ЗаписатьКонецЭлемента();
Иначе
ТекстОшибки = НСтр("ru='Не определен тип позиции чека.'");
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Вставить("ТекстОшибки", ТекстОшибки);
Результат = Ложь;
Возврат Результат;
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли; ПоказатьУ меня, у разных клиентов, три таких ККТ, конфигурации 1С разные (БП 3.0 последняя, УНФ последняя, ТиС 7.7 последняя).
Драйвера от Штрих - 4.13.577, прошивки ККТ актуальные.
Имеется две проблемы:
1. В чеках не печатается сумма НДС построчно, т.е. по каждой позиции номенклатуры, при этом сами ставки НДС выводятся, и итоги НДС по чеку в разрезе ставок НДС выводятся корректно (всё правильно посчитано).
Ставки НДС и в ККТ (в таблица 6 "Налоговые ставки"), и в 1С (в настройке драйвера), прописаны корректно.
Поле 14 табл.1 "Начисление налогов" - стоит "0" (налог начисляется на каждую операцию в чеке),
Поле 16 табл.1 "Печать налогов" - стоит "1" (в чеке печатаются лишь названия налогов и накопления по ним).
А чек, в итоге, получается, как в прикреплённом файле.
2. В Z-отчете нет раздела по начислению налогов. Понятно, что этот раздел должен быть только в расширенном варианте отчета с гашением, но ни на какие значения, установленные в поле 30 табл.1 ("Сокращённый отчёт с гашением") ККТ не реагирует, никак - печатается только сокращённый вариант отчёта с гашением. В руководстве пользователя по этой ККТ в описании поля 30 написано - "Не используется".
Таблица 17 называется "Региональные настройки". Ранее никак неиспользуемая, теперь становится не менее важна, как и первая таблица
Поле 16. Rus печать налога в операции (бывш. печать сообщения без налога)
Допустимое значение: 0-3
0 - налог 4 (БЕЗ НАЛОГА) не печатается, остальные печатаются.
1 - все налоги печатаются
2 - печатается только буква налога (налог 4 также никак не отмечается), ставка не печатается. (значение по умолчанию).
3 - буква налога не печатается вообще, в том числе при закрытии чека.
/// Драйвер ФР: 4.13.0.587
/// Модель: ШТРИХ-М-01Ф; №031333
/// Версия ПО: C.1.37646 (19.04.2017)
В таблицах все настройки сделаны.
Суммы НДС построчно в ОФД уходят, а на чеке не печатаются.
Библиотека SMDrvFR1C20.dll.
для 4,14 пришлось немного перепахать.
Вопрос - кто разобрался как передавать дополнительные параметры при печати чека - типа адрес ОФД, электронку и телефон клиента?
Добавлять в ту-же структуру CheckPackage?
и как заправшивать отправку смс или электронки?
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 580988
Создание 26.01.17 14:20
Обновление 26.01.17 14:20
Просмотры 81133
Загрузки 170
Рейтинг
29
Комментарии 120
Код открыт Не указано
Рубрики ККМ
Кому Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация
1С:Комплексная автоматизация 1.х
,
1С:Управление торговлей 10
,
1С:Розница 2
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Розничная и сетевая торговля (FMCG)
Налоги Не имеет значения
Вид учета Управленческий учет
Доступ к файлу Абонемент ($m)