Обработка драйвер Посцентр: Драйвер ККТ с передачей данных в ОФД 4.7 (ФФД 1.2) предназначена для Управлении торговли 10.3. В составе две обработки под х32-битный и х64-битный клиенты платформы 1С.
В конфигурацию самостоятельно добавить новые ставки НДС 22%.
В общих модулях необходимо сделать изменения.
Общий модуль ПодключаемоеОборудованиеУниверсальныйДрайверКлиент:
1. Добавить две функции
Функция ПолучитьПараметрыXML(Параметры, ТипОборудования = Неопределено) Экспорт
Результат = "";
Если Параметры <> Неопределено Тогда
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters");
Если Не ПустаяСтрока(ТипОборудования) Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameter");
ЗаписьXML.ЗаписатьАтрибут("Name", "EquipmentType");
ЗаписьXML.ЗаписатьАтрибут("Value", XMLСтрока(ТипОборудования));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
Для Каждого Параметр ИЗ Параметры Цикл
Если Лев(Параметр.Ключ, 2) = "P_" Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameter");
ЗаписьXML.ЗаписатьАтрибут("Name", Сред(Параметр.Ключ, 3));
ЗаписьXML.ЗаписатьАтрибут("Value", XMLСтрока(Параметр.Значение));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
Результат = ЗаписьXML.Закрыть();
КонецЕсли;
Возврат Результат;
КонецФункции
// Выполняет тест устройства
//
// Параметры:
// ПараметрыПодключения - Структура
//
// Возвращаемое значение:
// см. РезультатОперацииНаОборудовании
//
Функция РевизияИнтерфейса(ОбъектДрайвера, ПараметрыПодключения) Экспорт
Попытка
РезультатВызова = ОбъектДрайвера.ПолучитьРевизиюИнтерфейса(); // Структура
РевизияИнтерфейса = РезультатВызова.Значение;
Исключение
// Версия требований 2.5 и ниже
РевизияИнтерфейса = 4000;
КонецПопытки;
ПараметрыПодключения.Вставить("РевизияИнтерфейса", РевизияИнтерфейса);
Возврат РевизияИнтерфейса;
КонецФункции
2. Изменить функцию:
Функция ПодключитьУстройство(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры) Экспорт
Результат = Истина;
НовыйСтандарт = Ложь;
ВыходныеПараметры = Новый Массив();
ПараметрыПодключения.Вставить("ИДУстройства", "");
ТипОборудованияИспользуемый= "";
Если ПараметрыПодключения.Свойство("ТипОборудования") Тогда
ТипОборудованияИспользуемый = ПараметрыПодключения.ТипОборудования;
// Предопределенный параметр с указанием типа драйвера.
Попытка
ОбъектДрайвера.УстановитьПараметр("EquipmentType", ТипОборудованияИспользуемый)
Исключение
Результат = Ложь;
ОписаниеОшибки = НСтр("ru='Ошибка обращения к драйверу.'");
СформироватьОшибку(ВыходныеПараметры, ОписаниеОшибки);
Возврат Результат;
КонецПопытки;
КонецЕсли;
ОписаниеДрайвера = "";
Попытка
РевизияИнтерфейса = ОбъектДрайвера.ПолучитьРевизиюИнтерфейса( );
НовыйСтандарт = Истина;
// Получаем описание драйвера.
ОписаниеДрайвера = "";
Попытка
// Получаем описание драйвера
ОбъектДрайвера.ПолучитьОписание(ОписаниеДрайвера);
Исключение
Результат = Ложь;
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(999);
ВыходныеПараметры.Добавить(НСтр("ru='Ошибка вызова метода <ОбъектДрайвера.ПолучитьОписание>.'") + Символы.ПС + ОписаниеОшибки());
Возврат Результат;
КонецПопытки;
Исключение
ТипОборудования = "";
ИнтеграционныйКомпонент = Ложь;
ОсновнойДрайверУстановлен = Ложь;
РевизияИнтерфейса = МенеджерОборудованияКлиентПовтИсп.РевизияИнтерфейсаДрайверов();
URLЗагрузкиДрайвера = "";
ПараметрыДрайвера = "";
ДополнительныеДействия = "";
НаименованиеДрайвера = "";
Попытка
// Получаем описание драйвера
ОбъектДрайвера.ПолучитьОписание(НаименованиеДрайвера, ОписаниеДрайвера, ТипОборудования, РевизияИнтерфейса, ИнтеграционныйКомпонент, ОсновнойДрайверУстановлен, URLЗагрузкиДрайвера);
Исключение
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "ПолучитьОписание", ОписаниеОшибки());
Возврат Результат;
КонецПопытки;
КонецПопытки;
ПараметрыПодключения.Вставить("РевизияИнтерфейса", РевизияИнтерфейса);
Если ПараметрыПодключения.РевизияИнтерфейса > 4002 Тогда
ПараметрыПодключения.ПараметрыXML = ПолучитьПараметрыXML(Параметры, ПараметрыПодключения.ТипОборудования);
Попытка
РезультатВызова = ОбъектДрайвера.ПодключитьОборудование(ПараметрыПодключения.ИДУстройства,
ПараметрыПодключения.ТипОборудования, ПараметрыПодключения.ПараметрыXML); // Структура
ПараметрыПодключения.ИДУстройства = РезультатВызова.Параметры[0];
Ответ = РезультатВызова.Значение;
Исключение
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "Подключить", ОписаниеОшибки());
Возврат Результат;
КонецПопытки;
Иначе
Для Каждого Параметр Из Параметры Цикл
Если Лев(Параметр.Ключ, 2) = "P_" Тогда
ЗначениеПараметра = Параметр.Значение;
ИмяПараметра = Сред(Параметр.Ключ, 3);
ОбъектДрайвера.УстановитьПараметр(ИмяПараметра, ЗначениеПараметра)
КонецЕсли;
КонецЦикла;
Попытка
Ответ = ОбъектДрайвера.Подключить(ПараметрыПодключения.ИДУстройства);
Исключение
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "Подключить", ОписаниеОшибки());
Возврат Результат;
КонецПопытки;
КонецЕсли;
Если НЕ Ответ Тогда
Результат = Ложь;
ОписаниеОшибки = "";
ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
СформироватьОшибку(ВыходныеПараметры, ОписаниеОшибки);
Иначе
Если ТипОборудованияИспользуемый = "ПринтерЧеков"
Или ТипОборудованияИспользуемый = "ФискальныйРегистратор"
Или ТипОборудованияИспользуемый = "ККТ" Тогда
ВремВыходныеПараметры = Новый Массив();
Если ПолучитьШиринуСтроки(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВремВыходныеПараметры) Тогда
ВремШиринаСтроки = ВремВыходныеПараметры[0];
ШиринаСтроки = ?(ВремШиринаСтроки <> Неопределено И ВремШиринаСтроки > 0, ВремШиринаСтроки, 32);
КонецЕсли;
ПараметрыПодключения.Вставить("ШиринаСтроки", ШиринаСтроки);
ИначеЕсли ТипОборудованияИспользуемый = "ЭквайринговыйТерминал" Тогда
ПараметрыПодключения.Вставить("КодОригинальнойТранзакции", Неопределено);
ПараметрыПодключения.Вставить("ТипТранзакции", "");
ИначеЕсли ТипОборудованияИспользуемый = "СканерШтрихкода" Тогда
ВыходныеПараметры.Добавить(Строка(ПараметрыПодключения.ИДУстройства));
ВыходныеПараметры.Добавить(Новый Массив());
ВыходныеПараметры[1].Добавить("Штрихкод");
ВыходныеПараметры[1].Добавить("Barcode");
ИначеЕсли ТипОборудованияИспользуемый = "СчитывательМагнитныхКарт" Тогда
ВыходныеПараметры.Добавить(Строка(ПараметрыПодключения.ИДУстройства));
ВыходныеПараметры.Добавить(Новый Массив());
ВыходныеПараметры[1].Добавить("ДанныеКарты");
ВыходныеПараметры[1].Добавить("TracksData");
ИначеЕсли ТипОборудованияИспользуемый = "СчитывательRFID" Тогда
ВыходныеПараметры.Добавить(Строка(ПараметрыПодключения.ИДУстройства));
ВыходныеПараметры.Добавить(Новый Массив());
ВыходныеПараметры[1].Добавить("RFID");
ВыходныеПараметры[1].Добавить("RFID");
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ТестУстройства(ОбъектДрайвера, Параметры, ПараметрыПодключения, ВыходныеПараметры)
Результат = Истина;
РезультатТеста = "";
АктивированДемоРежим = "";
РевизияИнтерфейса = РевизияИнтерфейса(ОбъектДрайвера, ПараметрыПодключения);
Если РевизияИнтерфейса > 4002 Тогда
ПараметрыПодключения.ПараметрыXML = ПолучитьПараметрыXML(Параметры, ПараметрыПодключения.ТипОборудования);
Попытка
РезультатВызова = ОбъектДрайвера.ТестированиеОборудования(ПараметрыПодключения.ТипОборудования,
ПараметрыПодключения.ПараметрыXML, РезультатТеста, АктивированДемоРежим); // Структура
Исключение
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "ТестУстройства", ОписаниеОшибки());
КонецПопытки;
Если ТипЗнч(РезультатВызова.Значение) = Тип("Булево") Тогда
Результат = РезультатВызова.Значение;
РезультатТеста = РезультатВызова.Параметры[2];
АктивированДемоРежим = РезультатВызова.Параметры[3];
Если РезультатВызова.Значение Тогда
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(0);
Иначе
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(999);
КонецЕсли;
Если РезультатВызова.Значение <> Истина Тогда
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "ТестУстройства", ОписаниеОшибки());
КонецЕсли;
КонецЕсли;
Иначе
Для Каждого Параметр Из Параметры Цикл
Если Лев(Параметр.Ключ, 2) = "P_" Тогда
ЗначениеПараметра = Параметр.Значение;
ИмяПараметра = Сред(Параметр.Ключ, 3);
Ответ = ОбъектДрайвера.УстановитьПараметр(ИмяПараметра, ЗначениеПараметра)
КонецЕсли;
КонецЦикла;
Попытка
Ответ = ОбъектДрайвера.ТестУстройства(РезультатТеста, АктивированДемоРежим);
Если Ответ Тогда
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(0);
Иначе
Результат = Ложь;
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(999);
КонецЕсли;
ВыходныеПараметры.Добавить(РезультатТеста);
ВыходныеПараметры.Добавить(АктивированДемоРежим);
Исключение
Результат = Ложь;
СформироватьОшибкуДрайвера(ВыходныеПараметры, "ТестУстройства", ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Возврат Результат;
КонецФункции
3. Для поддержки новой функции ПИоТ в общем модуле МенеджерОборудованияВызовСервера изменить процедуры/функции
Функция СформироватьТаблицуПараметровДляОперацииФН(СтруктураПараметров, РевизияИнтерфейса = 0) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
Если РевизияИнтерфейса >= 3000 Тогда // Версия стандарта 3.0 (ОФД 1.1)
ЗаписьXML.ЗаписатьНачалоЭлемента("ParametersFiscal");
ЗаписьXML.ЗаписатьАтрибут("CashierName" , XMLСтрока(?(СтруктураПараметров.Свойство("Кассир") , XMLСтрока(СтруктураПараметров.Кассир), НСтр("ru='Администратор'"))));
ЗаписьXML.ЗаписатьАтрибут("CashierINN" , XMLСтрока(?(СтруктураПараметров.Свойство("КассирИНН"), XMLСтрока(СтруктураПараметров.КассирИНН), "")));
// Код причины перерегистрации.
ЗаписьXML.ЗаписатьАтрибут("RegistrationReasonCode", XMLСтрока(СтруктураПараметров.КодПричиныПеререгистрации));
// Коды причин изменения сведений о ККТ.
Если Не ПустаяСтрока(СтруктураПараметров.КодыПричинИзмененияСведений) Тогда
ЗаписьXML.ЗаписатьАтрибут("RegistrationLabelCodes", XMLСтрока(СтруктураПараметров.КодыПричинИзмененияСведений));
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("KKTNumber" , XMLСтрока(СтруктураПараметров.РегистрационныйНомерККТ));
ЗаписьXML.ЗаписатьАтрибут("CompanyName" , XMLСтрока(СтруктураПараметров.ОрганизацияНазвание));
ЗаписьXML.ЗаписатьАтрибут("INN" , XMLСтрока(СтруктураПараметров.ОрганизацияИНН));
ЗаписьXML.ЗаписатьАтрибут("SaleAddress" , XMLСтрока(СтруктураПараметров.АдресПроведенияРасчетов));
ЗаписьXML.ЗаписатьАтрибут("SaleLocation" , XMLСтрока(СтруктураПараметров.МестоПроведенияРасчетов));
ЗаписьXML.ЗаписатьАтрибут("TaxationSystems" , XMLСтрока(СтруктураПараметров.КодыСистемыНалогообложения));
ЗаписьXML.ЗаписатьАтрибут("IsOffline" , XMLСтрока(СтруктураПараметров.ПризнакАвтономногоРежима));
ЗаписьXML.ЗаписатьАтрибут("IsEncrypted" , XMLСтрока(СтруктураПараметров.ПризнакШифрованиеДанных));
ЗаписьXML.ЗаписатьАтрибут("IsService" , XMLСтрока(СтруктураПараметров.ПризнакРасчетовЗаУслуги));
ЗаписьXML.ЗаписатьАтрибут("IsExcisable" , XMLСтрока(СтруктураПараметров.ПродажаПодакцизногоТовара));
ЗаписьXML.ЗаписатьАтрибут("IsGambling" , XMLСтрока(СтруктураПараметров.ПроведенияАзартныхИгр));
ЗаписьXML.ЗаписатьАтрибут("IsLottery" , XMLСтрока(СтруктураПараметров.ПроведенияЛотерей));
ЗаписьXML.ЗаписатьАтрибут("AgentTypes" , XMLСтрока(СтруктураПараметров.ПризнакиАгента));
ЗаписьXML.ЗаписатьАтрибут("BSOSing" , XMLСтрока(СтруктураПараметров.ПризнакФормированияБСО));
ЗаписьXML.ЗаписатьАтрибут("IsOnlineOnly" , XMLСтрока(СтруктураПараметров.ПризнакРасчетовТолькоВИнтернет));
Если РевизияИнтерфейса >= 3004 Тогда // Версия стандарта 3.4 (ОФД 1.2)
ЗаписьXML.ЗаписатьАтрибут("IsOnline" , XMLСтрока(СтруктураПараметров.ПроведенияРасчетаВИнтернет));
ЗаписьXML.ЗаписатьАтрибут("IsMarking" , XMLСтрока(СтруктураПараметров.ПродажаМаркированныхТоваров));
ЗаписьXML.ЗаписатьАтрибут("IsPawnshop" , XMLСтрока(СтруктураПараметров.ПризнакПримененияЛомбардами));
ЗаписьXML.ЗаписатьАтрибут("IsAssurance" , XMLСтрока(СтруктураПараметров.ПризнакДеятельностиПоСтрахованию));
КонецЕсли;
Если РевизияИнтерфейса >= 4000 Тогда // Версия стандарта 4.0 (ОФД 1.2)
ЗаписьXML.ЗаписатьАтрибут("IsVendingMachine" , XMLСтрока(СтруктураПараметров.ПризнакАвтоматическогоТорговогоАвтомата));
ЗаписьXML.ЗаписатьАтрибут("IsCateringServices", XMLСтрока(СтруктураПараметров.ПризнакОказанииУслугОбщественногоПитания));
ЗаписьXML.ЗаписатьАтрибут("IsWholesaleTrade" , XMLСтрока(СтруктураПараметров.ПризнакОптовойТорговлиСОрганизациями));
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("IsAutomaticPrinter", XMLСтрока(СтруктураПараметров.УстановкаПринтераВАвтомате));
ЗаписьXML.ЗаписатьАтрибут("IsAutomatic" , XMLСтрока(СтруктураПараметров.ПризнакАвтоматическогоРежима));
ЗаписьXML.ЗаписатьАтрибут("AutomaticNumber" , XMLСтрока(СтруктураПараметров.НомерАвтоматаДляАвтоматическогоРежима));
ЗаписьXML.ЗаписатьАтрибут("OFDCompany" , XMLСтрока(СтруктураПараметров.ОрганизацияОФДНазвание));
ЗаписьXML.ЗаписатьАтрибут("OFDCompanyINN" , XMLСтрока(СтруктураПараметров.ОрганизацияОФДИНН));
Если Не ПустаяСтрока(СтруктураПараметров.ОтправительEmail) Тогда
ЗаписьXML.ЗаписатьАтрибут("SenderEmail", XMLСтрока(СтруктураПараметров.ОтправительEmail));
КонецЕсли;
Если Не ПустаяСтрока(СтруктураПараметров.АдресСайтаФНС) Тогда
ЗаписьXML.ЗаписатьАтрибут("FNSURL", XMLСтрока(СтруктураПараметров.АдресСайтаФНС));
КонецЕсли;
Если РевизияИнтерфейса >= 4007 Тогда // Версия стандарта 4.0 (ОФД 1.2)
ЗаписьXML.ЗаписатьАтрибут("SupportFNPiot" , XMLСтрока(СтруктураПараметров.ПоддержкаТСПИоТ));
КонецЕсли;
Иначе
ЗаписьXML.ЗаписатьНачалоЭлемента("Parameters");
ЗаписьXML.ЗаписатьАтрибут("CashierName" , XMLСтрока(?(СтруктураПараметров.Свойство("Кассир") , XMLСтрока(СтруктураПараметров.Кассир), НСтр("ru='Администратор'"))));
ЗаписьXML.ЗаписатьАтрибут("CashierVATIN", XMLСтрока(?(СтруктураПараметров.Свойство("КассирИНН"), XMLСтрока(СтруктураПараметров.КассирИНН), "")));
// ФФД 1.0.0
ЗаписьXML.ЗаписатьАтрибут("KKTNumber" , XMLСтрока(СтруктураПараметров.РегистрационныйНомерККТ));
ЗаписьXML.ЗаписатьАтрибут("OFDVATIN" , XMLСтрока(СтруктураПараметров.ОрганизацияОФДИНН));
ЗаписьXML.ЗаписатьАтрибут("OFDOrganizationName", XMLСтрока(СтруктураПараметров.ОрганизацияОФДНазвание));
ЗаписьXML.ЗаписатьАтрибут("OrganizationName" , XMLСтрока(СтруктураПараметров.ОрганизацияНазвание));
ЗаписьXML.ЗаписатьАтрибут("VATIN" , XMLСтрока(СтруктураПараметров.ОрганизацияИНН));
ЗаписьXML.ЗаписатьАтрибут("AddressSettle" , XMLСтрока(СтруктураПараметров.АдресПроведенияРасчетов));
ЗаписьXML.ЗаписатьАтрибут("TaxVariant" , XMLСтрока(СтруктураПараметров.КодыСистемыНалогообложения));
ЗаписьXML.ЗаписатьАтрибут("OfflineMode" , XMLСтрока(СтруктураПараметров.ПризнакАвтономногоРежима));
ЗаписьXML.ЗаписатьАтрибут("DataEncryption" , XMLСтрока(СтруктураПараметров.ПризнакШифрованиеДанных));
ЗаписьXML.ЗаписатьАтрибут("ServiceSign" , XMLСтрока(СтруктураПараметров.ПризнакРасчетовЗаУслуги));
ЗаписьXML.ЗаписатьАтрибут("BSOSing" , XMLСтрока(СтруктураПараметров.ПризнакФормированияБСО));
ЗаписьXML.ЗаписатьАтрибут("CalcOnlineSign" , XMLСтрока(СтруктураПараметров.ПризнакРасчетовТолькоВИнтернет));
ЗаписьXML.ЗаписатьАтрибут("AutomaticMode" , XMLСтрока(СтруктураПараметров.ПризнакАвтоматическогоРежима));
ЗаписьXML.ЗаписатьАтрибут("AutomaticNumber" , XMLСтрока(СтруктураПараметров.НомерАвтоматаДляАвтоматическогоРежима));
// ФФД 1.05 & 1.1
ЗаписьXML.ЗаписатьАтрибут("PlaceSettle" , XMLСтрока(СтруктураПараметров.МестоПроведенияРасчетов));
ЗаписьXML.ЗаписатьАтрибут("SaleExcisableGoods" , XMLСтрока(СтруктураПараметров.ПродажаПодакцизногоТовара));
ЗаписьXML.ЗаписатьАтрибут("SignOfGambling" , XMLСтрока(СтруктураПараметров.ПроведенияАзартныхИгр));
ЗаписьXML.ЗаписатьАтрибут("SignOfLottery" , XMLСтрока(СтруктураПараметров.ПроведенияЛотерей));
ЗаписьXML.ЗаписатьАтрибут("SignOfAgent" , XMLСтрока(СтруктураПараметров.ПризнакиАгента));
ЗаписьXML.ЗаписатьАтрибут("PrinterAutomatic" , XMLСтрока(СтруктураПараметров.УстановкаПринтераВАвтомате));
// Изменение параметров регистрации.
ЗаписьXML.ЗаписатьАтрибут("ReasonCode" , XMLСтрока(СтруктураПараметров.КодПричиныПеререгистрации));
Если Не ПустаяСтрока(СтруктураПараметров.КодыПричинИзмененияСведений) Тогда
ЗаписьXML.ЗаписатьАтрибут("InfoChangesReasonsCodes", XMLСтрока(СтруктураПараметров.КодыПричинИзмененияСведений));
КонецЕсли;
Если Не ПустаяСтрока(СтруктураПараметров.ОтправительEmail) Тогда
ЗаписьXML.ЗаписатьАтрибут("SenderEmail", XMLСтрока(СтруктураПараметров.ОтправительEmail));
КонецЕсли;
Если Не ПустаяСтрока(СтруктураПараметров.АдресСайтаФНС) Тогда
ЗаписьXML.ЗаписатьАтрибут("FNSWebSite", XMLСтрока(СтруктураПараметров.АдресСайтаФНС));
КонецЕсли;
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();
Возврат ЗаписьXML.Закрыть();
КонецФункции
Функция ПараметрыИзXMLПакетаККТ(Данные, ИдентификаторУстройства = Неопределено, РевизияИнтерфейса = 0, ИдентификаторТО = "") Экспорт
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Данные);
ЧтениеXML.ПерейтиКСодержимому();
Параметры = МенеджерОборудованияКлиентСервер.ПараметрыРегистрацииККТ();
Параметры.Вставить("ТипОборудования", Перечисления.ТипыПодключаемогоОборудования.ККТ);
Параметры.Вставить("РевизияИнтерфейса", РевизияИнтерфейса);
Если РевизияИнтерфейса >= 3000 Тогда // Версия стандарта 3.0 (ОФД 1.1)
Если (ЧтениеXML.Имя = "Parameters" Или ЧтениеXML.Имя = "TableParametersKKT") И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Параметры.ВерсияФФДФН = "1.1";
ВерсияФФДФН = ЧтениеXML.ЗначениеАтрибута("FFDVersionFN");
Если ВерсияФФДФН = "1.0" Тогда
Параметры.ВерсияФФДФН = "1.0"
ИначеЕсли ВерсияФФДФН = "1.0.5" Или ВерсияФФДФН = "1.05" Тогда
Параметры.ВерсияФФДФН = "1.05"
ИначеЕсли ВерсияФФДФН = "1.2" Тогда
Параметры.ВерсияФФДФН = "1.2"
КонецЕсли;
Параметры.ВерсияФФДККТ = "1.1";
ВерсияФФДККТ = ЧтениеXML.ЗначениеАтрибута("FFDVersionKKT");
Если ВерсияФФДККТ = "1.0" Тогда
Параметры.ВерсияФФДККТ = "1.0"
ИначеЕсли ВерсияФФДККТ = "1.0.5" Или ВерсияФФДККТ = "1.05" Тогда
Параметры.ВерсияФФДККТ = "1.05"
ИначеЕсли ВерсияФФДККТ = "1.2" Тогда
Параметры.ВерсияФФДККТ = "1.2"
КонецЕсли;
// ФФД 1.0
Параметры.РегистрационныйНомерККТ = СокрЛП(ЧтениеXML.ЗначениеАтрибута("KKTNumber"));
Параметры.ЗаводскойНомерККТ = СокрЛП(ЧтениеXML.ЗначениеАтрибута("KKTSerialNumber"));
Параметры.ЗаводскойНомерФН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("FNSerialNumber"));
Параметры.ОрганизацияНазвание = ЧтениеXML.ЗначениеАтрибута("CompanyName");
Параметры.ОрганизацияИНН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("INN"));
Параметры.АдресПроведенияРасчетов = ЧтениеXML.ЗначениеАтрибута("SaleAddress");
Параметры.МестоПроведенияРасчетов = ЧтениеXML.ЗначениеАтрибута("SaleLocation");
Параметры.КодыСистемыНалогообложения = ЧтениеXML.ЗначениеАтрибута("TaxationSystems");
Параметры.ПризнакАвтономногоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("IsOffline")) = "TRUE";
Параметры.ПризнакШифрованиеДанных = ВРег(ЧтениеXML.ЗначениеАтрибута("IsEncrypted")) = "TRUE";
Параметры.ПризнакРасчетовЗаУслуги = ВРег(ЧтениеXML.ЗначениеАтрибута("IsService")) = "TRUE";
Параметры.ПродажаПодакцизногоТовара = ВРег(ЧтениеXML.ЗначениеАтрибута("IsExcisable")) = "TRUE";
Параметры.ПроведенияАзартныхИгр = ВРег(ЧтениеXML.ЗначениеАтрибута("IsGambling")) = "TRUE";
Параметры.ПроведенияЛотерей = ВРег(ЧтениеXML.ЗначениеАтрибута("IsLottery")) = "TRUE";
Параметры.ПризнакиАгента = ЧтениеXML.ЗначениеАтрибута("AgentTypes");
Параметры.ПризнакФормированияБСО = ВРег(ЧтениеXML.ЗначениеАтрибута("BSOSing")) = "TRUE";
Параметры.ПризнакРасчетовТолькоВИнтернет = ВРег(ЧтениеXML.ЗначениеАтрибута("IsOnlineOnly")) = "TRUE";
Параметры.УстановкаПринтераВАвтомате = ВРег(ЧтениеXML.ЗначениеАтрибута("IsAutomaticPrinter")) = "TRUE";
Параметры.ПризнакАвтоматическогоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("IsAutomatic")) = "TRUE";
Параметры.НомерАвтоматаДляАвтоматическогоРежима = ЧтениеXML.ЗначениеАтрибута("AutomaticNumber");
Параметры.ОрганизацияОФДНазвание = ЧтениеXML.ЗначениеАтрибута("OFDCompany");
Параметры.ОрганизацияОФДИНН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("OFDCompanyINN"));
Параметры.ПризнакФискализации = ВРег(ЧтениеXML.ЗначениеАтрибута("Fiscal")) = "TRUE";
Параметры.НомерДокументаФискализации = ЧтениеXML.ЗначениеАтрибута("DocumentNumber");
Параметры.ДатаВремяФискализации = ЧтениеXML.ЗначениеАтрибута("DateTime");
Параметры.ОтправительEmail = ЧтениеXML.ЗначениеАтрибута("SenderEmail");
Параметры.АдресСайтаФНС = ЧтениеXML.ЗначениеАтрибута("FNSURL");
Если РевизияИнтерфейса >= 3004 Тогда // Версия стандарта 3.4 (ОФД 1.2)
Параметры.ПроведенияРасчетаВИнтернет = ВРег(ЧтениеXML.ЗначениеАтрибута("IsOnline")) = "TRUE";
Параметры.ПродажаМаркированныхТоваров = ВРег(ЧтениеXML.ЗначениеАтрибута("IsMarking")) = "TRUE";
Параметры.ПризнакПримененияЛомбардами = ВРег(ЧтениеXML.ЗначениеАтрибута("IsPawnshop")) = "TRUE";
Параметры.ПризнакДеятельностиПоСтрахованию = ВРег(ЧтениеXML.ЗначениеАтрибута("IsAssurance")) = "TRUE";
КонецЕсли;
Если РевизияИнтерфейса >= 4000 Тогда // Версия стандарта 4.0 (ОФД 1.2)
Параметры.ПризнакАвтоматическогоТорговогоАвтомата = ВРег(ЧтениеXML.ЗначениеАтрибута("IsVendingMachine")) = "TRUE";
Параметры.ПризнакОказанииУслугОбщественногоПитания = ВРег(ЧтениеXML.ЗначениеАтрибута("IsCateringServices")) = "TRUE";
ПризнакОптовойТорговлиСОрганизациями = ЧтениеXML.ЗначениеАтрибута("IsWholesaleTrade");
Если НЕ ПустаяСтрока(ПризнакОптовойТорговлиСОрганизациями) Тогда
Параметры.ПризнакОптовойТорговлиСОрганизациями = ВРег(ПризнакОптовойТорговлиСОрганизациями) = "TRUE";
КонецЕсли;
КонецЕсли;
Если РевизияИнтерфейса >= 4007 Тогда // Версия стандарта 4.7
Параметры.ПоддержкаТСПИоТ = ВРег(ЧтениеXML.ЗначениеАтрибута("SupportFNPiot")) = "TRUE";
КонецЕсли;
КонецЕсли;
Иначе
Если ЧтениеXML.Имя = "Parameters" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Параметры.ВерсияФФДФН = ЧтениеXML.ЗначениеАтрибута("FFDVersionFN");
Если ПустаяСтрока(Параметры.ВерсияФФДФН) Тогда
Параметры.ВерсияФФДФН = "1.0";
КонецЕсли;
Параметры.ВерсияФФДККТ = ЧтениеXML.ЗначениеАтрибута("FFDVersionKKT");
Если ПустаяСтрока(Параметры.ВерсияФФДККТ) Тогда
Параметры.ВерсияФФДККТ = "1.0";
КонецЕсли;
// ФФД 1.0
Параметры.РегистрационныйНомерККТ = СокрЛП(ЧтениеXML.ЗначениеАтрибута("KKTNumber"));
Параметры.ОрганизацияНазвание = ЧтениеXML.ЗначениеАтрибута("OrganizationName");
Параметры.ОрганизацияИНН = СокрЛП(ЧтениеXML.ЗначениеАтрибута("VATIN"));
Параметры.АдресПроведенияРасчетов = ЧтениеXML.ЗначениеАтрибута("AddressSettle");
Параметры.МестоПроведенияРасчетов = ЧтениеXML.ЗначениеАтрибута("PlaceSettle");
Параметры.КодыСистемыНалогообложения = ЧтениеXML.ЗначениеАтрибута("TaxVariant");
Если ПустаяСтрока(Параметры.КодыСистемыНалогообложения) Тогда
Параметры.КодыСистемыНалогообложения = ЧтениеXML.ЗначениеАтрибута("TaxVarinat");
КонецЕсли;
Параметры.ПризнакАвтономногоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("OfflineMode")) = "TRUE";
Параметры.ПризнакАвтоматическогоРежима = ВРег(ЧтениеXML.ЗначениеАтрибута("AutomaticMode")) = "TRUE";
Параметры.НомерАвтоматаДляАвтоматическогоРежима = ЧтениеXML.ЗначениеАтрибута("AutomaticNumber");
Параметры.ПризнакФормированияБСО = ВРег(Чтение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.ЗначениеАтрибута("ServiceSign")) = "TRUE";
Параметры.ПродажаПодакцизногоТовара = ВРег(ЧтениеXML.ЗначениеАтрибута("SaleExcisableGoods")) = "TRUE";
Параметры.ПроведенияАзартныхИгр = ВРег(ЧтениеXML.ЗначениеАтрибута("SignOfGambling")) = "TRUE";
Параметры.ПроведенияЛотерей = ВРег(ЧтениеXML.ЗначениеАтрибута("SignOfLottery")) = "TRUE";
Параметры.ПризнакиАгента = ЧтениеXML.ЗначениеАтрибута("SignOfAgent");
Параметры.УстановкаПринтераВАвтомате = ВРег(ЧтениеXML.ЗначениеАтрибута("PrinterAutomatic")) = "TRUE";
Параметры.ОтправительEmail = ЧтениеXML.ЗначениеАтрибута("SenderEmail");
Параметры.АдресСайтаФНС = ЧтениеXML.ЗначениеАтрибута("FNSWebSite");
КонецЕсли;
КонецЕсли;
СистемыНалогообложения = Новый Массив();
Если Не ПустаяСтрока(Параметры.КодыСистемыНалогообложения) Тогда
СистемыНалогообложенияВрем = СтрРазделить(Параметры.КодыСистемыНалогообложения, ",");
Для Каждого ВремСНО Из СистемыНалогообложенияВрем Цикл
СНО = МенеджерОборудованияКлиентСервер.СистемаНалогообложенияККТПоКоду(Число(ВремСНО));
СистемыНалогообложения.Добавить(СНО);
КонецЦикла;
Параметры.Вставить("СистемыНалогообложения", СистемыНалогообложения);
КонецЕсли;
Если НЕ ПустаяСтрока(ИдентификаторТО) Тогда
СохранитьПараметрыРегистрацииУстройства(ИдентификаторТО, Параметры);
КонецЕсли;
Возврат Параметры;
КонецФункции
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 10.3, релизы 10.3.88.3, 10.3.88.2, 10.3.88.1, 10.3.87.3
Вступайте в нашу телеграмм-группу Инфостарт
