465 lines
32 KiB
Plaintext
465 lines
32 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2024, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Описание подключения внешней компоненты (FECNSPK).
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПолноеИмяМакета - Строка
|
||
// * ИмяОбъекта - Строка
|
||
//
|
||
Функция ОписаниеКомпоненты() Экспорт
|
||
|
||
Параметры = Новый Структура;
|
||
Параметры.Вставить("ИмяОбъекта", "FECNSPK");
|
||
Параметры.Вставить("ПолноеИмяМакета", "ОбщийМакет.КомпонентаИнтеграцииНСПК");
|
||
Параметры.Вставить("ВерсияМинимальная", "1.3.2.1");
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура для выполнения операции взаимодействия с сервером НСПК
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * АдресСервера - Строка - Endpoint
|
||
// * КлючДоступа - Строка - APIKey
|
||
// * КлючКассы - Строка - MACKey
|
||
// * ПроверятьКорневыеСертификаты - Булево - Проверка корневого сертификата сервера НСПК
|
||
// * ПротоколОбмена - Перечисление.ПротоколОбменаФЭСНСПК - Протокол обмена ФЭС НСПК
|
||
// * ИдентификаторЗапроса - Строка - Уникальный идентификатор запроса (нужно генерировать на прикладном коде в формате uuid).
|
||
// * ИдентификаторКассы - Строка - Идентификатор кассы.
|
||
// * ХешНомерКарты - Строка - Хешированный PAN карты.
|
||
// * СсылкаНаПлатежныйСчет - Строка - Payment Account Reference, Уникальный идентификатор для токенезированных (виртуальных) карт связанный с PAN конкретного держателя карты.
|
||
// * ИдентификаторКорзины - Строка - Идентификатор корзины.
|
||
// * ТоварныеПозиции - Массив - Структур - ПараметрыТоварнойПозиции()
|
||
// * КодТовараТРУ - Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
// * НомерФискальногоНакопителя - Строка - Заводской номер фискального накопителя
|
||
// * ФискальныйТипРасчета - Перечисление.ТипыРасчетаДенежнымиСредствами - Признак расчета
|
||
// * ФискальныйПризнакЧека - Строка - Фискальный признак документа
|
||
// * ФискальныйЧекНомер - Число - Порядковый номер фискального документа
|
||
// * ФискальныйЧекДатаВремя - ДатаВремя - Дата и время осуществления расчета
|
||
// * ФискальныйЧекСумма - Число - Сумма расчета
|
||
// * ФискальныйМестоРасчетов - Строка - Место расчетов
|
||
// * QRКодЧекаККТ - Строка - QR код чека ККТ
|
||
// * ОснованиеФискальнойОперации - Ссылка - ОснованиеФискальнойОперацииБПО
|
||
//
|
||
Функция ПараметрыОперацииНСПК() Экспорт
|
||
|
||
ИнтернетПрокси = Новый Структура();
|
||
ИнтернетПрокси.Вставить("Сервер");
|
||
ИнтернетПрокси.Вставить("Порт");
|
||
ИнтернетПрокси.Вставить("Пользователь");
|
||
ИнтернетПрокси.Вставить("Пароль");
|
||
|
||
Параметры = Новый Структура();
|
||
|
||
Параметры.Вставить("АдресСервера"); // Endpoint
|
||
Параметры.Вставить("КлючДоступа"); // APIKey
|
||
Параметры.Вставить("КлючКассы"); // MACKey
|
||
Параметры.Вставить("ИнтернетПрокси", ИнтернетПрокси); // ИнтернетПрокси
|
||
|
||
Параметры.Вставить("ПроверятьКорневыеСертификаты", Истина); // Булево - Проверка корневого сертификата сервера НСПК
|
||
Параметры.Вставить("ПротоколОбмена", ПредопределенноеЗначение("Перечисление.ПротоколОбменаФЭСНСПК.ВерсияV1")); // Перечисление.ПротоколОбменаФЭСНСПК, Обязательно - Протокол обмена ФЭС НСПК.
|
||
Параметры.Вставить("ИдентификаторЗапроса"); // Строка - Уникальный идентификатор запроса (нужно генерировать на прикладном коде в формате uuid).
|
||
Параметры.Вставить("ИдентификаторКассы"); // Строка - Идентификатор кассы.
|
||
Параметры.Вставить("ХешНомерКарты"); // Строка - Хешированный PAN карты.
|
||
Параметры.Вставить("СсылкаНаПлатежныйСчет", ""); // Строка - Payment Account Reference, Уникальный идентификатор для токенезированных (виртуальных) карт связанный с PAN конкретного держателя карты.
|
||
|
||
Параметры.Вставить("ИдентификаторКорзины"); // Строка - Идентификатор корзины.
|
||
Параметры.Вставить("ТоварныеПозиции", Новый Массив()); // Массив - Структур - ПараметрыТоварнойПозиции()
|
||
Параметры.Вставить("КодТовараТРУ"); // Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
|
||
Параметры.Вставить("НомерФискальногоНакопителя"); // Строка - Заводской номер фискального накопителя
|
||
Параметры.Вставить("ФискальныйТипРасчета", ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ПриходДенежныхСредств")); // Перечисление.ТипыРасчетаДенежнымиСредствами - Признак расчета
|
||
Параметры.Вставить("ФискальныйПризнакЧека"); // Строка - Фискальный признак документа
|
||
Параметры.Вставить("ФискальныйЧекНомер"); // Число - Порядковый номер фискального документа
|
||
Параметры.Вставить("ФискальныйЧекДатаВремя"); // ДатаВремя - Дата и время осуществления расчета
|
||
Параметры.Вставить("ФискальныйЧекСумма"); // Число - Сумма расчета
|
||
Параметры.Вставить("ФискальныйМестоРасчетов"); // Строка - Место расчетов
|
||
|
||
Параметры.Вставить("QRКодЧекаККТ"); // Строка - QR код чека ККТ
|
||
Параметры.Вставить("ОснованиеФискальнойОперации"); // Ссылка - ОснованиеФискальнойОперацииБПО
|
||
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура для параметров товарной позиции
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * НомерПозиции - Строка - Порядковый номер позиции в корзине начиная с 1
|
||
// * Артикул - Строка - Артикул товара
|
||
// * КодТовараТРУ - Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
// * Количество - Число - Количество единиц товара
|
||
// * Цена - Число - Цена за единицу товара в рублях
|
||
// * Сертификаты - Массив из см.ЭлектронныеСертификатыНСПК.ПараметрыСертификата
|
||
//
|
||
Функция ПараметрыТоварнойПозиции() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("НомерПозиции"); // Строка - Порядковый номер позиции в корзине начиная с 1
|
||
Параметры.Вставить("НомерПозицииВозврата"); // Строка - Порядковый номер позиции в корзине покупки, которая содержит возвращаемый товар
|
||
Параметры.Вставить("СертификатПоследниеЦифры"); // Строка - Последние цифры (6 символов) сертификата для выбора
|
||
Параметры.Вставить("Артикул"); // Строка - Артикул товара
|
||
Параметры.Вставить("КодТовараТРУ"); // Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
Параметры.Вставить("Количество"); // Число - Количество единиц товара
|
||
Параметры.Вставить("Цена"); // Число - Цена за единицу товара в рублях
|
||
Параметры.Вставить("Сертификаты", Новый Массив()); // Сертификаты
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура для параметров товарной позиции
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * КодТовараТРУ - Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
// * БалансКоличество - Число - Доступное количество
|
||
// * БалансДенежныхСредств - Число - Баланс денежных средств
|
||
// * ЛимитДенежныхСредств - Число - Лимит денежных средств
|
||
//
|
||
Функция ПараметрыДоступногоКодТовараТРУ() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("КодТовараТРУ"); // Строка - Полный код товара, согласованный с перечнем ТРУ
|
||
Параметры.Вставить("БалансКоличество"); // Число - Доступное количество
|
||
Параметры.Вставить("БалансДенежныхСредств"); // Число - Баланс денежных средств
|
||
Параметры.Вставить("ЛимитДенежныхСредств"); // Число - Лимит денежных средств
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура для параметров доступного сертификата
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * БалансКоличество - Число - Доступное количество
|
||
// * БалансДенежныхСредств - Число - Баланс денежных средств
|
||
// * Идентификатор - Строка - Идентификатор сертификата
|
||
// * Комментарий - Строка - Комментарий
|
||
// * ДатаНачалаДействия - ДатаВремя - Дата начала действия
|
||
// * ДатаЗавершенияДействия - ДатаВремя - Дата завершения действия
|
||
// * ЛимитДенежныхСредств - Число - Лимит денежных средств
|
||
// * Тип - Строка - Тип сертификата
|
||
// * КодыТоваровТРУ - Массив - Доступные для сертификата коды товаров ТРУ
|
||
//
|
||
Функция ПараметрыДоступногоСертификата() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("БалансКоличество"); // Число - Доступное количество
|
||
Параметры.Вставить("БалансДенежныхСредств"); // Число - Баланс денежных средств
|
||
Параметры.Вставить("Идентификатор"); // Строка - Идентификатор сертификата
|
||
Параметры.Вставить("Комментарий"); // Строка - Комментарий
|
||
Параметры.Вставить("ДатаНачалаДействия"); // ДатаВремя - Дата начала действия
|
||
Параметры.Вставить("ДатаЗавершенияДействия"); // ДатаВремя - Дата завершения действия
|
||
Параметры.Вставить("ЛимитДенежныхСредств"); // Число - Лимит денежных средств
|
||
Параметры.Вставить("Тип"); // Строка - Тип сертификата
|
||
Параметры.Вставить("КодыТоваровТРУ", Новый Массив()); // Массив - Доступные для сертификата коды товаров ТРУ
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура параметров сертификата
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Идентификатор - Строка - Идентификатор сертификата
|
||
// * Количество - Число - Количество
|
||
// * Цена - Число - Цена
|
||
// * МаксимальнаяЦена - Число - Максимальная цена
|
||
//
|
||
Функция ПараметрыСертификата() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("Идентификатор"); // Идентификатор
|
||
Параметры.Вставить("Количество"); // Количество
|
||
Параметры.Вставить("Цена"); // Цена
|
||
Параметры.Вставить("МаксимальнаяЦена"); // Максимальная цена
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Пустая структура параметров идентификаторов корзин покупок ТСП
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ИдентификаторКорзины - Строка - Идентификатор сертификата
|
||
// * ДатаАвторизации - ДатаВремя - Дата авторизации
|
||
//
|
||
Функция ПараметрыИдентификаторовКорзинПокупокТСП() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("ИдентификаторКорзины"); // Идентификатор корзины
|
||
Параметры.Вставить("ДатаАвторизации"); // Дата авторизации
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Результат выполнения операции взаимодействия с сервером НСПК
|
||
//
|
||
// Параметры:
|
||
// Результат - Булево.
|
||
// ОписаниеОшибки - Строка.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Результат - Булево.
|
||
// * КодРезультата - Число.
|
||
// * ОписаниеОшибки - Строка.
|
||
// * ТоварныеПозиции - Массив.
|
||
// * ИдентификаторКорзины - Число.
|
||
// * СуммаСертификатами - Число.
|
||
//
|
||
Функция ПараметрыВыполненияОперации(Результат = Ложь, ОписаниеОшибки = Неопределено) Экспорт
|
||
|
||
РезультатВыполнения = Новый Структура();
|
||
РезультатВыполнения.Вставить("Результат" , Результат);
|
||
РезультатВыполнения.Вставить("КодРезультата" , 999);
|
||
РезультатВыполнения.Вставить("ОписаниеОшибки", ОписаниеОшибки);
|
||
РезультатВыполнения.Вставить("ТоварныеПозиции", Новый Массив());
|
||
РезультатВыполнения.Вставить("ДоступныеСертификаты", Новый Массив());
|
||
РезультатВыполнения.Вставить("ИдентификаторКорзины");
|
||
РезультатВыполнения.Вставить("СуммаСертификатами", 0);
|
||
РезультатВыполнения.Вставить("ИдентификаторыКорзинПокупок", Новый Массив());
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
// Результат выполнения операции взаимодействия с сервером НСПК
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - Структура -
|
||
// ПроверятьПлатежныйСчет - Булево -
|
||
// ПроверятьКорректностьТРУ - Булево -
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура
|
||
//
|
||
Функция ПроверитьПараметрыОперации(ПараметрыОперации, ПроверятьПлатежныйСчет = Ложь, ПроверятьКорректностьТРУ = Ложь) Экспорт
|
||
|
||
РезультатВыполнения = ПараметрыВыполненияОперации(Истина);
|
||
|
||
ПараметрыОперации.ИдентификаторЗапроса = Строка(ПараметрыОперации.ИдентификаторЗапроса);
|
||
Если ПустаяСтрока(ПараметрыОперации.ИдентификаторЗапроса) Или ПараметрыОперации.ИдентификаторЗапроса = "0" Тогда
|
||
ПараметрыОперации.ИдентификаторЗапроса = Строка(Новый УникальныйИдентификатор());
|
||
КонецЕсли;
|
||
|
||
Если СтрДлина(Строка(ПараметрыОперации.ИдентификаторЗапроса)) < 36 Тогда
|
||
РезультатВыполнения.ОписаниеОшибки = НСтр("ru = 'Необходим корректный идентификатор запроса (UUID).'");
|
||
РезультатВыполнения.Результат = Ложь;
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
|
||
Если ПроверятьКорректностьТРУ Тогда
|
||
// Полный код ТРУ указывается в запросе и имеет формат: NNNNNNNNN.NNNNNNNNNYYYYMMMMZZZ
|
||
Для Каждого ТоварнаяПозиция Из ПараметрыОперации.ТоварныеПозиции Цикл
|
||
КодТовараТРУ = СтрРазделить(ТоварнаяПозиция.КодТовараТРУ, ".");
|
||
КодКорректный = (КодТовараТРУ.Количество() = 2)
|
||
И СтрДлина(КодТовараТРУ[0]) = 9 И ОбщегоНазначенияБПОКлиентСервер.ТолькоЦифрыВСтроке(КодТовараТРУ[0])
|
||
И (СтрДлина(КодТовараТРУ[1]) = 20) И ОбщегоНазначенияБПОКлиентСервер.ТолькоЦифрыВСтроке(КодТовараТРУ[1]);
|
||
Если НЕ КодКорректный Тогда
|
||
РезультатВыполнения.ОписаниеОшибки = НСтр("ru = 'Код ТРУ указан некорректно. Код должен быть в формате NNNNNNNNN.NNNNNNNNNNNNNNNNNNNN'");
|
||
РезультатВыполнения.Результат = Ложь;
|
||
Возврат РезультатВыполнения;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Если ПроверятьПлатежныйСчет
|
||
И ПараметрыОперации.ПротоколОбмена = ПредопределенноеЗначение("Перечисление.ПротоколОбменаФЭСНСПК.ВерсияV2")
|
||
И ПустаяСтрока(ПараметрыОперации.СсылкаНаПлатежныйСчет) Тогда
|
||
РезультатВыполнения.ОписаниеОшибки = НСтр("ru = 'Ошибка проведения операции по протоколу ФЭС НСПК v2.'") + Символы.ПС +
|
||
НСтр("ru = 'Необходимо обязательное указание PAR (Payment Account Reference).'");
|
||
РезультатВыполнения.Результат = Ложь;
|
||
КонецЕсли;
|
||
|
||
Возврат РезультатВыполнения;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
Функция ПолучитьJSONПараметры(ПараметрыОперации) Экспорт
|
||
|
||
#Если ВебКлиент Тогда
|
||
Возврат ЭлектронныеСертификатыНСПКВызовСервера.ПолучитьJSONПараметры(ПараметрыОперации);
|
||
#Иначе
|
||
|
||
ПараметрыЗапись = Новый Структура();
|
||
|
||
Если ПараметрыОперации <> Неопределено Тогда
|
||
|
||
Если ПараметрыОперации.Свойство("АдресСервера") Тогда
|
||
АдресСервера = СокрЛП(ПараметрыОперации.АдресСервера);
|
||
Если Прав(АдресСервера, 1)="/" Или Прав(АдресСервера, 1)="\" Тогда
|
||
АдресСервера = Лев(АдресСервера, СтрДлина(АдресСервера)-1);
|
||
КонецЕсли;
|
||
ПараметрыЗапись.Вставить("Host", АдресСервера);
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации.Свойство("КлючДоступа") Тогда
|
||
ПараметрыЗапись.Вставить("ApiKey", СокрЛП(ПараметрыОперации.КлючДоступа));
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации.Свойство("КлючКассы") Тогда
|
||
ПараметрыЗапись.Вставить("MACKey", СокрЛП(ПараметрыОперации.КлючКассы));
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации.Свойство("ПроверятьКорневыеСертификаты") Тогда
|
||
ПараметрыЗапись.Вставить("CheckRootCertificates", ?(ПараметрыОперации.ПроверятьКорневыеСертификаты, "True", "False"));
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации.Свойство("ПротоколОбмена") Тогда
|
||
ВерсияАПИ = ?(ПараметрыОперации.ПротоколОбмена = ПредопределенноеЗначение("Перечисление.ПротоколОбменаФЭСНСПК.ВерсияV2"), 2, 1);
|
||
ПараметрыЗапись.Вставить("APIVersion", ВерсияАПИ);
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыОперации.Свойство("ИнтернетПрокси") Тогда
|
||
ИнтернетПрокси = ПараметрыОперации.ИнтернетПрокси;
|
||
ПараметрыЗапись.Вставить("Proxy" , СокрЛП(ИнтернетПрокси.Сервер));
|
||
ПараметрыЗапись.Вставить("ProxyPort" , СокрЛП(ИнтернетПрокси.Порт));
|
||
ПараметрыЗапись.Вставить("ProxyUser" , СокрЛП(ИнтернетПрокси.Пользователь));
|
||
ПараметрыЗапись.Вставить("ProxyPassword", СокрЛП(ИнтернетПрокси.Пароль));
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
ЗаписьJSON = Новый ЗаписьJSON();
|
||
ЗаписьJSON.ПроверятьСтруктуру = Ложь;
|
||
ЗаписьJSON.УстановитьСтроку();
|
||
|
||
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапись);
|
||
Результат = ЗаписьJSON.Закрыть();
|
||
|
||
Возврат Результат;
|
||
#КонецЕсли
|
||
|
||
КонецФункции
|
||
|
||
// Обработать данные товарной позиции, формирование текста JSON
|
||
//
|
||
// Параметры:
|
||
// ТоварныеПозиции - Массив из Структура
|
||
// НормализоватьКодТРУ - Булево - Код товара ТРУ преобразовать к виду NNNNNNNNN.NNNNNNNNNYYYYMMMMZZZ
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка
|
||
//
|
||
Функция ПолучитьJSONТоварныеПозиции(ТоварныеПозиции, НормализоватьКодТРУ = Ложь) Экспорт
|
||
|
||
#Если ВебКлиент Тогда
|
||
Возврат ЭлектронныеСертификатыНСПКВызовСервера.ПолучитьJSONТоварныеПозиции(ТоварныеПозиции, НормализоватьКодТРУ);
|
||
#Иначе
|
||
ЗаписьJSON = Новый ЗаписьJSON();
|
||
ЗаписьJSON.ПроверятьСтруктуру = Ложь;
|
||
ЗаписьJSON.УстановитьСтроку();
|
||
Позиции = Новый Массив();
|
||
Для Каждого Позиция Из ТоварныеПозиции Цикл
|
||
Товар = Новый Структура();
|
||
Товар.Вставить("count" , Позиция.Количество);
|
||
Товар.Вставить("price" , Позиция.Цена * 100); // Цена за единицу товара в копейках
|
||
КодТовараТРУ = Позиция.КодТовараТРУ;
|
||
|
||
Если НормализоватьКодТРУ Тогда
|
||
КодТовараТРУ = СокрЛП(КодТовараТРУ);
|
||
КодТовараТРУ = СтрЗаменить(КодТовараТРУ, " ", "0");
|
||
Пока СтрДлина(КодТовараТРУ) < 30 Цикл
|
||
КодТовараТРУ = КодТовараТРУ + "0";
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
Товар.Вставить("truCode", КодТовараТРУ);
|
||
Если Позиция.Свойство("Артикул") Тогда
|
||
Товар.Вставить("articleCode", Позиция.Артикул);
|
||
КонецЕсли;
|
||
Товар.Вставить("articleNumber", Позиция.НомерПозиции);
|
||
Если Позиция.Свойство("НомерПозицииВозврата") Тогда
|
||
Товар.Вставить("originalArticleNumber", Позиция.НомерПозицииВозврата);
|
||
КонецЕсли;
|
||
Если Не ПустаяСтрока(Позиция.СертификатПоследниеЦифры) Тогда
|
||
ДополнительныйРеквизит = Новый Структура();
|
||
ДополнительныйРеквизит.Вставить("code", "certificateLastNumbers");
|
||
ДополнительныйРеквизит.Вставить("value", Лев(Позиция.СертификатПоследниеЦифры, 6));
|
||
МассивРеквизит = Новый Массив();
|
||
МассивРеквизит.Добавить(ДополнительныйРеквизит);
|
||
Товар.Вставить("additionalInfo", МассивРеквизит);
|
||
КонецЕсли;
|
||
Позиции.Добавить(Товар);
|
||
КонецЦикла;
|
||
ЗаписатьJSON(ЗаписьJSON, Позиции);
|
||
Результат = ЗаписьJSON.Закрыть();
|
||
|
||
Возврат Результат;
|
||
#КонецЕсли
|
||
|
||
КонецФункции
|
||
|
||
Функция ПараметрыВыполненияОперацииНаСервере() Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ТекстРезультата", "");
|
||
Результат.Вставить("СписокОшибок", "");
|
||
Результат.Вставить("ОснованиеФискальнойОперации", Неопределено);
|
||
Результат.Вставить("ПараметрыОперации"); // Структура
|
||
Результат.Вставить("ТипПлатежнойОперации", "");
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПредварительноеОдобрениеИспользованияЭС() Экспорт
|
||
|
||
Возврат "ПредварительноеОдобрениеИспользованияЭС"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПредварительноеОдобрениеВозвратаЭС() Экспорт
|
||
|
||
Возврат "ПредварительноеОдобрениеВозвратаЭС"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПередачаДанныхФискальногоЧека() Экспорт
|
||
|
||
Возврат "ПередачаДанныхФискальногоЧека"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПолучениеИдентификатораОперации() Экспорт
|
||
|
||
Возврат "ПолучениеИдентификатораОперации"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПолучениеСоставаКорзины() Экспорт
|
||
|
||
Возврат "ПолучениеСоставаКорзины"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПолучениеСпискаСертификатов() Экспорт
|
||
|
||
Возврат "ПолучениеСпискаСертификатов"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
Функция ТипПлатежнойОперацииПолучениеСпискаИдентификаторовКорзинПокупокТСП() Экспорт
|
||
|
||
Возврат "ПолучениеСпискаИдентификаторовКорзинПокупокТСП"; // Не локализовывать
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|