Заказчик перешил все фискальные регистрторы новой прошивкой. После чего аппараты стали недоступны для драйверов ДТО8. Не найдя на просторах интернета бесплатной обработки для работы с фискальным регистратором и 1С7.7 ТиС переделал frATOL54_comm_105.ert для работы с 10ми драйверами.
Обработка подключается (показано на скриншоте) как стандартная обработка для работы с торговым оборудованием.
Обработка тестировалась на измененной конфигурации 1с7.7 ТиС 9.х
До начала использования обработки необходимо зарегистрировать библиотеку.
Запустите командную строку под администратором и выполните команду
regsvr32 "C:\Program Files (x86)\.....\addin_fptr10_x86.dll"
//********************************************************************************
Функция ПечататьЧек(Объект, Пароль, СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, ПУП, Кассир, НомерСекции, НомерЧека, ДлинаСтроки, Покупатель="")
Рез = 0;
СписокТоваров = УстановитьЦенуБезСкидки(СписокТоваров);
ВыполнитьФорматноЛогическийКонтроль(СписокТоваров);
СписокТоваров = УстановитьЦенуБезСкидки(СписокТоваров);
Если Подключить(Объект) = 1 Тогда
//ДТО 10
//Открыть чек
Объект.setParam(1021, СокрЛП(Кассир));
Объект.operatorLogin();
Если ПризнВозврата=1 Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_RECEIPT_TYPE, Объект.LIBFPTR_RT_SELL_RETURN);
Иначе
Объект.setParam(Объект.LIBFPTR_PARAM_RECEIPT_TYPE, Объект.LIBFPTR_RT_SELL);
КонецЕсли;
Ответ = Объект.openReceipt();
Если Ответ<>0 Тогда
Ошибка(Объект, Ответ);
рез = 0;
Объект.cancelReceipt();
Возврат 0;
КонецЕсли;
Если НЕ (Покупатель="") Тогда
ПолнНаименование = Покупатель.ПолнНаименование;
ИНН = Покупатель.ИНН;
Если Найти(ИНН, "\") <> 0 Тогда
ИНН = Лев(ИНН, Найти(ИНН, "\") - 1);
ИначеЕсли Найти(ИНН, "/") <> 0 Тогда
ИНН = Лев(ИНН, Найти(ИНН, "/") - 1);
КонецЕсли;
Если ИННСоответствуетТребованиямНаСервере(ИНН)=0 Тогда
Сообщить("ИНН не соответствует требованиям налоговой "+ ИНН);
Возврат 0;
КОнецЕсли;
//1227 Наименование получателя string
Объект.setParam(1227, ЗаменитьСпецСимволы(ПолнНаименование) );
//1228 ИНН получателя string
Объект.setParam(1228,СокрЛП(ИНН));
//1117 Электронный адрес отправителя чека string
//Объект.setParamString(1117, Док.Фирма.ЭлПочта );
//1055 Применяемая система налогообложения (СНО) int
Объект.setParam(1055, Объект.LIBFPTR_TT_OSN );
//1187 Место расчета string
//1060 Адрес сайта ФНС string
//1057 Признак агента int
//Объект.setParamInt(1055, _cons.LIBFPTR_AT_NONE );
//1171 Телефон поставщика string
//fptr.setParamString(1171, СокрЛП(Док.Фирма.ЮрЛицо.Телефоны) );
//1044 Операция платежного агента string
//1073 Телефон платежного агента (может повторяться несколько раз) string
//1005 Адрес оператора перевода string
//1016 ИНН оператора перевода string
//1026 Наименование оператора перевода string
//1075 Телефон оператора перевода (может повторяться несколько раз) string
//1074 Телефон оператора по приему платежей (может повторяться несколько раз) string
//1084 Дополнительный реквизит пользователя bytearray
//1192 Дополнительный реквизит чека (БСО) string
КонецЕсли;
СписокТоваров.ВыбратьСтроки();
Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
//Продажа ЗаменитьСпецСимволы(СписокТоваров.ТовНаим)
Объект.setParam(Объект.LIBFPTR_PARAM_COMMODITY_NAME, СокрЛП(СписокТоваров.ТовНаим));
Объект.setParam(Объект.LIBFPTR_PARAM_PRICE, СписокТоваров.Цена);
Объект.setParam(Объект.LIBFPTR_PARAM_QUANTITY, СписокТоваров.Количество);
Если СписокТоваров.СтавкаНДС = "none" Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_NO );
ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT18 );
ИначеЕсли СписокТоваров.СтавкаНДС = "20" Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT20 );
ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT10 );
ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда
Объект.setParam(Объект.LIBFPTR_PARAM_TAX_TYPE, Объект.LIBFPTR_TAX_VAT0 );
КонецЕсли;
//Объект.setParam( Объект.LIBFPTR_PARAM_TAX_SUM, СписокТоваров.НДС);
//1212 Признак предмета расчета int
// Признак предмета расчёта. Свойство ItemType может принимать значения:
// 1 - товар, за исключением подакцизного товара
// 2 - подакцизный товар
// 3 - работа
// 4 - услуга
// 5 - приём ставок при деятельность по организации и проведению азартных игр
// 6 - выплата выигрышей в азартных играх
// 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
// 8 - выплата выигрышей в лотереях
// 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации
// 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
// 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
// 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
Объект.setParam(1212,1);
//1214 Признак способа расчета int
// Признак способа расчёта. Свойство PaymentMode может принимать значения:
// 1 - Полная предварительная оплата до момента передачи предмета расчета
// 2 - Частичная предварительная оплата до момента передачи предмета расчета
// 3 - Аванс
// 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
// 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
// 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
// 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
Объект.setParam(1214,4);
Ответ = Объект.registration();
Если Ответ<>0 Тогда
Ошибка(Объект, Ответ);
рез = 0;
Возврат рез;
КонецЕсли;
КонецЦикла;
//Закрыть чек
Если ПризнВозврата=0 Тогда
//Оплата
Объект.setParam(Объект.LIBFPTR_PARAM_PAYMENT_TYPE, Объект.LIBFPTR_PT_CASH);
Объект.setParam(Объект.LIBFPTR_PARAM_PAYMENT_SUM, СуммаЧека);
Объект.payment();
КонецЕсли;
Ответ = Объект.closeReceipt();
Если Ответ<>0 Тогда
Ошибка(Объект, Ответ);
рез = 0;
Возврат Рез;
КонецЕсли;
НомерЧека = ПолучитьНомерЧека(Объект);
Рез = Объект.close();
ОписаниеПоследнейОшибки = Объект.ErrorDescription();
КодПоследнейОшибки = Объект.ErrorCode();
Если КодПоследнейОшибки = 0 тогда
Рез = 1;
Иначе
ОписаниеРезультата = ОписаниеПоследнейОшибки;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции