TSDZakazScladVasilek/CommonModules/ОборудованиеЧекопечатающиеУстройстваЛокализация/Ext/Module.bsl

352 lines
28 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Область ПрограммныйИнтерфейс
#Область ПараметрыРегистрации
// Сохраняет параметры регистрации устройства
//
// Параметры:
// Результат - Булево
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование - Идентификатор устройства -
// ПараметрыРегистрации - Структура -
//
Процедура СохранитьПараметрыРегистрацииУстройства(Результат, Идентификатор, ПараметрыРегистрации) Экспорт
// ++ Локализация
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
| ПодключаемоеОборудование.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|ГДЕ
| ПодключаемоеОборудование.Ссылка = &Идентификатор");
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Результат = Ложь;
Возврат;
КонецЕсли;
НачатьТранзакцию();
Попытка
БлокировкаДанных = Новый БлокировкаДанных();
ЭлементБлокировки = БлокировкаДанных.Добавить("Справочник.ПодключаемоеОборудование");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Ссылка", Идентификатор);
БлокировкаДанных.Заблокировать();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ОбъектСсылка = Выборка.Ссылка; // СправочникСсылка.ПодключаемоеОборудование
ОбъектСправочника = ОбъектСсылка.ПолучитьОбъект();
ОбъектСправочника.ПараметрыРегистрации.Очистить();
Для Каждого ПараметрРегистрации Из ПараметрыРегистрации Цикл
НоваяСтрока = ОбъектСправочника.ПараметрыРегистрации.Добавить();
НоваяСтрока.НаименованиеПараметра = ПараметрРегистрации.Ключ;
Если ТипЗнч(ПараметрРегистрации.Значение) = Тип("Булево") Тогда
НоваяСтрока.ЗначениеПараметра = XMLСтрока(ПараметрРегистрации.Значение);
Иначе
НоваяСтрока.ЗначениеПараметра = ПараметрРегистрации.Значение;
КонецЕсли;
КонецЦикла;
ОбъектСправочника.Записать();
Результат = Истина;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Результат = Ложь;
КонецПопытки;
УстановитьПривилегированныйРежим(Ложь);
// -- Локализация
КонецПроцедуры
// Возвращает по идентификатору устройства параметры регистрации.
//
// Параметры:
// ПараметрыРегистрации - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыРегистрацииККТ
// Идентификатор - СправочникСсылка.ПодключаемоеОборудование
//
Процедура ПараметрыРегистрацииУстройства(ПараметрыРегистрации, Идентификатор) Экспорт
// ++ Локализация
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПодключаемоеОборудование.Ссылка КАК Ссылка,
| ПодключаемоеОборудованиеПараметрыРегистрации.НаименованиеПараметра КАК НаименованиеПараметра,
| ПодключаемоеОборудованиеПараметрыРегистрации.ЗначениеПараметра КАК ЗначениеПараметра
|ИЗ
| Справочник.ПодключаемоеОборудование.ПараметрыРегистрации КАК ПодключаемоеОборудованиеПараметрыРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
| ПО ПодключаемоеОборудованиеПараметрыРегистрации.Ссылка = ПодключаемоеОборудование.Ссылка
|ГДЕ
| ПодключаемоеОборудование.Ссылка = &Идентификатор";
Запрос.УстановитьПараметр("Идентификатор", Идентификатор);
РезультатЗапроса = Запрос.Выполнить();
ЕстьДанные = Ложь;
ДанныеХранения = Новый Структура();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
ДанныеХранения.Вставить(ВыборкаДетальныеЗаписи.НаименованиеПараметра, ВыборкаДетальныеЗаписи.ЗначениеПараметра);
ЕстьДанные = Истина;
КонецЦикла;
ПараметрыРегистрации = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыРегистрацииККТ();
ПараметрыРегистрации.Вставить("ЕстьДанные", ЕстьДанные);
Если ЕстьДанные Тогда
ПараметрыРегистрации.РегистрационныйНомерККТ = ДанныеХранения.РегистрационныйНомерККТ;
ПараметрыРегистрации.ОрганизацияНазвание = ДанныеХранения.ОрганизацияНазвание;
ПараметрыРегистрации.ОрганизацияИНН = ДанныеХранения.ОрганизацияИНН;
Если ДанныеХранения.Свойство("АдресПроведенияРасчетов") Тогда
ПараметрыРегистрации.АдресПроведенияРасчетов = ДанныеХранения.АдресПроведенияРасчетов;
КонецЕсли;
Если ДанныеХранения.Свойство("МестоПроведенияРасчетов") Тогда
ПараметрыРегистрации.МестоПроведенияРасчетов = ДанныеХранения.МестоПроведенияРасчетов;
КонецЕсли;
ПараметрыРегистрации.КодыСистемыНалогообложения = ДанныеХранения.КодыСистемыНалогообложения;
Если ДанныеХранения.Свойство("ПризнакАвтономногоРежима") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакАвтономногоРежима) Тогда
ПараметрыРегистрации.ПризнакАвтономногоРежима = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакАвтономногоРежима);
КонецЕсли;
Если ДанныеХранения.Свойство("ПризнакШифрованиеДанных") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакШифрованиеДанных) Тогда
ПараметрыРегистрации.ПризнакШифрованиеДанных = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакШифрованиеДанных);
КонецЕсли;
Если ДанныеХранения.Свойство("ПризнакРасчетовЗаУслуги") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакРасчетовЗаУслуги) Тогда
ПараметрыРегистрации.ПризнакАвтономногоРежима = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакАвтономногоРежима);
КонецЕсли;
Если ДанныеХранения.Свойство("ПризнакФормированияБСО") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакФормированияБСО) Тогда
ПараметрыРегистрации.ПризнакФормированияБСО = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакФормированияБСО);
КонецЕсли;
Если ДанныеХранения.Свойство("ПризнакРасчетовТолькоВИнтернет") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакРасчетовТолькоВИнтернет) Тогда
ПараметрыРегистрации.ПризнакРасчетовТолькоВИнтернет = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакРасчетовТолькоВИнтернет);
КонецЕсли;
Если ДанныеХранения.Свойство("ПродажаПодакцизногоТовара") И НЕ ПустаяСтрока(ДанныеХранения.ПродажаПодакцизногоТовара) Тогда
ПараметрыРегистрации.ПродажаПодакцизногоТовара = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПродажаПодакцизногоТовара);
КонецЕсли;
Если ДанныеХранения.Свойство("ПроведенияАзартныхИгр") И НЕ ПустаяСтрока(ДанныеХранения.ПроведенияАзартныхИгр) Тогда
ПараметрыРегистрации.ПроведенияАзартныхИгр = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПроведенияАзартныхИгр);
КонецЕсли;
Если ДанныеХранения.Свойство("ПроведенияЛотерей") И НЕ ПустаяСтрока(ДанныеХранения.ПроведенияЛотерей) Тогда
ПараметрыРегистрации.ПроведенияЛотерей = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПроведенияЛотерей);
КонецЕсли;
Если ДанныеХранения.Свойство("УстановкаПринтераВАвтомате") И НЕ ПустаяСтрока(ДанныеХранения.УстановкаПринтераВАвтомате) Тогда
ПараметрыРегистрации.УстановкаПринтераВАвтомате = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.УстановкаПринтераВАвтомате);
КонецЕсли;
Если ДанныеХранения.Свойство("ПризнакиАгента") Тогда
ПараметрыРегистрации.ПризнакиАгента = ДанныеХранения.ПризнакиАгента;
КонецЕсли;
ПараметрыРегистрации.НомерАвтоматаДляАвтоматическогоРежима = ДанныеХранения.НомерАвтоматаДляАвтоматическогоРежима;
ПараметрыРегистрации.ОрганизацияОФДИНН = ДанныеХранения.ОрганизацияОФДИНН;
ПараметрыРегистрации.ОрганизацияОФДНазвание = ДанныеХранения.ОрганизацияОФДНазвание;
ПараметрыРегистрации.ЗаводскойНомерККТ = ДанныеХранения.ЗаводскойНомерККТ;
ПараметрыРегистрации.ЗаводскойНомерФН = ДанныеХранения.ЗаводскойНомерФН;
ПараметрыРегистрации.ВерсияФФДККТ = ДанныеХранения.ВерсияФФДККТ;
ПараметрыРегистрации.ВерсияФФДФН = ДанныеХранения.ВерсияФФДФН;
Если ДанныеХранения.Свойство("ПризнакФискализации") И НЕ ПустаяСтрока(ДанныеХранения.ПризнакФискализации) Тогда
ПараметрыРегистрации.ПризнакФискализации = ОбщегоНазначенияБПО.ПреобразоватьВБулево(ДанныеХранения.ПризнакФискализации);
КонецЕсли;
КонецЕсли;
// -- Локализация
КонецПроцедуры
// Обновляет параметры регистрации ККТ
//
// Параметры:
// ПараметрыРегистрацииТаблица - ТаблицаЗначений -
// ПараметрыРегистрации - ТаблицаЗначений -
//
Процедура ОбновитьПараметрыРегистрацииККТ(ПараметрыРегистрацииТаблица, ПараметрыРегистрации) Экспорт
// ++ Локализация
Для Каждого ПараметрРегистрации Из ПараметрыРегистрации Цикл
Параметр = ПараметрыРегистрацииТаблица.Добавить();
НаименованиеПараметра = ПараметрРегистрации.НаименованиеПараметра;
ЗначениеПараметра = ПараметрРегистрации.ЗначениеПараметра;
Если НаименованиеПараметра = "РегистрационныйНомерККТ" Тогда
НаименованиеПараметра = НСтр("ru='Регистрационный номер ККТ'")
ИначеЕсли НаименованиеПараметра = "ОрганизацияНазвание" Тогда
НаименованиеПараметра = НСтр("ru='Название организации'")
ИначеЕсли НаименованиеПараметра = "ОрганизацияИНН" Тогда
НаименованиеПараметра = НСтр("ru='ИНН организации'")
ИначеЕсли НаименованиеПараметра = "АдресПроведенияРасчетов" Тогда
НаименованиеПараметра = НСтр("ru='Адрес проведения расчетов'")
ИначеЕсли НаименованиеПараметра = "КодыСистемыНалогообложения" Тогда
НаименованиеПараметра = НСтр("ru='Системы налогообложения'");
СистемыНалогообложения = СтрРазделить(ЗначениеПараметра, ",");
ЗначениеПараметра = "";
Для Каждого СистемаНалогообложения Из СистемыНалогообложения Цикл
ЗначениеПараметра = ?(Не ПустаяСтрока(ЗначениеПараметра), ЗначениеПараметра + ",", "");
Если Не ПустаяСтрока(СистемаНалогообложения) Тогда
ЗначениеПараметра = ЗначениеПараметра + """"+ ОборудованиеЧекопечатающиеУстройстваКлиентСервер.НаименованиеСистемыНалогообложения(Число(СистемаНалогообложения)) + """";
КонецЕсли;
КонецЦикла;
ИначеЕсли НаименованиеПараметра = "ПризнакАвтономногоРежима" Тогда
НаименованиеПараметра = НСтр("ru='Автономный режим'")
ИначеЕсли НаименованиеПараметра = "ПризнакАвтоматическогоРежима" Тогда
НаименованиеПараметра = НСтр("ru='Автоматический режим'")
ИначеЕсли НаименованиеПараметра = "НомерАвтоматаДляАвтоматическогоРежима" Тогда
НаименованиеПараметра = НСтр("ru='Номер автомата для автоматического режима'")
ИначеЕсли НаименованиеПараметра = "ПризнакШифрованиеДанных" Тогда
НаименованиеПараметра = НСтр("ru='Шифрование данных'")
ИначеЕсли НаименованиеПараметра = "ПризнакРасчетовЗаУслуги" Тогда
НаименованиеПараметра = НСтр("ru='Расчет за услуги'")
ИначеЕсли НаименованиеПараметра = "ПризнакФормированияБСО" Тогда
НаименованиеПараметра = НСтр("ru='Формирования БСО'")
ИначеЕсли НаименованиеПараметра = "ПризнакРасчетовТолькоВИнтернет" Тогда
НаименованиеПараметра = НСтр("ru='Расчет только в интернет'")
ИначеЕсли НаименованиеПараметра = "ОрганизацияОФДИНН" Тогда
НаименованиеПараметра = НСтр("ru='ОФД ИНН'")
ИначеЕсли НаименованиеПараметра = "ОрганизацияОФДНазвание" Тогда
НаименованиеПараметра = НСтр("ru='Наименование ОФД'")
ИначеЕсли НаименованиеПараметра = "ЗаводскойНомерККТ" Тогда
НаименованиеПараметра = НСтр("ru='Заводской номер ККТ'")
ИначеЕсли НаименованиеПараметра = "ПризнакФискализации" Тогда
НаименованиеПараметра = НСтр("ru='Признак фискализации'")
ИначеЕсли НаименованиеПараметра = "ЗаводскойНомерФН" Тогда
НаименованиеПараметра = НСтр("ru='Заводской номер ФН'")
ИначеЕсли НаименованиеПараметра = "НомерДокументаФискализации" Тогда
НаименованиеПараметра = НСтр("ru='Номер документа фискализации'")
ИначеЕсли НаименованиеПараметра = "ДатаВремяФискализации" Тогда
НаименованиеПараметра = НСтр("ru='Дата и время фискализации'")
ИначеЕсли НаименованиеПараметра = "ВерсияФФДККТ" Тогда
НаименованиеПараметра = НСтр("ru='Версия ФФД ККТ'")
ИначеЕсли НаименованиеПараметра = "ВерсияФФДФН" Тогда
НаименованиеПараметра = НСтр("ru='Версия ФФД ФН'")
// ФФД 1.05 и ФФД 1.1
ИначеЕсли НаименованиеПараметра = "МестоПроведенияРасчетов" Тогда
НаименованиеПараметра = НСтр("ru='Место проведения расчетов'")
ИначеЕсли НаименованиеПараметра = "ПродажаПодакцизногоТовара" Тогда
НаименованиеПараметра = НСтр("ru='Продажа подакцизного товара'")
ИначеЕсли НаименованиеПараметра = "ПроведенияАзартныхИгр" Тогда
НаименованиеПараметра = НСтр("ru='Проведения азартных игр'")
ИначеЕсли НаименованиеПараметра = "ПроведенияЛотерей" Тогда
НаименованиеПараметра = НСтр("ru='Проведения лотерей'")
ИначеЕсли НаименованиеПараметра = "ПризнакиАгента" Тогда
НаименованиеПараметра = НСтр("ru='Признаки агента'")
ИначеЕсли НаименованиеПараметра = "УстановкаПринтераВАвтомате" Тогда
НаименованиеПараметра = НСтр("ru='Установка принтера в автомате'")
КонецЕсли;
Параметр.НаименованиеПараметра = НаименованиеПараметра;
Параметр.ЗначениеПараметра = ЗначениеПараметра;
КонецЦикла;
// -- Локализация
КонецПроцедуры
// Возвращает поддерживает ли фискальное устройство проверку кодов маркировки.
//
// Параметры:
// Результат - Булево - Фискальное устройство поддерживает проверку кодов маркировки
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - Идентификатор устройства
//
Процедура ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(Результат, ИдентификаторУстройства) Экспорт
// ++ Локализация
Результат = Ложь;
ПараметрыРегистрации = Новый Структура();
ПараметрыРегистрацииУстройства(ПараметрыРегистрации, ИдентификаторУстройства);
Если ПараметрыРегистрации <> Неопределено Тогда
Результат = ПараметрыРегистрации.Свойство("ВерсияФФДККТ") И ПараметрыРегистрации.ВерсияФФДККТ = "1.2"
И ПараметрыРегистрации.Свойство("ВерсияФФДФН") И ПараметрыРегистрации.ВерсияФФДФН = "1.2";
КонецЕсли;
// -- Локализация
КонецПроцедуры
// Возвращает для фискального устройства версию ФФД.
//
// Параметры:
// Результат - Строка - Версию ФФД поддерживаемая устройством
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - Идентификатор устройства.
//
Процедура ФискальноеУстройствоПоддерживаетВерсиюФФД(Результат, ИдентификаторУстройства) Экспорт
// ++ Локализация
Результат = Неопределено;
ПараметрыРегистрации = Новый Структура();
ПараметрыРегистрацииУстройства(ПараметрыРегистрации, ИдентификаторУстройства);
Если ПараметрыРегистрации <> Неопределено И ПараметрыРегистрации.Свойство("ВерсияФФДККТ") Тогда
Результат = ПараметрыРегистрации.ВерсияФФДККТ;
КонецЕсли;
// -- Локализация
КонецПроцедуры
#КонецОбласти
// Выполняет проверку обязательности заполняет тэгов.
//
// Параметры:
// Результат - Булево
// Параметры - Структура
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование
// ОписаниеОшибки - Строка
//
Процедура ВыполненаПроверкаОбязательностиИПравильностиЗаполненияТэгов(Результат, Параметры, ИдентификаторУстройства, ОписаниеОшибки) Экспорт
// ++ Локализация
Если ОбщегоНазначенияБПО.ИспользуетсяФорматноЛогическийКонтроль() Тогда
МодульФорматноЛогическийКонтроль = ОбщегоНазначенияБПО.ОбщийМодуль("ФорматноЛогическийКонтроль");
Результат = МодульФорматноЛогическийКонтроль.ВыполненаПроверкаОбязательностиИПравильностиЗаполненияТэгов(Параметры, ИдентификаторУстройства, ОписаниеОшибки);
Иначе
Результат = Истина;
КонецЕсли;
// -- Локализация
КонецПроцедуры
// Приводит к формату согласованному с ФНС.
//
// Параметры:
// ОсновныеПараметры - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
// Отказ - Булево
// ОписаниеОшибки - Строка
// ИсправленыОсновныеПараметры - Булево
Процедура ПривестиДанныеКТребуемомуФормату(ОсновныеПараметры, ИсправленыОсновныеПараметры) Экспорт
// ++ Локализация
Если ОбщегоНазначенияБПО.ИспользуетсяФорматноЛогическийКонтроль() Тогда
МодульФорматноЛогическийКонтроль = ОбщегоНазначенияБПО.ОбщийМодуль("ФорматноЛогическийКонтроль");
МодульФорматноЛогическийКонтроль.ПривестиДанныеКТребуемомуФормату(ОсновныеПараметры, ИсправленыОсновныеПараметры);
КонецЕсли;
// -- Локализация
КонецПроцедуры
#КонецОбласти