Включает перемещение по ячейкам, стикеровку МП, синхронизацию справочников и обработку кодов маркировки. Co-authored-by: Cursor <cursoragent@cursor.com>
843 lines
59 KiB
Plaintext
843 lines
59 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2024, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Возвращает признак наличия ошибок отправки подтверждений НСПК.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - признак наличия ошибок отправки подтверждений НСПК.
|
||
//
|
||
Функция ЕстьОшибкиОтправкиПодтвержденийНСПК() Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
ТекстЗапроса =
|
||
"ВЫБРАТЬ
|
||
| ОшибкиПодтвержденияНСПК.ОснованиеФискальнойОперации КАК ОснованиеФискальнойОперации
|
||
|ИЗ
|
||
| РегистрСведений.ОшибкиПодтвержденияНСПК КАК ОшибкиПодтвержденияНСПК";
|
||
Запрос = Новый Запрос(ТекстЗапроса);
|
||
|
||
Результат = НЕ Запрос.Выполнить().Пустой();
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает представление ошибки операции НСПК.
|
||
//
|
||
// Параметры:
|
||
// ОснованиеФискальнойОперации - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - содержит представление ошибки НСПК.
|
||
//
|
||
Функция ПолучитьПредставлениеОшибкиНСПК(ОснованиеФискальнойОперации) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
Результат = Неопределено;
|
||
|
||
ТекстЗапроса =
|
||
"ВЫБРАТЬ
|
||
| ОшибкиПодтвержденияНСПК.ОснованиеФискальнойОперации КАК ОснованиеФискальнойОперации,
|
||
| ОшибкиПодтвержденияНСПК.КодРезультата КАК КодРезультата,
|
||
| ОшибкиПодтвержденияНСПК.ОписаниеОшибки КАК ОписаниеОшибки
|
||
|ИЗ
|
||
| РегистрСведений.ОшибкиПодтвержденияНСПК КАК ОшибкиПодтвержденияНСПК
|
||
|ГДЕ
|
||
| ОшибкиПодтвержденияНСПК.ОснованиеФискальнойОперации = &ОснованиеФискальнойОперации";
|
||
Запрос = Новый Запрос(ТекстЗапроса);
|
||
Запрос.УстановитьПараметр("ОснованиеФискальнойОперации", ОснованиеФискальнойОперации);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
|
||
Если Выборка.Следующий() Тогда
|
||
Результат = СтрШаблон(НСтр("ru='%1
|
||
|Код результата: %2
|
||
|Описание ошибки: %3'"),
|
||
Строка(ОснованиеФискальнойОперации),
|
||
Строка(Выборка.КодРезультата),
|
||
Строка(Выборка.ОписаниеОшибки));
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#Область УстаревшиеПроцедурыИФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Возвращает версию ВК взаимодействия с НСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - Версия ВК.
|
||
//
|
||
Функция ВерсияВК() Экспорт
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК();
|
||
Версия = ВнешняяКомпонента.Версия();
|
||
|
||
Возврат Версия;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Тестовое подключение к НСПК
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ТоварныеПозиции - Массив.
|
||
// *ИдентификаторКорзины - Число.
|
||
// *СуммаСертификатами - Число.
|
||
//
|
||
Функция ТестовоеПодключение(ПараметрыОперации) Экспорт
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ТестовоеСообщение = НСтр("ru = 'Тест 1С'");
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.эхо(ИдентификаторЗапроса, ИдентификаторКассы, ТестовоеСообщение);
|
||
|
||
СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
РезультатВыполнения = ПрочитатьJSONРезультатОперации(ТекстРезультата, СписокОшибок);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Предварительное одобрение использования сертификатов
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ТоварныеПозиции - Массив.
|
||
// *ИдентификаторКорзины - Число.
|
||
// *СуммаСертификатами - Число.
|
||
//
|
||
Функция ПредварительноеОдобрениеИспользования(ПараметрыОперации) Экспорт
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
|
||
Если НЕ РезультатВыполнения.Результат Тогда
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
|
||
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
|
||
ТоварныеПозицииJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONТоварныеПозиции(ПараметрыОперации.ТоварныеПозиции, Истина);
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПредварительноеОдобрениеИспользования(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
ХешНомерКарты, // Строка
|
||
СсылкаНаПлатежныйСчет, // Строка
|
||
ТоварныеПозицииJSON); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеИспользованияЭС();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Предварительное одобрение возврата сертификатов
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ТоварныеПозиции - Массив.
|
||
// *ИдентификаторКорзины - Число.
|
||
// *СуммаСертификатами - Число.
|
||
//
|
||
Функция ПредварительноеОдобрениеВозврата(ПараметрыОперации) Экспорт
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
|
||
Если НЕ РезультатВыполнения.Результат Тогда
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
|
||
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
|
||
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
|
||
ТоварныеПозицииJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONТоварныеПозиции(ПараметрыОперации.ТоварныеПозиции);
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПредварительноеОдобрениеВозврата(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
ИдентификаторКорзины, // Строка
|
||
ХешНомерКарты, // Строка
|
||
СсылкаНаПлатежныйСчет, // Строка
|
||
ТоварныеПозицииJSON); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеВозвратаЭС();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Получение идентификатора корзины
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ИдентификаторКорзины - Число.
|
||
//
|
||
Функция ПолучениеИдентификатораКорзины(ПараметрыОперации) Экспорт
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
|
||
НомерФискальногоНакопителя = ПараметрыОперации.НомерФискальногоНакопителя;
|
||
ФискальныйПризнакЧека = ПараметрыОперации.ФискальныйПризнакЧека;
|
||
ФискальныйЧекНомер = ПараметрыОперации.ФискальныйЧекНомер;
|
||
|
||
Если НЕ ПустаяСтрока(ПараметрыОперации.QRКодЧекаККТ) Тогда
|
||
ДанныеШтрихкода = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.РасшифроватьQRКодЧекаККТ(ПараметрыОперации.QRКодЧекаККТ);
|
||
Если ДанныеШтрихкода.Расшифрован Тогда
|
||
НомерФискальногоНакопителя = ДанныеШтрихкода.НомерФискальногоНакопителя;
|
||
ФискальныйПризнакЧека = ДанныеШтрихкода.ФискальныйПризнак;
|
||
ФискальныйЧекНомер = ДанныеШтрихкода.НомерФискальногоДокумента;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ФискальныйПризнакЧека = Строка(ФискальныйПризнакЧека);
|
||
ФискальныйЧекНомер = Формат(Число(ФискальныйЧекНомер), "ЧГ=0");
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПолучениеИдентификатораКорзиныОперацииПокупки(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
НомерФискальногоНакопителя, // Строка
|
||
ФискальныйЧекНомер, // Строка
|
||
ФискальныйПризнакЧека); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеИдентификатораОперации();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Передача данных фискального чека
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ТоварныеПозиции - Массив.
|
||
// *ИдентификаторКорзины - Число.
|
||
// *СуммаСертификатами - Число.
|
||
//
|
||
Функция ПередачаДанныхФискальногоЧека(ПараметрыОперации) Экспорт
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
|
||
|
||
НомерФискальногоНакопителя = Строка(ПараметрыОперации.НомерФискальногоНакопителя);
|
||
ФискальныйТипРасчета = Число(ОборудованиеЧекопечатающиеУстройстваКлиентСервер.КодРасчетаДенежнымиСредствами(ПараметрыОперации.ФискальныйТипРасчета));
|
||
ФискальныйПризнакЧека = Строка(ПараметрыОперации.ФискальныйПризнакЧека);
|
||
|
||
ФискальныйЧекНомер = Формат(Число(ПараметрыОперации.ФискальныйЧекНомер), "ЧГ=0");
|
||
ФискальныйЧекСумма = Формат(ПараметрыОперации.ФискальныйЧекСумма, "ЧГ=0;ЧДЦ=2;ЧРД=.");
|
||
ФискальныйМестоРасчетов = Строка(ПараметрыОперации.ФискальныйМестоРасчетов);
|
||
// АПК: 1367-выкл особенность локального законодательства
|
||
Если ПараметрыОперации.ПротоколОбмена = Перечисления.ПротоколОбменаФЭСНСПК.ВерсияV2 Тогда
|
||
ФискальныйЧекДатаВремя = Формат(ПараметрыОперации.ФискальныйЧекДатаВремя, "ДФ=""ггггММддTЧЧмм""");
|
||
Иначе
|
||
ФискальныйЧекДатаВремя = Формат(ПараметрыОперации.ФискальныйЧекДатаВремя, "ДФ=""ггггММддЧЧмм""");
|
||
КонецЕсли;
|
||
// АПК: 1367
|
||
ОснованиеФискальнойОперации = ПараметрыОперации.ОснованиеФискальнойОперации;
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ПередачаДанныхФискальногоЧека(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
ИдентификаторКорзины, // Строка
|
||
НомерФискальногоНакопителя, // Строка
|
||
ФискальныйЧекНомер, // Строка
|
||
ФискальныйПризнакЧека, // Строка
|
||
ФискальныйЧекСумма, // Строка
|
||
ФискальныйЧекДатаВремя, // Строка
|
||
ФискальныйТипРасчета, // Число
|
||
ФискальныйМестоРасчетов); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПередачаДанныхФискальногоЧека();
|
||
Параметры.ОснованиеФискальнойОперации = ОснованиеФискальнойОперации;
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Получение состава корзины
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
// *ТоварныеПозиции - Массив.
|
||
// *ИдентификаторКорзины - Число.
|
||
// *СуммаСертификатами - Число.
|
||
//
|
||
Функция ПолучениеСоставаКорзины(ПараметрыОперации) Экспорт
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = ПараметрыОперации.ИдентификаторЗапроса;
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ИдентификаторКорзины = ПараметрыОперации.ИдентификаторКорзины;
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПолучениеСоставаКорзиныОригинальнойПокупки(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
ИдентификаторКорзины); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСоставаКорзины();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Получение списка сертификатов
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
//
|
||
Функция ПолучениеСпискаСертификатов(ПараметрыОперации) Экспорт
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации, Истина);
|
||
Если НЕ РезультатВыполнения.Результат Тогда
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
|
||
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПолучениеСпискаСертификатов(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
ХешНомерКарты, // Строка
|
||
СсылкаНаПлатежныйСчет); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаСертификатов();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Получение списка идентификаторов корзин покупок ТСП
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см.ЭлектронныеСертификатыНСПК.ПараметрыОперацииНСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// *Результат - Булево.
|
||
// *КодРезультата - Число.
|
||
// *ОписаниеОшибки - Строка.
|
||
//
|
||
Функция ПолучениеСпискаИдентификаторовКорзинПокупокТСП(ПараметрыОперации) Экспорт
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПроверитьПараметрыОперации(ПараметрыОперации);
|
||
Если НЕ РезультатВыполнения.Результат Тогда
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
|
||
ВнешняяКомпонента = ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации);
|
||
|
||
ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
|
||
ИдентификаторКассы = ПараметрыОперации.ИдентификаторКассы;
|
||
ХешНомерКарты = ПараметрыОперации.ХешНомерКарты;
|
||
СсылкаНаПлатежныйСчет = ПараметрыОперации.СсылкаНаПлатежныйСчет;
|
||
КодТовараТРУ = ПараметрыОперации.КодТовараТРУ;
|
||
|
||
ТекстРезультата = ВнешняяКомпонента.ЗапросНаПолучениеСпискаИдентификаторовКорзинПокупокТСП(
|
||
ИдентификаторЗапроса, // Строка
|
||
ИдентификаторКассы, // Строка
|
||
КодТовараТРУ, // Строка
|
||
ХешНомерКарты, // Строка
|
||
СсылкаНаПлатежныйСчет); // Строка
|
||
|
||
Параметры = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперацииНаСервере();
|
||
Параметры.ТекстРезультата = ТекстРезультата;
|
||
Параметры.СписокОшибок = ВнешняяКомпонента.ПолучитьСписокОшибок();
|
||
Параметры.ПараметрыОперации = ПараметрыОперации;
|
||
Параметры.ТипПлатежнойОперации = ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаИдентификаторовКорзинПокупокТСП();
|
||
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПК.ОбработатьРезультатВыполненияНаСервере(Параметры);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Выполняет подключение внешней компоненты.
|
||
//
|
||
// Возвращаемое значение:
|
||
// ОбъектВнешнейКомпоненты
|
||
// Неопределено - если компоненту не удалось загрузить.
|
||
//
|
||
Функция ПодключитьКомпонентуИнтеграцииНСПК() Экспорт
|
||
|
||
ОписаниеКомпоненты = ЭлектронныеСертификатыНСПККлиентСервер.ОписаниеКомпоненты();
|
||
ИмяОбъекта = ОписаниеКомпоненты.ИмяОбъекта;
|
||
ПолноеИмяМакета = ОписаниеКомпоненты.ПолноеИмяМакета;
|
||
|
||
Возврат ВнешниеКомпонентыБПО.ПодключитьКомпоненту(ИмяОбъекта, ПолноеИмяМакета);
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Пустая структура для выполнения операции взаимодействия с сервером НСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * АдресСервера - Строка - Endpoint
|
||
// * КлючДоступа - Строка - APIKey
|
||
// * КлючКассы - Строка - MACKey
|
||
//
|
||
Функция ПараметрыОперацииНСПК() Экспорт
|
||
|
||
Возврат ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыОперацииНСПК();
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Пустая структура для параметров товарной позиции
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * НомерПозиции - Строка - Порядковый номер позиции в корзине начиная с 1
|
||
// * Артикул - Строка - Артикул товара
|
||
// * КодТовараТРУ - Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
// * Количество - Число - Количество единиц товара
|
||
// * Цена - Число - Цена за единицу товара в рублях
|
||
// * Сертификаты - Массив из см.ЭлектронныеСертификатыНСПК.ПараметрыСертификата
|
||
//
|
||
Функция ПараметрыТоварнойПозиции() Экспорт
|
||
|
||
Возврат ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыТоварнойПозиции();
|
||
|
||
КонецФункции
|
||
|
||
// Устарела: используйте клиентскую версию компоненты.
|
||
// Пустая структура параметров сертификата
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Идентификатор - Строка - Идентификатор сертификата
|
||
// * Количество - Число - Количество
|
||
// * Цена - Число - Цена
|
||
// * МаксимальнаяЦена - Число - Максимальная цена
|
||
//
|
||
Функция ПараметрыСертификата() Экспорт
|
||
|
||
Возврат ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыСертификата();
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
// Выполняет обработку результата отправки подтверждения.
|
||
//
|
||
Процедура ОбработатьРезультатОтправкиПодтверждения(ОснованиеФискальнойОперации, РезультатВыполнения) Экспорт
|
||
|
||
УстановитьПривилегированныйРежим(Истина);
|
||
|
||
МенеджерЗаписи = РегистрыСведений.ОшибкиПодтвержденияНСПК.СоздатьМенеджерЗаписи();
|
||
МенеджерЗаписи.ОснованиеФискальнойОперации = ОснованиеФискальнойОперации;
|
||
Если РезультатВыполнения.Результат Тогда
|
||
МенеджерЗаписи.Удалить();
|
||
Иначе
|
||
МенеджерЗаписи.КодРезультата = РезультатВыполнения.КодРезультата;
|
||
МенеджерЗаписи.ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
МенеджерЗаписи.Записать();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПрочитатьJSONРезультатОперации(СтрокаJSON, СписокОшибок = Неопределено, ОснованиеФискальнойОперации = Неопределено) Экспорт
|
||
|
||
ОписаниеОшибки = ?(ПустаяСтрока(СписокОшибок), "", СписокОшибок);
|
||
РезультатВыполнения = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыВыполненияОперации(Ложь, ОписаниеОшибки);
|
||
|
||
Если Не ПустаяСтрока(СтрокаJSON)
|
||
И Не СтрНачинаетсяС(СтрокаJSON, "<!DOCTYPE")
|
||
И Не СтрНачинаетсяС(СтрокаJSON, "<html>") Тогда
|
||
ЧтениеJSON = Новый ЧтениеJSON;
|
||
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
|
||
|
||
РезультатОперации = ПрочитатьJSON(ЧтениеJSON);
|
||
Если РезультатОперации.Свойство("result") Тогда
|
||
РезультатВыполнения.КодРезультата = Число(РезультатОперации.result.code);
|
||
РезультатВыполнения.Результат = РезультатВыполнения.КодРезультата = 0;
|
||
РезультатВыполнения.ОписаниеОшибки = РезультатОперации.result.description;
|
||
Если НЕ ПустаяСтрока(ОписаниеОшибки) Тогда
|
||
РезультатВыполнения.ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки = Символы.ПС + ОписаниеОшибки;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если РезультатВыполнения.Результат И РезультатОперации.Свойство("purchaseBasketId") Тогда
|
||
РезультатВыполнения.ИдентификаторКорзины = РезультатОперации.purchaseBasketId;
|
||
КонецЕсли;
|
||
|
||
Если РезультатВыполнения.Результат И РезультатОперации.Свойство("basket") Тогда
|
||
|
||
Если РезультатОперации.basket.Свойство("purchaseBasketId") Тогда
|
||
РезультатВыполнения.ИдентификаторКорзины = РезультатОперации.basket.purchaseBasketId;
|
||
КонецЕсли;
|
||
Если РезультатОперации.basket.Свойство("returnBasketId") Тогда
|
||
РезультатВыполнения.ИдентификаторКорзины = РезультатОперации.basket.returnBasketId;
|
||
КонецЕсли;
|
||
Если РезультатОперации.basket.Свойство("totalCertAmount") И Число(РезультатОперации.basket.totalCertAmount) > 0 Тогда
|
||
РезультатВыполнения.СуммаСертификатами = Число(РезультатОперации.basket.totalCertAmount) / 100;
|
||
КонецЕсли;
|
||
|
||
Если РезультатОперации.basket.Свойство("article") Тогда
|
||
Для Каждого Позиция Из РезультатОперации.basket.article Цикл
|
||
|
||
ТоварнаяПозиция = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыТоварнойПозиции();
|
||
Если Позиция.Свойство("articleCode") Тогда
|
||
ТоварнаяПозиция.Артикул = Позиция.articleCode;
|
||
КонецЕсли;
|
||
Если Позиция.Свойство("articleNumber") Тогда
|
||
ТоварнаяПозиция.НомерПозиции = Позиция.articleNumber;
|
||
КонецЕсли;
|
||
Если Позиция.Свойство("price") Тогда
|
||
ТоварнаяПозиция.Цена = Число(Позиция.price) / 100;
|
||
КонецЕсли;
|
||
Если Позиция.Свойство("truCode") Тогда
|
||
ТоварнаяПозиция.КодТовараТРУ = Позиция.truCode;
|
||
КонецЕсли;
|
||
|
||
Если Позиция.Свойство("certificate") Тогда
|
||
Для Каждого Сертификат Из Позиция.certificate Цикл
|
||
СертификатСтрока = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыСертификата();
|
||
Если Сертификат.Свойство("certificateId") Тогда
|
||
СертификатСтрока.Идентификатор = Сертификат.certificateId;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("certCount") Тогда
|
||
СертификатСтрока.Количество = Сертификат.certCount;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("certPrice") Тогда
|
||
СертификатСтрока.Цена = Число(Сертификат.certPrice) / 100;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("certMaxPrice") Тогда
|
||
СертификатСтрока.МаксимальнаяЦена = Число(Сертификат.certMaxPrice) / 100;
|
||
КонецЕсли;
|
||
ТоварнаяПозиция.Сертификаты.Добавить(СертификатСтрока);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
РезультатВыполнения.ТоварныеПозиции.Добавить(ТоварнаяПозиция);
|
||
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если РезультатВыполнения.Результат И РезультатОперации.Свойство("baskets") И ЗначениеЗаполнено(РезультатОперации.baskets) Тогда
|
||
Для Каждого ИдентификаторКорзины Из РезультатОперации.baskets Цикл
|
||
ИдентификаторКорзиныСтрока = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыИдентификаторовКорзинПокупокТСП();
|
||
Если ИдентификаторКорзины.Свойство("basketId") Тогда
|
||
ИдентификаторКорзиныСтрока.ИдентификаторКорзины = ИдентификаторКорзины.basketId;
|
||
КонецЕсли;
|
||
Если ИдентификаторКорзины.Свойство("authDate") Тогда
|
||
ИдентификаторКорзиныСтрока.ДатаАвторизации = XMLЗначение(Тип("Дата"), ИдентификаторКорзины.authDate);
|
||
КонецЕсли;
|
||
РезультатВыполнения.ИдентификаторыКорзинПокупок.Добавить(ИдентификаторКорзиныСтрока);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Если РезультатВыполнения.Результат И РезультатОперации.Свойство("certificates") Тогда
|
||
Для Каждого Сертификат Из РезультатОперации.certificates Цикл
|
||
|
||
СертификатСтрока = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыДоступногоСертификата();
|
||
Если Сертификат.Свойство("id") Тогда
|
||
СертификатСтрока.Идентификатор = Сертификат.id;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("comment") Тогда
|
||
СертификатСтрока.Комментарий = Сертификат.comment;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("balanceCount") И ЗначениеЗаполнено(Сертификат.balanceCount) Тогда
|
||
СертификатСтрока.БалансКоличество = Число(Сертификат.balanceCount);
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("balanceMoney") И ЗначениеЗаполнено(Сертификат.balanceMoney) Тогда
|
||
СертификатСтрока.БалансДенежныхСредств = Число(Сертификат.balanceMoney) / 100;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("limitMoney") И ЗначениеЗаполнено(Сертификат.limitMoney) Тогда
|
||
СертификатСтрока.ЛимитДенежныхСредств = Число(Сертификат.limitMoney) / 100;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("type") Тогда
|
||
СертификатСтрока.Тип = Сертификат.type;
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("startDate") И ЗначениеЗаполнено(Сертификат.startDate)Тогда
|
||
СертификатСтрока.ДатаНачалаДействия = XMLЗначение(Тип("Дата"), Сертификат.startDate);
|
||
КонецЕсли;
|
||
Если Сертификат.Свойство("expiryDate") И ЗначениеЗаполнено(Сертификат.expiryDate) Тогда
|
||
СертификатСтрока.ДатаЗавершенияДействия = XMLЗначение(Тип("Дата"), Сертификат.expiryDate);
|
||
КонецЕсли;
|
||
|
||
Если Сертификат.Свойство("tru") Тогда
|
||
Для Каждого КодТовараТРУ Из Сертификат.tru Цикл
|
||
СтрокаКодТовараТРУ = ЭлектронныеСертификатыНСПККлиентСервер.ПараметрыДоступногоКодТовараТРУ();
|
||
Если КодТовараТРУ.Свойство("truCode") Тогда
|
||
СтрокаКодТовараТРУ.КодТовараТРУ = КодТовараТРУ.truCode;
|
||
КонецЕсли;
|
||
Если КодТовараТРУ.Свойство("balanceCount") И ЗначениеЗаполнено(КодТовараТРУ.balanceCount) Тогда
|
||
СтрокаКодТовараТРУ.БалансКоличество = Число(КодТовараТРУ.balanceCount);
|
||
КонецЕсли;
|
||
Если КодТовараТРУ.Свойство("balanceMoney") И ЗначениеЗаполнено(КодТовараТРУ.balanceMoney) Тогда
|
||
СтрокаКодТовараТРУ.БалансДенежныхСредств = Число(КодТовараТРУ.balanceMoney) / 100;
|
||
КонецЕсли;
|
||
Если КодТовараТРУ.Свойство("limitMoney") И ЗначениеЗаполнено(КодТовараТРУ.limitMoney) Тогда
|
||
СтрокаКодТовараТРУ.ЛимитДенежныхСредств = Число(КодТовараТРУ.limitMoney) / 100;
|
||
КонецЕсли;
|
||
СертификатСтрока.КодыТоваровТРУ.Добавить(СтрокаКодТовараТРУ);
|
||
РезультатВыполнения.ТоварныеПозиции.Добавить(СтрокаКодТовараТРУ);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
РезультатВыполнения.ДоступныеСертификаты.Добавить(СертификатСтрока);
|
||
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
ЧтениеJSON.Закрыть();
|
||
Иначе
|
||
РезультатВыполнения.ОписаниеОшибки = ?(ПустаяСтрока(ОписаниеОшибки), НСтр("ru = 'Ответ не получен'"), ОписаниеОшибки);
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(ОснованиеФискальнойОперации) Тогда
|
||
ЭлектронныеСертификатыНСПК.ОбработатьРезультатОтправкиПодтверждения(ОснованиеФискальнойОперации, РезультатВыполнения);
|
||
КонецЕсли;
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
Функция ОбработатьРезультатВыполненияНаСервере(Параметры) Экспорт
|
||
|
||
ТекстРезультата = Параметры.ТекстРезультата;
|
||
СписокОшибок = Параметры.СписокОшибок;
|
||
ОснованиеФискальнойОперации = Параметры.ОснованиеФискальнойОперации;
|
||
ПараметрыОперации = Параметры.ПараметрыОперации;
|
||
ТипПлатежнойОперации = Параметры.ТипПлатежнойОперации;
|
||
|
||
РезультатВыполнения = ПрочитатьJSONРезультатОперации(ТекстРезультата, СписокОшибок, ОснованиеФискальнойОперации);
|
||
|
||
ТипОперации = ТипПлатежнойОперацииПоКоманде(ТипПлатежнойОперации);
|
||
ЗаписатьИсториюПлатежнойОперации(ТипОперации, ПараметрыОперации, РезультатВыполнения, ТекстРезультата);
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
// Выполняет подготовка внешней компоненты.
|
||
//
|
||
// Возвращаемое значение:
|
||
// ОбъектВнешнейКомпоненты
|
||
// Неопределено - если компоненту не удалось загрузить.
|
||
//
|
||
Функция ПодготовитьКомпонентуИнтеграцииНСПК(ПараметрыОперации = Неопределено)
|
||
|
||
ВнешняяКомпонента = ПодключитьКомпонентуИнтеграцииНСПК();
|
||
Если ВнешняяКомпонента = Неопределено Тогда
|
||
ТекстСообщения = НСтр("ru = 'Ошибка подключения внешней компоненты НСПК.'");
|
||
ОбщегоНазначенияБПО.ЗаписатьОшибкуВЖурналРегистрации(
|
||
НСтр("ru = 'Ошибка компоненты НСПК'", ОбщегоНазначенияБПО.КодОсновногоЯзыка()),
|
||
ТекстСообщения);
|
||
ВызватьИсключение ТекстСообщения;
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации <> Неопределено Тогда
|
||
ПараметрыJSON = ЭлектронныеСертификатыНСПККлиентСервер.ПолучитьJSONПараметры(ПараметрыОперации);
|
||
ВнешняяКомпонента.УстановитьПараметры(ПараметрыJSON);
|
||
КонецЕсли;
|
||
|
||
Возврат ВнешняяКомпонента;
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПоКоманде(Команда)
|
||
|
||
ТипыОпераций = Новый Соответствие();
|
||
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеИспользованияЭС(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПредварительноеОдобрениеИспользованияЭС);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПредварительноеОдобрениеВозвратаЭС(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПредварительноеОдобрениеВозвратаЭС);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПередачаДанныхФискальногоЧека(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПередачаДанныхФискальногоЧека);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеИдентификатораОперации(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПолучениеИдентификатораОперации);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСоставаКорзины(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПолучениеСоставаКорзины);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаСертификатов(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПолучениеСпискаЭС);
|
||
ТипыОпераций.Вставить(ЭлектронныеСертификатыНСПККлиентСервер.ТипПлатежнойОперацииПолучениеСпискаИдентификаторовКорзинПокупокТСП(),
|
||
Перечисления.ТипыПлатежныхОпераций.ПолучениеСпискаИдентификаторовКорзинПокупокТСП);
|
||
Возврат ТипыОпераций.Получить(Команда);
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаписатьИсториюПлатежнойОперации(ТипОперации, ДанныеОперации, РезультатВыполнения, ТекстОтветаJSON)
|
||
|
||
СуммаОперации = 0;
|
||
Если ТипОперации = Перечисления.ТипыПлатежныхОпераций.ПередачаДанныхФискальногоЧека Тогда
|
||
СуммаОперации = ДанныеОперации.ФискальныйЧекСумма;
|
||
Иначе
|
||
Для Каждого ТоварнаяПозиция Из ДанныеОперации.ТоварныеПозиции Цикл
|
||
Если ТоварнаяПозиция.Цена <> Неопределено И ТоварнаяПозиция.Количество <> Неопределено Тогда
|
||
СуммаОперации = СуммаОперации + (ТоварнаяПозиция.Цена * ТоварнаяПозиция.Количество);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
|
||
ЧтениеJSON = Новый ЧтениеJSON();
|
||
ЗаписьJSON = Новый ЗаписьJSON();
|
||
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
|
||
Сжатие = Новый СжатиеДанных(6);
|
||
ОтветBase64 = "";
|
||
|
||
Если Не ПустаяСтрока(ТекстОтветаJSON)
|
||
И Не СтрНачинаетсяС(ТекстОтветаJSON, "<!DOCTYPE")
|
||
И Не СтрНачинаетсяС(ТекстОтветаJSON, "<html>") Тогда
|
||
ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
|
||
ОтветJSON = ПрочитатьJSON(ЧтениеJSON);
|
||
Если ОтветJSON.Свойство("request", ОтветBase64) <> Неопределено Тогда
|
||
ОтветJSON.Удалить("request");
|
||
ЗаписатьJSON(ЗаписьJSON, ОтветJSON, , "ЗаписатьИсториюПлатежнойОперации_ПреобразованиеВJSON", ЭлектронныеСертификатыНСПК);
|
||
ТекстОтвета = ЗаписьJSON.Закрыть();
|
||
ТекстЗапроса = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(ОтветBase64));
|
||
Иначе
|
||
ЗаписатьJSON(ЗаписьJSON, ДанныеОперации, , "ЗаписатьИсториюПлатежнойОперации_ПреобразованиеВJSON", ЭлектронныеСертификатыНСПК);
|
||
ТекстЗапроса = ЗаписьJSON.Закрыть();
|
||
ТекстОтвета = ТекстОтветаJSON;
|
||
КонецЕсли;
|
||
Иначе
|
||
ТекстОтвета = ТекстОтветаJSON;
|
||
КонецЕсли;
|
||
|
||
ДанныеОперации.Вставить("ТекстЗапроса" , ТекстЗапроса);
|
||
ДанныеОперации.Вставить("ТекстОтвета" , ТекстОтвета);
|
||
ДанныеОперации.Вставить("СуммаОперации", СуммаОперации);
|
||
РезультатВыполнения.Вставить("ВидОплатыНаТерминале", Перечисления.ВидОплатыНаТерминале.Карта);
|
||
|
||
ОборудованиеПлатежныеСистемы.ЗаписатьПлатежнуюОперацию(ТипОперации, ДанныеОперации, РезультатВыполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ЗаписатьИсториюПлатежнойОперации_ПреобразованиеВJSON(Свойство, Значение, ДополнительныеПараметры, Отказ) Экспорт
|
||
|
||
Возврат Строка(Значение);
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|