xmlTSDGalery/CommonModules/ЭлектронныеСертификатыНСПККлиент/Ext/Module.bsl
kykaevv 88098aa86f Initial commit: конфигурация ТСД с обменом УНФ.
Включает перемещение по ячейкам, стикеровку МП, синхронизацию справочников и обработку кодов маркировки.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 12:50:57 +03:00

728 lines
58 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.

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Установить компоненту для интеграции с НСПК
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - Оповещение вызываемое после установки
// описание результата см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации .
//
Асинх Процедура УстановитьКомпонентуИнтеграцииНСПК(ОповещениеПриЗавершении = Неопределено) Экспорт
РезультатПодключения = Ждать УстановитьКомпонентуИнтеграцииНСПКАсинх();
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(РезультатПодключения.Установлено, РезультатПодключения.ОписаниеОшибки);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Установить компоненту для интеграции с НСПК
//
// Возвращаемое значение:
// см. ВнешниеКомпонентыБПОКлиент.РезультатУстановки
//
Асинх Функция УстановитьКомпонентуИнтеграцииНСПКАсинх() Экспорт
ОписаниеКомпоненты = ЭлектронныеСертификатыНСПККлиентСервер.ОписаниеКомпоненты();
ИмяОбъекта = ОписаниеКомпоненты.ИмяОбъекта;
ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета;
РезультатВыполнения = Ждать ВнешниеКомпонентыБПОКлиент.УстановитьКомпонентуИзМакетаАсинх(ПолноеИмяМакета);
Возврат РезультатВыполнения;
КонецФункции
// Начинает подключение компоненты интеграции НСПК
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации = Неопределено) Экспорт
ОписаниеКомпоненты = ЭлектронныеСертификатыНСПККлиентСервер.ОписаниеКомпоненты();
ИмяОбъекта = ОписаниеКомпоненты.ИмяОбъекта;
ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета;
ВнешняяКомпонента = МенеджерОборудованияКлиент.ОбъектДрайвераИзКэша(ИмяОбъекта);
Если ВнешняяКомпонента <> Неопределено Тогда
РезультатПодключения = ВнешниеКомпонентыБПОКлиент.РезультатПодключения();
РезультатПодключения.ПодключаемыйМодуль = ВнешняяКомпонента;
РезультатПодключения.Подключено = Истина;
Иначе
РезультатПодключения = Ждать ВнешниеКомпонентыБПОКлиент.ПодключитьКомпонентуИзМакетаАсинх(ИмяОбъекта, ПолноеИмяМакета);
Если Не РезультатПодключения.Подключено Тогда
РезультатУстановки = Ждать ВнешниеКомпонентыБПОКлиент.УстановитьКомпонентуИзМакетаАсинх(ПолноеИмяМакета);
Если Не РезультатУстановки.Установлено Тогда
ОписаниеОшибки = СтрШаблон(НСтр("ru = 'Ошибка установки компоненты %1: %2'"), ИмяОбъекта, РезультатУстановки.ОписаниеОшибки);
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Ложь, ОписаниеОшибки);
Возврат РезультатВыполнения;
КонецЕсли;
КонецЕсли;
РезультатПодключения = Ждать ВнешниеКомпонентыБПОКлиент.ПодключитьКомпонентуИзМакетаАсинх(ИмяОбъекта, ПолноеИмяМакета);
Если Не РезультатПодключения.Подключено Тогда
ОписаниеОшибки = СтрШаблон(НСтр("ru = 'Ошибка подключения компоненты %1: %2'"), ИмяОбъекта, РезультатПодключения.ОписаниеОшибки);
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Ложь, ОписаниеОшибки);
Возврат РезультатВыполнения;
КонецЕсли;
МенеджерОборудованияКлиент.ДобавитьДрайверВКэш(ИмяОбъекта, РезультатПодключения.ПодключаемыйМодуль);
КонецЕсли;
ВнешняяКомпонента = РезультатПодключения.ПодключаемыйМодуль;
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяБСП() Тогда
РезультатВызова = Ждать ВнешняяКомпонента.ВерсияАсинх();
Версия = РезультатВызова.Значение;
// Вызов БСП
МодульОбщегоНазначенияКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОбщегоНазначенияКлиентСервер");
Если НЕ МодульОбщегоНазначенияКлиентСервер.СравнитьВерсии(Версия, ОписаниеКомпоненты.ВерсияМинимальная) >= 0 Тогда
ОписаниеОшибки = СтрШаблон(НСтр("ru = 'Используется компонента %1 не актуальной версии %2. Необходимо обновить до версии %3 и выше.'"),
ИмяОбъекта, Версия, ОписаниеКомпоненты.ВерсияМинимальная);
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Ложь, ОписаниеОшибки);
Возврат РезультатВыполнения;
КонецЕсли;
КонецЕсли;
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Истина);
РезультатВыполнения.Вставить("ВнешняяКомпонента", ВнешняяКомпонента);
Если ПараметрыОперации <> Неопределено Тогда
ПараметрыJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONПараметры(ПараметрыОперации);
Результат = Ждать ВнешняяКомпонента.УстановитьПараметрыАсинх(ПараметрыJSON);
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает получение версии внешней компоненты НСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПолучениеВерсииВКАсинх() Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх();
Если РезультатПодключения.Результат Тогда
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
РезультатВызова = Ждать ВнешняяКомпонента.ВерсияАсинх();
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Истина);
РезультатВыполнения.Вставить("Версия", РезультатВызова.Значение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает получение версии внешней компоненты НСПК
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - В случае успеха результатом оповещения будет номер версии, в случае ошибки
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
//
Асинх Процедура НачатьПолучениеВерсииВК(ОповещениеПриЗавершении) Экспорт
РезультатВыполнения = Ждать ПолучениеВерсииВКАсинх();
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Подключает компоненту и начинает тестовое подключение к НСПК
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ТестовоеПодключениеАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ТестовоеПодключение";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ТестовоеСообщение = НСтр("ru = 'Тест 1С'");
// АПК: 1036-выкл совместимость с драйвером
РезультатВызова = Ждать ВнешняяКомпонента.эхоАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ТестовоеСообщение); // Строка
// АПК: 1036-вкл
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = Неопределено;
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает тестовое подключение к НСПК
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьТестовоеПодключение(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ТестовоеПодключениеАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Выполняет операцию предварительного одобрения использования сертификатов
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПредварительноеОдобрениеИспользованияАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПредварительноеОдобрениеИспользования";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
ТоварныеПозицииJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONТоварныеПозиции(ПараметрыОперации.ТоварныеПозиции, Истина);
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПредварительноеОдобрениеИспользованияАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ХешНомерКарты, // Строка
СсылкаНаПлатежныйСчет, // Строка
ТоварныеПозицииJSON); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеИспользованияЭС();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает предварительное одобрение использования сертификатов
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПредварительноеОдобрениеИспользования(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПредварительноеОдобрениеИспользованияАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Подключает компоненту и начинает предварительное одобрение возврата сертификатов
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПредварительноеОдобрениеВозвратаАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПредварительноеОдобрениеВозврата";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
ТоварныеПозицииJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONТоварныеПозиции(ПараметрыОперации.ТоварныеПозиции);
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПредварительноеОдобрениеВозвратаАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ИдентификаторКорзины, // Строка
ХешНомерКарты, // Строка
СсылкаНаПлатежныйСчет, // Строка
ТоварныеПозицииJSON); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеВозвратаЭС();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает предварительное одобрение возврата сертификатов
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПредварительноеОдобрениеВозврата(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПредварительноеОдобрениеВозвратаАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Подключает компоненту и начинает выполнение получения состава корзины
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПолучениеСоставаКорзиныАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПолучениеСоставаКорзины";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПолучениеСоставаКорзиныОригинальнойПокупкиАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ИдентификаторКорзины); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСоставаКорзины();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает выполнение получения состава корзины
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПолучениеСоставаКорзины(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПолучениеСоставаКорзиныАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Подключает компоненту и начинает выполнение получение списка сертификатов
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПолучениеСпискаСертификатовАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПолучениеСпискаСертификатов";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПолучениеСпискаСертификатовАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ХешНомерКарты, // Строка
СсылкаНаПлатежныйСчет); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаСертификатов();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает выполнение получение списка сертификатов
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПолучениеСпискаСертификатов(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПолучениеСпискаСертификатовАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Подключает компоненту и начинает выполнение получение списка идентификаторов корзин покупок ТСП
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПолучениеСпискаИдентификаторовКорзинПокупокТСПАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПолучениеСпискаИдентификаторовКорзинПокупокТСП";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
КодТовараТРУ = ПараметрыОперации.КодТовараТРУ;
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПолучениеСпискаИдентификаторовКорзинПокупокТСПАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
КодТовараТРУ, // Строка
ХешНомерКарты, // Строка
СсылкаНаПлатежныйСчет); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаИдентификаторовКорзинПокупокТСП();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает выполнение получение списка идентификаторов корзин покупок ТСП
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПолучениеСпискаИдентификаторовКорзинПокупокТСП(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПолучениеСпискаИдентификаторовКорзинПокупокТСПАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Выполняет выполнение получения идентификатора корзины
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПолучениеИдентификатораКорзиныАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПолучениеИдентификатораКорзины";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
НомерФискальногоНакопителя = ПараметрыОперации.НомерФискальногоНакопителя;
ФискальныйПризнакЧека = ПараметрыОперации.ФискальныйПризнакЧека;
ФискальныйЧекНомер = ПараметрыОперации.ФискальныйЧекНомер;
Если НЕ ПустаяСтрока(ПараметрыОперации.QRКодЧекаККТ) Тогда
ДанныеШтрихкода = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.РасшифроватьQRКодЧекаККТ(ПараметрыОперации.QRКодЧекаККТ);
Если ДанныеШтрихкода.Расшифрован Тогда
НомерФискальногоНакопителя = ДанныеШтрихкода.НомерФискальногоНакопителя;
ФискальныйПризнакЧека = ДанныеШтрихкода.ФискальныйПризнак;
ФискальныйЧекНомер = ДанныеШтрихкода.НомерФискальногоДокумента;
КонецЕсли;
КонецЕсли;
ФискальныйПризнакЧека = Строка(ФискальныйПризнакЧека);
ФискальныйЧекНомер = Формат(Число(ФискальныйЧекНомер), "ЧГ=0");
РезультатВызова = Ждать ВнешняяКомпонента.ЗапросНаПолучениеИдентификатораКорзиныОперацииПокупкиАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
НомерФискальногоНакопителя, // Строка
ФискальныйЧекНомер, // Строка
ФискальныйПризнакЧека); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеИдентификатораОперации();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает выполнение получения идентификатора корзины
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПолучениеИдентификатораКорзины(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПолучениеИдентификатораКорзиныАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
// Выполняет передачу данных фискального чека
//
// Параметры:
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
// Возвращаемое значение:
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации
//
Асинх Функция ПередачаДанныхФискальногоЧекаАсинх(ПараметрыОперации) Экспорт
РезультатПодключения = Ждать ПодключитьКомпонентуИнтеграцииНСПКАсинх(ПараметрыОперации);
Если РезультатПодключения.Результат Тогда
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации);
Если НЕ РезультатВыполнения.Результат Тогда
Возврат РезультатВыполнения;
КонецЕсли;
// Замер производительности
КлючеваяОперация = "ОбщийМодуль.ЭлектронныеСертификатыНСПККлиент.ПередачаДанныхФискальногоЧека";
ИдентификаторЗамера = ОбщегоНазначенияБПОКлиент.НачатьЗамерВремениБПО(КлючеваяОперация);
ВнешняяКомпонента = РезультатПодключения.ВнешняяКомпонента;
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
НомерФискальногоНакопителя = Строка(ПараметрыОперации.НомерФискальногоНакопителя);
ФискальныйТипРасчета = Число(ОборудованиеЧекопечатающиеУстройстваКлиентСервер.КодРасчетаДенежнымиСредствами(ПараметрыОперации.ФискальныйТипРасчета));
ФискальныйПризнакЧека = Строка(ПараметрыОперации.ФискальныйПризнакЧека);
ФискальныйЧекНомер = Формат(Число(ПараметрыОперации.ФискальныйЧекНомер), "ЧГ=0");
ФискальныйЧекСумма = Формат(ПараметрыОперации.ФискальныйЧекСумма, "ЧГ=0;ЧДЦ=2;ЧРД=.");
ФискальныйМестоРасчетов = Строка(ПараметрыОперации.ФискальныйМестоРасчетов);
// АПК: 1367-выкл особенность локального законодательства
Если ПараметрыОперации.ПротоколОбмена = ПредопределенноеЗначение("Перечисление.ПротоколОбменаФЭСНСПК.ВерсияV2") Тогда
ФискальныйЧекДатаВремя = Формат(ПараметрыОперации.ФискальныйЧекДатаВремя, "ДФ=""ггггММддTЧЧмм""");
Иначе
ФискальныйЧекДатаВремя = Формат(ПараметрыОперации.ФискальныйЧекДатаВремя, "ДФ=""ггггММддЧЧмм""");
КонецЕсли;
// АПК: 1367
РезультатВызова = Ждать ВнешняяКомпонента.ПередачаДанныхФискальногоЧекаАсинх(
ИдентификаторЗапроса, // Строка
ИдентификаторКассы, // Строка
ИдентификаторКорзины, // Строка
НомерФискальногоНакопителя, // Строка
ФискальныйЧекНомер, // Строка
ФискальныйПризнакЧека, // Строка
ФискальныйЧекСумма, // Строка
ФискальныйЧекДатаВремя, // Строка
ФискальныйТипРасчета, // Число
ФискальныйМестоРасчетов); // Строка
ПараметрыЗавершение = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
ПараметрыЗавершение.ТекстРезультата = РезультатВызова.Значение;
ПараметрыЗавершение.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПередачаДанныхФискальногоЧека();
ПараметрыЗавершение.ПараметрыОперации = ПараметрыОперации;
ПараметрыЗавершение.ОснованиеФискальнойОперации = ПараметрыОперации.ОснованиеФискальнойОперации;
// Замер производительности
ОбщегоНазначенияБПОКлиент.ЗавершитьЗамерВремениБПО(ИдентификаторЗамера);
РезультатВыполнения = Ждать ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение);
Иначе
Возврат РезультатПодключения;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
// Подключает компоненту и начинает передача данных фискального чека
//
// Параметры:
// ОповещениеПриЗавершении - ОписаниеОповещения - событие описания оповещения, описание результата
// см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации.
// ПараметрыОперации - см. ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК
//
Асинх Процедура НачатьПередачуДанныхФискальногоЧека(ОповещениеПриЗавершении, ПараметрыОперации) Экспорт
РезультатВыполнения = Ждать ПередачаДанныхФискальногоЧекаАсинх(ПараметрыОперации);
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатВыполнения);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Асинх Функция ЗавершениеОперации(ВнешняяКомпонента, ПараметрыЗавершение)
РезультатВызова = Ждать ВнешняяКомпонента.ПолучитьСписокОшибокАсинх();
Если РезультатВызова <> Неопределено Тогда
ПараметрыЗавершение.СписокОшибок = РезультатВызова.Значение;
КонецЕсли;
Возврат ЭлектронныеСертификатыНСПКВызовСервера.ОбработатьДанныеОперации(ПараметрыЗавершение);
КонецФункции
#КонецОбласти