2555 lines
236 KiB
Plaintext
2555 lines
236 KiB
Plaintext
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Производить печать чека на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьФискализациюЧекаНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт;
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CheckFiscalization",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры);
|
||
// Будет сформировано сообщения в службу технической поддержки при ошибке.
|
||
ПараметрыВыполнениеКоманды.СообщенияВСлужбуТехническойПоддержки = Истина;
|
||
Если ПараметрыОперации.Свойство("АвтономнаяККТ") И ПараметрыОперации.АвтономнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяАвтономнаяККТ() Тогда
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент");
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ПараметрыОперации, ПараметрыВыполнениеКоманды, ДополнительныеПараметры);
|
||
КонецЕсли;
|
||
ИначеЕсли ПараметрыОперации.ОблачнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуютсяОблачныеККТ() Тогда
|
||
МодульОборудованиеОблачныеККТКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеОблачныеККТКлиент");
|
||
МодульОборудованиеОблачныеККТКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
Иначе
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Производить печать чека на фискальном устройстве пакетом.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьФискализациюЧекаНаФискальномУстройствеПакетом(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CheckFiscalizationPacket",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Производить инкассацию на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьИнкассациюНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("Encash",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
Если ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ЭтоККТБезПодключения(ПараметрыОперации) Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяАвтономнаяККТ() Тогда
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент");
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
Иначе
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Производить печать текста на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПечатьТекста(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Истина);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "PrintText");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать открытие смены на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьОткрытиеСменыНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
Контекст = Новый Структура();
|
||
Контекст.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
Контекст.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
Контекст.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
Контекст.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
Контекст.Вставить("КассаККМ" , ПараметрыОперации.КассаККМ);
|
||
Оповещение = Новый ОписаниеОповещения("НачатьОткрытиеСменыНаФискальномУстройстве_Завершение", ЭтотОбъект, Контекст);
|
||
|
||
ПараметрыОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("OpenShift",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
// Будет сформировано сообщения в службу технической поддержки при ошибке.
|
||
ПараметрыВыполнениеКоманды.СообщенияВСлужбуТехническойПоддержки = Истина;
|
||
|
||
Если ПараметрыОперации.АвтономнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяАвтономнаяККТ() Тогда
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент");
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.НачатьВыполнениеКоманды(Оповещение,
|
||
ИдентификаторКлиента, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
ИначеЕсли ПараметрыОперации.ОблачнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуютсяОблачныеККТ() Тогда
|
||
МодульОборудованиеОблачныеККТКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеОблачныеККТКлиент");
|
||
МодульОборудованиеОблачныеККТКлиент.НачатьВыполнениеКоманды(Оповещение,
|
||
ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
Иначе
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(Оповещение, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Завершение операции открытие смены на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// Результат - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании.
|
||
// Контекст - Структура
|
||
//
|
||
Процедура НачатьОткрытиеСменыНаФискальномУстройстве_Завершение(Результат, Контекст) Экспорт
|
||
|
||
Если Результат.Свойство("ПараметрыККТ") Тогда
|
||
ПараметрыККТ = Результат.ПараметрыККТ;
|
||
Если ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ЭтоККТБезПодключения(Контекст.ПараметрыОперации) Тогда
|
||
ПараметрыККТ.Вставить("ТипОборудования", ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ККТ"));
|
||
ПараметрыККТ.Вставить("ПризнакАвтономногоРежима", Истина);
|
||
КонецЕсли;
|
||
МенеджерОборудованияКлиентПереопределяемый.ПриОткрытииСменыНаККТ(Контекст.ИдентификаторУстройства, Результат.ПараметрыККТ);
|
||
КонецЕсли;
|
||
|
||
ПоказатьПредупреждениеДрайверСнятыйСПоддержки(Результат);
|
||
|
||
ВыполнитьОбработкуОповещения(Контекст.ОповещениеПриЗавершении, Результат);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать закрытие смены на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьЗакрытиеСменыНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CloseShift",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
// Будет сформировано сообщения в службу технической поддержки при ошибке.
|
||
ПараметрыВыполнениеКоманды.СообщенияВСлужбуТехническойПоддержки = Истина;
|
||
|
||
Если ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ЭтоККТБезПодключения(ПараметрыОперации) Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяАвтономнаяККТ() Тогда
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент");
|
||
МодульОборудованиеЧекопечатающиеАвтономныеУстройстваКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
ИначеЕсли ПараметрыОперации.ОблачнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуютсяОблачныеККТ() Тогда
|
||
МодульОборудованиеОблачныеККТКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеОблачныеККТКлиент");
|
||
МодульОборудованиеОблачныеККТКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
Иначе
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
Оповещение = Новый ОписаниеОповещения("НачатьЗакрытиеСменыНаФискальномУстройстве_Завершение", ЭтотОбъект, КонтекстОперации);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(Оповещение, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НачатьЗакрытиеСменыНаФискальномУстройстве_Завершение(Результат, КонтекстОперации) Экспорт
|
||
|
||
ПоказатьПредупреждениеДрайверСнятыйСПоддержки(Результат);
|
||
|
||
ВыполнитьОбработкуОповещения(КонтекстОперации.ОповещениеПриЗавершении, Результат);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать открытие денежного ящика фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьОткрытиеДенежногоЯщика(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт;
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "OpenCashDrawer");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Получение ширины строки в символах для фискального устройства.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПолучениеШириныСтрокиПечатающегоУстройства(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства = Неопределено, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "GetLineLength");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Производить аннулирование чека на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьАннулированиеЧекаНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("AnnulCheck",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Ложь);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать формирование отчета о текущем состоянии расчетов на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьФормированиеОтчетаОТекущемСостоянииРасчетов(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Истина);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "ReportCurrentStatusOfSettlements");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать формирование отчета отчет без гашения на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьФормированиеОтчетаБезГашения(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Истина);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "PrintXReport");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Производить получение параметров фискального устройства.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПолучениеПараметровФискальногоУстройства(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
Если ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ЭтоККТБезПодключения(ПараметрыОперации) Тогда
|
||
|
||
ПараметрыККТ = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыРегистрацииККТ();
|
||
ПараметрыККТ.Вставить("ТипОборудования", ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ККТ"));
|
||
ПараметрыККТ.Вставить("ПризнакАвтономногоРежима", Истина);
|
||
|
||
РезультатОперации = МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании(Истина);
|
||
РезультатОперации.Вставить("ПараметрыККТ" , ПараметрыККТ);
|
||
|
||
ВыполнитьОбработкуОповещения(ОповещениеПриЗавершении, РезультатОперации);
|
||
|
||
Иначе
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("GetDataKKT",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Получение текущего состояния фискального устройства.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПолучениеТекущегоСостоянияФискальногоУстройства(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("GetCurrentStatus",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать операцию ФН для фискального устройства.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьОперациюФНДляФискальногоУстройства(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("OperationFN",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать формирование чека коррекции на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьФормированиеЧекаКоррекцииНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("PrintReceiptCorrection",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
Если ПараметрыОперации.ОблачнаяККТ Тогда
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуютсяОблачныеККТ() Тогда
|
||
МодульОборудованиеОблачныеККТКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеЧекопечатающиеОблачныеККТКлиент");
|
||
МодульОборудованиеОблачныеККТКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении,
|
||
ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
Иначе
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет печать копии чека.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПечатьКопииЧека(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Истина);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Истина);
|
||
КонтекстОперации.Вставить("Команда" , "PrintCheckCopy");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет печать QR кода на фискальном устройстве.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства, если неопределенно - будет предложен выбор.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПечатьQRКодаНаФискальномУстройстве(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = Новый Структура();
|
||
КонтекстОперации.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
|
||
КонтекстОперации.Вставить("ИдентификаторКлиента" , ИдентификаторКлиента);
|
||
КонтекстОперации.Вставить("ИдентификаторУстройства", ИдентификаторУстройства);
|
||
КонтекстОперации.Вставить("ПараметрыОперации" , ПараметрыОперации);
|
||
КонтекстОперации.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);
|
||
КонтекстОперации.Вставить("ПодготовитьДанные" , Истина);
|
||
КонтекстОперации.Вставить("ОбработатьДанные" , Ложь);
|
||
КонтекстОперации.Вставить("Команда" , "PrintQRCode");
|
||
КонтекстОперации.Вставить("Результат", Истина);
|
||
|
||
ВыполнитьВыборФискальногоУстройства(КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет открытие сессии регистрации КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьОткрытиеСессииРегистрацииКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("OpenSessionRegistrationKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Ложь);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет закрытии сессии регистрации КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьЗакрытииСессииРегистрацииКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CloseSessionRegistrationKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Ложь);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начать подтверждение КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПодтверждениеКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("ConfirmKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Ложь);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет запрос КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПроверкиКМ.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПроверкуКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
Если ДополнительныеПараметры = Неопределено Тогда
|
||
ДополнительныеПараметры = МенеджерОборудованияКлиентСервер.ДополнительныеПараметрыОперации(Истина);
|
||
Иначе
|
||
Если ДополнительныеПараметры.Свойство("ОставитьПодключенным") Тогда
|
||
ДополнительныеПараметры.ОставитьПодключенным = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CheckKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
ПараметрыВыполнениеКоманды.Вставить("ОбработатьДанныеПриОшибке", Истина);
|
||
ПараметрыОперации.Вставить("ИдентификаторКлиента", ИдентификаторКлиента);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Осуществляет повторный запрос КМ, который выполняет проверку без ожидания ответа от удаленного сервера и без подтверждения пользователя.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПроверкиКМ.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПовторнуюПроверкуКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыОперации.ОжидатьПолученияОтветаПроверкиКМ = Ложь;
|
||
ПараметрыОперации.Вставить("ИдентификаторКлиента", ИдентификаторКлиента);
|
||
Для Каждого ЗапросКМ Из ПараметрыОперации.ЗапросыКМ Цикл
|
||
ЗапросКМ.ВыполнятьВалидацию = Ложь;
|
||
ЗапросКМ.ЗапросРазрешенияПродажиКМ = Ложь;
|
||
ЗапросКМ.ИгнорироватьРезультатПроверкиКМ = Истина;
|
||
КонецЦикла;
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("CheckKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
ПараметрыВыполнениеКоманды.Вставить("ОбработатьДанныеПриОшибке", Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Функция возвращает поддерживает ли фискальное устройство.
|
||
//
|
||
// Параметры:
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - Идентификатор устройства.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Фискальное устройство поддерживает проверку кодов маркировки
|
||
Функция ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(ИдентификаторУстройства) Экспорт
|
||
|
||
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(ИдентификаторУстройства);
|
||
|
||
КонецФункции
|
||
|
||
// Функция возвращает для фискального устройства версию ФФД.
|
||
//
|
||
// Параметры:
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - Идентификатор устройства.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено - Фискальное устройство поддерживает версию ФФД
|
||
Функция ФискальноеУстройствоПоддерживаетВерсиюФФД(ИдентификаторУстройства) Экспорт
|
||
|
||
Возврат ОборудованиеЧекопечатающиеУстройстваВызовСервера.ФискальноеУстройствоПоддерживаетВерсиюФФД(ИдентификаторУстройства);
|
||
|
||
КонецФункции
|
||
|
||
#Область ПакетнаяОбработка
|
||
|
||
#Область ФискализацияЧекаСОплатойКартой
|
||
|
||
// Возвращает структуру для заполнения данными оплаты эквайринговым терминалом и фискализации
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * ОповещениеВопросПользователю - ОписаниеОповещения - Описание оповещения пользователя, для самостоятельной выдачи
|
||
// сообщения, это оповещение будет вызвано в случае отрицательного ответа от эквайрингового
|
||
// терминала при оплате, в процедуру будут переданы результат выполнения пакета операций,
|
||
// а также структура содержащая контекст пакета, если требуется продолжить выполнение пакета,
|
||
// тогда нужно будет вызвать в модуле ОборудованиеЧекопечатающиеУстройстваКлиент процедуры
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение" или
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПовторитьОплату".
|
||
// передав туда этот контекст.
|
||
// Процедура оповещения содержит следующие параметры:
|
||
// Результат - Структура:
|
||
// * РезультатОперации - См. РезультатФискализацииЧекаСОплатойКартой
|
||
// * КонтекстОперации - Структура - контекст пакета операции который нужно передать в процедуру
|
||
// "ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение"
|
||
// для продолжения выполнения пакета
|
||
// ДополнительныеПараметры - Любой - значение переданное при создании оповещения
|
||
// * СлипЧекВТелеФискального - Булево, Неопределено - Выводить слип-чек в теле фискального, Истина - слип-чек будет выведен
|
||
// в теле фискального, Ложь - короткий слип-чек не будет выводиться, Неопределено - короткий слип-чек
|
||
// будет выводиться если поддерживает драйвер оборудования.
|
||
//
|
||
// Пример:
|
||
// Определение процедуры оповещения пользователя
|
||
// Процедура ВопросПользователюЗавершение(Результат, ДополнительныеПараметры)
|
||
// РезультатОперации = Результат.РезультатОперации;
|
||
// КонтекстОперации = Результат.КонтекстОперации;
|
||
// ...
|
||
// // продолжить выполнение пакета операций
|
||
// ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение(Истина, КонтекстОперации);
|
||
// КонецПроцедуры
|
||
//
|
||
Функция ПараметрыФискализацияЧекаСОплатойКартой() Экспорт
|
||
|
||
Результат = ПараметрыЭквайринговаяОперацияСФискализацией();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Выполняет оплату на эквайринговом терминале, а затем фискализацию чека с печатью слип-чека в теле фискального,
|
||
// если операция при фискализации закончилась неуспешно, тогда происходит аварийная отмена последней операции на
|
||
// эквайринговом терминале.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - Описание процедуры которая будет вызвана при завершении операции
|
||
// со следующими параметрами:
|
||
// * Результат - См. РезультатФискализацииЧекаСОплатойКартой
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения - идентификатор формы.
|
||
// ИдентификаторККТ - СправочникСсылка.ПодключаемоеОборудование - ККТ на котором будет печататься фискальный чек
|
||
// содержащий в себе слип-чек.
|
||
// ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции.
|
||
// ПараметрыОперации - См. ПараметрыФискализацияЧекаСОплатойКартой
|
||
// ДополнительныеПараметры - Структура - Дополнительные параметры которые можно передать в операции
|
||
// оплаты и фискализации.
|
||
Процедура НачатьФискализациюЧекаСОплатойКартой(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторККТ,
|
||
ИдентификаторЭТ, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
// Подготовить контекст пакета операций
|
||
КонтекстОперации = КонтекстЭквайринговойОперацииСФискализацией();
|
||
КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой";
|
||
|
||
КонтекстОперации.ОповещениеЗавершения = ОповещениеПриЗавершении;
|
||
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
|
||
КонтекстОперации.ИдентификаторККТ = ИдентификаторККТ;
|
||
КонтекстОперации.ИдентификаторЭТ = ИдентификаторЭТ;
|
||
ЗаполнитьЗначенияСвойств(КонтекстОперации, ПараметрыОперации);
|
||
|
||
ПодготовитьКонтекстПакетнойОперации(КонтекстОперации, ДополнительныеПараметры);
|
||
|
||
// Выбрать ЭТ если не указан конкретный
|
||
ОповещениеЗавершенияПодключения = Новый ОписаниеОповещения("НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперация",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПакетнаяОбработка_ВыборУстройства(ОповещениеЗавершенияПодключения, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Запускает продолжение выполнения пакета, после обработки вопроса пользователя, или же успешной операции на
|
||
// эквайринговом терминале
|
||
//
|
||
// Параметры:
|
||
// Результат - Булево - Если Истина, тогда продолжается выполнение операции, иначе вызывается оповещение
|
||
// пользователя о завершении работы пакета
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение(Результат, КонтекстОперации) Экспорт
|
||
|
||
ОписаниеОшибки = КонтекстОперации.РезультатВыполненияЭквайринговойОперации.ОписаниеОшибки;
|
||
|
||
Если Результат Тогда
|
||
НачатьЭкваринговуюОперациюСФискализацией_Фискализация(КонтекстОперации);
|
||
Иначе
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Запускает повторно эквайринговой операции.
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьФискализациюЧекаСОплатойКартой_ПовторитьОплату(КонтекстОперации) Экспорт
|
||
|
||
ОписаниеОшибки = КонтекстОперации.РезультатВыполненияЭквайринговойОперации.ОписаниеОшибки;
|
||
|
||
РезультатВыполнения = МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании();
|
||
РезультатВыполнения.Результат = Истина;
|
||
РезультатВыполнения.ОписаниеОшибки = ОписаниеОшибки;
|
||
РезультатВыполнения.ПодключенноеУстройство = КонтекстОперации.ПодключенныйЭТ;
|
||
НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперация(РезультатВыполнения, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПокупкаСЗачислением
|
||
|
||
// Возвращает структуру для заполнения данными выплаты эквайринговым терминалом и фискализации
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * ОповещениеВопросПользователю - ОписаниеОповещения - Описание оповещения пользователя, для самостоятельной выдачи
|
||
// сообщения, это оповещение будет вызвано в случае отрицательного ответа от эквайрингового
|
||
// терминала при оплате, в процедуру будут переданы результат выполнения пакета операций,
|
||
// а также структура содержащая контекст пакета, если требуется продолжить выполнение пакета,
|
||
// тогда нужно будет вызвать в модуле ОборудованиеЧекопечатающиеУстройстваКлиент процедуры
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение" или
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПовторитьОплату".
|
||
// передав туда этот контекст.
|
||
// Процедура оповещения содержит следующие параметры:
|
||
// Результат - Структура:
|
||
// * РезультатОперации - См. РезультатФискализацииЧекаСОплатойКартой
|
||
// * КонтекстОперации - Структура - контекст пакета операции который нужно передать в процедуру
|
||
// "ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение"
|
||
// для продолжения выполнения пакета
|
||
// ДополнительныеПараметры - Любой - значение переданное при создании оповещения
|
||
// * СлипЧекВТелеФискального - Булево, Неопределено - Выводить слип-чек в теле фискального, Истина - слип-чек будет выведен
|
||
// в теле фискального, Ложь - короткий слип-чек не будет выводиться, Неопределено - короткий слип-чек
|
||
// будет выводиться если поддерживает драйвер оборудования.
|
||
//
|
||
// Пример:
|
||
// Определение процедуры оповещения пользователя
|
||
// Процедура ВопросПользователюЗавершение(Результат, ДополнительныеПараметры)
|
||
// РезультатОперации = Результат.РезультатОперации;
|
||
// КонтекстОперации = Результат.КонтекстОперации;
|
||
// ...
|
||
// // продолжить выполнение пакета операций
|
||
// ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение(Истина, КонтекстОперации);
|
||
// КонецПроцедуры
|
||
//
|
||
Функция ПараметрыПокупкаСЗачислением() Экспорт
|
||
|
||
Результат = ПараметрыЭквайринговаяОперацияСФискализацией();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Выполняет оплату на эквайринговом терминале, а затем фискализацию чека с печатью слип-чека в теле фискального,
|
||
// если операция при фискализации закончилась неуспешно, тогда происходит аварийная отмена последней операции на
|
||
// эквайринговом терминале.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - Описание процедуры которая будет вызвана при завершении операции
|
||
// со следующими параметрами:
|
||
// * Результат - См. РезультатФискализацииЧекаСОплатойКартой
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения - идентификатор формы.
|
||
// ИдентификаторККТ - СправочникСсылка.ПодключаемоеОборудование - ККТ на котором будет печататься фискальный чек
|
||
// содержащий в себе слип-чек.
|
||
// ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции.
|
||
// ПараметрыОперации - См. ПараметрыФискализацияЧекаСОплатойКартой
|
||
// ДополнительныеПараметры - Структура - Дополнительные параметры которые можно передать в операции
|
||
// оплаты и фискализации.
|
||
Процедура НачатьПокупкаСЗачислением(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторККТ,
|
||
ИдентификаторЭТ, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
// Подготовить контекст пакета операций
|
||
КонтекстОперации = КонтекстЭквайринговойОперацииСФискализацией();
|
||
КонтекстОперации.ТипОперации = "ПокупкаСЗачислением";
|
||
|
||
КонтекстОперации.ОповещениеЗавершения = ОповещениеПриЗавершении;
|
||
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
|
||
КонтекстОперации.ИдентификаторККТ = ИдентификаторККТ;
|
||
КонтекстОперации.ИдентификаторЭТ = ИдентификаторЭТ;
|
||
ЗаполнитьЗначенияСвойств(КонтекстОперации, ПараметрыОперации);
|
||
|
||
ПодготовитьКонтекстПакетнойОперации(КонтекстОперации, ДополнительныеПараметры);
|
||
|
||
// Выбрать ЭТ если не указан конкретный
|
||
ОповещениеЗавершенияПодключения = Новый ОписаниеОповещения("НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперация",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПакетнаяОбработка_ВыборУстройства(ОповещениеЗавершенияПодключения, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Запускает продолжение выполнения пакета, после обработки вопроса пользователя, или же успешной операции на
|
||
// эквайринговом терминале
|
||
//
|
||
// Параметры:
|
||
// Результат - Булево - Если Истина, тогда продолжается выполнение операции, иначе вызывается оповещение
|
||
// пользователя о завершении работы пакета
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьПокупкаСЗачислением_ПродолжитьВыполнение(Результат, КонтекстОперации) Экспорт
|
||
|
||
ОписаниеОшибки = КонтекстОперации.РезультатВыполненияЭквайринговойОперации.ОписаниеОшибки;
|
||
|
||
Если Результат Тогда
|
||
НачатьЭкваринговуюОперациюСФискализацией_Фискализация(КонтекстОперации);
|
||
Иначе
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Запускает повторно эквайринговой операции.
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьПокупкаСЗачислением_ПовторитьОплату(КонтекстОперации) Экспорт
|
||
|
||
ОписаниеОшибки = КонтекстОперации.РезультатВыполненияЭквайринговойОперации.ОписаниеОшибки;
|
||
|
||
РезультатВыполнения = МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании();
|
||
РезультатВыполнения.Результат = Истина;
|
||
РезультатВыполнения.ОписаниеОшибки = ОписаниеОшибки;
|
||
РезультатВыполнения.ПодключенноеУстройство = КонтекстОперации.ПодключенныйЭТ;
|
||
НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперация(РезультатВыполнения, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПродажаСВыдачейНаличных
|
||
|
||
// Возвращает структуру для заполнения данными операции продажи с выдачей наличных
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыФискализацииЧекаВыдачи - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыФискализацииЧекаВозврата - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * ПризнакАгента - ПеречислениеСсылка.ПризнакиАгента - признак агента для автоматического формирования чека выдачи,
|
||
// см стандарт, по умолчанию Банковский платежный агент
|
||
// * ДанныеАгента - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеАгента
|
||
// * ДанныеПоставщика - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеПоставщика
|
||
// * СлипЧекВТелеФискального - Булево, Неопределено - Выводить слип-чек в теле фискального, Истина - слип-чек будет выведен
|
||
// в теле фискального, Ложь - короткий слип-чек не будет выводиться, Неопределено - короткий слип-чек
|
||
// будет выводиться если поддерживает драйвер оборудования.
|
||
// * ВыводитьУведомленияПользователя - Булево - если установлена Истина (по умолчанию), тогда при ошибке операции
|
||
// в пакете, будет выведено сообщение пользователю.
|
||
// * СуммаВыдачи - Число - сумма выдачи наличных денежных средств
|
||
Функция ПараметрыПродажаСВыдачейНаличных() Экспорт
|
||
|
||
ПараметрыОперацииФискализацииЧекаПродажи = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека();
|
||
ПараметрыВыполненияЭквайринговойОперации = Неопределено;
|
||
ПараметрыДанныеАгента = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеАгента();
|
||
ПараметрыДанныеПоставщика = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеПоставщика();
|
||
ПризнакАгента = ПредопределенноеЗначение("Перечисление.ПризнакиАгента.БанковскийПлатежныйАгент");
|
||
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
ПараметрыВыполненияЭквайринговойОперации = МодульОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
|
||
КонецЕсли;
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ПараметрыФискализацииЧека", ПараметрыОперацииФискализацииЧекаПродажи);
|
||
Результат.Вставить("ПараметрыФискализацииЧекаВыдачи", Неопределено);
|
||
Результат.Вставить("ПараметрыФискализацииЧекаВозврата", Неопределено);
|
||
Результат.Вставить("ПараметрыВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("ПризнакАгента", ПризнакАгента);
|
||
Результат.Вставить("ДанныеАгента", ПараметрыДанныеАгента);
|
||
Результат.Вставить("ДанныеПоставщика", ПараметрыДанныеПоставщика);
|
||
Результат.Вставить("СлипЧекВТелеФискального", Неопределено);
|
||
Результат.Вставить("ВыводитьУведомленияПользователя", Ложь);
|
||
Результат.Вставить("СуммаВыдачи", 0);
|
||
Результат.Вставить("ДокументОснованиеВыдачи", Неопределено);
|
||
Результат.Вставить("ДокументОснованиеВозврата", Неопределено);
|
||
Результат.Вставить("РеквизитыКартыQR", "");
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Заполняет параметры фискализации чека выдачи, по данным эквайринговой операции, параметров чека продажи,
|
||
// и данных переданных в параметрах операции, тогда они будут получены из чека продажи в соответствии
|
||
// с методическими указаниями для ФФД 1.05 и 1.1 ФНС России
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см. ПараметрыПродажаСВыдачейНаличных
|
||
//
|
||
Процедура ЗаполнитьПараметрыЧекаВыдачи(ПараметрыОперации) Экспорт
|
||
ПризнакАгента = ПараметрыОперации.ПризнакАгента;
|
||
ДанныеАгента = ПараметрыОперации.ДанныеАгента;
|
||
ДанныеПоставщика = ПараметрыОперации.ДанныеПоставщика;
|
||
ПараметрыФискализацииЧека = ПараметрыОперации.ПараметрыФискализацииЧека;
|
||
ПараметрыВыполненияЭквайринговойОперации = ПараметрыОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
СуммаНаличных = ПараметрыВыполненияЭквайринговойОперации.СуммаНаличных;
|
||
|
||
// создать чек выдачи наличных
|
||
ПараметрыЧека = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека();
|
||
|
||
СписокСвойствДляКопирования = "ДокументОснование, Организация, ТорговыйОбъект, Электронно, Отправляет1СSMS,
|
||
|Отправляет1СEmail, СистемаНалогообложения, АдресРасчетов, МестоРасчетов, НомерАвтомата, ОтправительEmail,
|
||
|ПокупательEmail, ПокупательНомер, Получатель, ПолучательИНН, СубъектПерсональныхДанных, ЕстьПерсональныеДанные,
|
||
|ТипПерсональныхДанных, СерийныйНомер, ОрганизацияНазвание, ОрганизацияИНН, ОрганизацияКПП, АдресМагазина,
|
||
|НаименованиеМагазина, НомерКассы, НомерСмены, ДатаВремя, ТекстШапки, ТекстПодвала, КопийЧека, КассаККМ";
|
||
ЗаполнитьЗначенияСвойств(ПараметрыЧека, ПараметрыФискализацииЧека, СписокСвойствДляКопирования);
|
||
|
||
Если ЗначениеЗаполнено(ПараметрыОперации.ДокументОснованиеВыдачи) Тогда
|
||
ПараметрыЧека.ДокументОснование = ПараметрыОперации.ДокументОснованиеВыдачи;
|
||
КонецЕсли;
|
||
ПараметрыЧека.ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.РасходДенежныхСредств");
|
||
ПараметрыЧека.НомерЧека = Число(ПараметрыФискализацииЧека.НомерЧека) + 1;
|
||
|
||
ЗаполнитьЗначенияСвойств(ПараметрыЧека.СведенияОПокупателе, ПараметрыФискализацииЧека.СведенияОПокупателе);
|
||
|
||
// Позиции чека для фискализации.
|
||
ПараметрыЧека.ПозицииЧека.Очистить();
|
||
СтрокаПозицииЧека = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыФискальнойСтрокиЧека();
|
||
СтрокаПозицииЧека.НомерСтрокиТовара = 1;
|
||
СтрокаПозицииЧека.Наименование = НСтр("ru = 'Выдача наличных денежных средств'");
|
||
СтрокаПозицииЧека.Количество = 1;
|
||
СтрокаПозицииЧека.Цена = СуммаНаличных;
|
||
СтрокаПозицииЧека.ЦенаСоСкидками = СуммаНаличных;
|
||
СтрокаПозицииЧека.Сумма = СуммаНаличных;
|
||
СтрокаПозицииЧека.СтавкаНДС = Неопределено;
|
||
СтрокаПозицииЧека.СуммаНДС = 0;
|
||
СтрокаПозицииЧека.ЕдиницаИзмерения = НСтр("ru = 'Штука'");
|
||
СтрокаПозицииЧека.КодЕдиницыИзмерения = "796";
|
||
СтрокаПозицииЧека.ДанныеАгента = ПараметрыЧека.ДанныеАгента;
|
||
СтрокаПозицииЧека.ДанныеПоставщика = ПараметрыЧека.ДанныеПоставщика;
|
||
СтрокаПозицииЧека.ПризнакСпособаРасчета = ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПередачаСПолнойОплатой");
|
||
СтрокаПозицииЧека.ПризнакПредметаРасчета = ПредопределенноеЗначение("Перечисление.ПризнакиПредметаРасчета.Услуга");
|
||
СтрокаПозицииЧека.ПризнакАгентаПоПредметуРасчета = ПризнакАгента;
|
||
СтрокаПозицииЧека.ДанныеАгента = ДанныеАгента;
|
||
СтрокаПозицииЧека.ДанныеПоставщика = ДанныеПоставщика;
|
||
|
||
|
||
ПараметрыЧека.ПозицииЧека.Добавить(СтрокаПозицииЧека);
|
||
|
||
ПараметрыЧека.ТаблицаОплат.Очистить();
|
||
СтрокаОплаты = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыСтрокиОплаты();
|
||
СтрокаОплаты.Сумма = СуммаНаличных;
|
||
СтрокаОплаты.ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Наличные");
|
||
ПараметрыЧека.ТаблицаОплат.Добавить(СтрокаОплаты);
|
||
|
||
ПараметрыЧека.ДетализацияОплаты.Очистить();
|
||
|
||
ПараметрыОперации.ПараметрыФискализацииЧекаВыдачи = ПараметрыЧека;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Заполняет параметры фискализации чека возврата формируемого в случае невыполнения фискализации чека выдачи,
|
||
// по данным параметров чека продажи
|
||
//
|
||
// Параметры:
|
||
// ПараметрыОперации - см. ПараметрыПродажаСВыдачейНаличных
|
||
//
|
||
Процедура ЗаполнитьПараметрыЧекаВозврата(ПараметрыОперации) Экспорт
|
||
|
||
ПараметрыФискализацииЧека = ПараметрыОперации.ПараметрыФискализацииЧека;
|
||
|
||
// создать чек возврата
|
||
ПараметрыЧека = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииЧекаКоррекции();
|
||
|
||
ЗаполнитьЗначенияСвойств(ПараметрыЧека, ПараметрыФискализацииЧека);
|
||
ПараметрыЧека.НомерЧека = Число(ПараметрыФискализацииЧека.НомерЧека) + 1;
|
||
ПараметрыЧека.ТипРасчета = ПредопределенноеЗначение("Перечисление.ТипыРасчетаДенежнымиСредствами.ВозвратДенежныхСредств");
|
||
Если ЗначениеЗаполнено(ПараметрыОперации.ДокументОснованиеВозврата) Тогда
|
||
ПараметрыЧека.ДокументОснование = ПараметрыОперации.ДокументОснованиеВозврата;
|
||
ИначеЕсли ЗначениеЗаполнено(ПараметрыОперации.ДокументОснованиеВыдачи) Тогда
|
||
ПараметрыЧека.ДокументОснование = ПараметрыОперации.ДокументОснованиеВыдачи;
|
||
КонецЕсли;
|
||
|
||
ПараметрыОперации.ПараметрыФискализацииЧекаВозврата = ПараметрыЧека;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет операцию оплата с выдачей наличных на эквайринговом терминале, затем фискализацию чека продажи
|
||
// фискализацию чека выдачи. Если фискализация чека продажи не проходит, тогда выполняется аварийная отмена
|
||
// последней эквайринговой операции. Если фискализация чека выдачи не проходит тогда выполняется отмена операции
|
||
// продажи с помощью чека коррекции, а затем выполняется аварийная отмена последней эквайринговой операции.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - Описание процедуры которая будет вызвана при завершении операции
|
||
// со следующими параметрами:
|
||
// * Результат - См. ОборудованиеЧекопечатающиеУстройстваКлиент.РезультатПродажаСВыдачейНаличных
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения - идентификатор формы.
|
||
// ИдентификаторККТ - СправочникСсылка.ПодключаемоеОборудование - ККТ на котором будет печататься фискальный чек
|
||
// содержащий в себе слип-чек.
|
||
// ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции.
|
||
// ПараметрыОперации - См. ПараметрыПродажаСВыдачейНаличных
|
||
// ДополнительныеПараметры - Структура - Дополнительные параметры которые можно передать в операции
|
||
// оплаты и фискализации.
|
||
Процедура НачатьПродажаСВыдачейНаличных(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторККТ,
|
||
ИдентификаторЭТ, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
КонтекстОперации = КонтекстПродажаСВыдачейНаличных();
|
||
КонтекстОперации.ОповещениеЗавершения = ОповещениеПриЗавершении;
|
||
КонтекстОперации.ИдентификаторКлиента = ИдентификаторКлиента;
|
||
КонтекстОперации.ИдентификаторККТ = ИдентификаторККТ;
|
||
КонтекстОперации.ИдентификаторЭТ = ИдентификаторЭТ;
|
||
ЗаполнитьЗначенияСвойств(КонтекстОперации, ПараметрыОперации);
|
||
|
||
ПодготовитьКонтекстПакетнойОперации(КонтекстОперации, ДополнительныеПараметры);
|
||
|
||
Если ПараметрыОперации.ПараметрыВыполненияЭквайринговойОперации = Неопределено Тогда
|
||
ПараметрыОперации.ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
КонецЕсли;
|
||
Если КонтекстОперации.ПараметрыФискализацииЧекаВыдачи = Неопределено Тогда
|
||
ЗаполнитьПараметрыЧекаВыдачи(ПараметрыОперации);
|
||
КонтекстОперации.ПараметрыФискализацииЧекаВыдачи = ПараметрыОперации.ПараметрыФискализацииЧекаВыдачи;
|
||
КонецЕсли;
|
||
Если КонтекстОперации.ПараметрыФискализацииЧекаВозврата = Неопределено Тогда
|
||
ЗаполнитьПараметрыЧекаВозврата(ПараметрыОперации);
|
||
КонтекстОперации.ПараметрыФискализацииЧекаВозврата = ПараметрыОперации.ПараметрыФискализацииЧекаВозврата;
|
||
КонецЕсли;
|
||
|
||
// Выбрать ЭТ если не указан конкретный
|
||
ОповещениеЗавершенияПодключения = Новый ОписаниеОповещения("НачатьПродажаСВыдачейНаличных_ЭквайринговаяОперация",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПакетнаяОбработка_ВыборУстройства(ОповещениеЗавершенияПодключения, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
// Возвращает структуру для заполнения данных открытия формы настройки регистрации ККТ
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ФискальноеУстройство - СправочникСсылка.ПодключаемоеОборудование - ссылка на ККТ
|
||
// * Организация - ОпределяемыйТип.ОрганизацияБПО
|
||
// * ТипОперации - Число
|
||
// * ОбработчикЗавершения - ОписаниеОповещения
|
||
Функция ПараметрыФормаНастройкиРегистрацииККТ() Экспорт
|
||
|
||
Параметры = Новый Структура();
|
||
Параметры.Вставить("ФискальноеУстройство");
|
||
Параметры.Вставить("Организация");
|
||
Параметры.Вставить("ТипОперации", 0);
|
||
Возврат Параметры;
|
||
|
||
КонецФункции
|
||
|
||
// Выполняет открытие формы настроек для регистрации ККТ
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения
|
||
// ПараметрыОткрытия - см. ПараметрыФормаНастройкиРегистрацииККТ
|
||
Процедура ОткрытьФормуНастройкиРегистрацииККТ(ОповещениеПриЗавершении, ПараметрыОткрытия) Экспорт
|
||
|
||
ОборудованиеЧекопечатающиеУстройстваКлиентЛокализация.ОткрытьФормуНастройкиРегистрацииККТ(ОповещениеПриЗавершении, ПараметрыОткрытия);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает планируемые статусы маркированного товара
|
||
//
|
||
// Возвращаемое значение:
|
||
// Соответствие
|
||
Функция ПланируемыеСтатусыМаркированногоТовара() Экспорт
|
||
|
||
Соответствие = Новый Соответствие();
|
||
|
||
// ++ Локализация
|
||
Соответствие.Вставить("ШтучныйТоварРеализован" , ПредопределенноеЗначение("Перечисление.ПланируемыйСтатусМаркируемогоТовара.ШтучныйТоварРеализован"));
|
||
Соответствие.Вставить("МерныйТоварВСтадииРеализации", ПредопределенноеЗначение("Перечисление.ПланируемыйСтатусМаркируемогоТовара.МерныйТоварВСтадииРеализации"));
|
||
Соответствие.Вставить("ШтучныйТоварВозвращен" , ПредопределенноеЗначение("Перечисление.ПланируемыйСтатусМаркируемогоТовара.ШтучныйТоварВозвращен"));
|
||
Соответствие.Вставить("ЧастьТовараВозвращена" , ПредопределенноеЗначение("Перечисление.ПланируемыйСтатусМаркируемогоТовара.ЧастьТовараВозвращена"));
|
||
Соответствие.Вставить("СтатусТовараНеИзменился" , ПредопределенноеЗначение("Перечисление.ПланируемыйСтатусМаркируемогоТовара.СтатусТовараНеИзменился"));
|
||
// -- Локализация
|
||
|
||
Возврат Соответствие;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение мера количества предмета расчета литр
|
||
//
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка.МераКоличестваПредметаРасчетаККТ
|
||
Функция МераКоличестваПредметаРасчетаЛитр() Экспорт
|
||
|
||
Возврат ПредопределенноеЗначение("Перечисление.МераКоличестваПредметаРасчетаККТ.Литр");
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение статус обработки запроса по умолчанию
|
||
//
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка
|
||
Функция СтатусОбработкиЗапросаПоУмолчанию() Экспорт
|
||
|
||
// ++ Локализация
|
||
Возврат ПредопределенноеЗначение("Перечисление.СтатусОбработкиЗапросаКМ.ПустаяСсылка");
|
||
// -- Локализация
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение статус результата ожидается
|
||
//
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка
|
||
Функция СтатусРезультатаОжидается() Экспорт
|
||
|
||
// ++ Локализация
|
||
Возврат ПредопределенноеЗначение("Перечисление.СтатусРезультатаЗапросаКМ.Ожидается");
|
||
// -- Локализация
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение статус товара по умолчанию
|
||
//
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка
|
||
Функция СтатусТовараПоУмолчанию() Экспорт
|
||
|
||
// ++ Локализация
|
||
Возврат ПредопределенноеЗначение("Перечисление.ОтветОИСМОСтатусеТовара.ПустаяСсылка");
|
||
// -- Локализация
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает значение статус результата по умолчанию
|
||
//
|
||
// Возвращаемое значение:
|
||
// ПеречислениеСсылка
|
||
Функция СтатусРезультатаПоУмолчанию() Экспорт
|
||
|
||
// ++ Локализация
|
||
Возврат ПредопределенноеЗначение("Перечисление.СтатусРезультатаЗапросаКМ.ПустаяСсылка");
|
||
// -- Локализация
|
||
|
||
КонецФункции
|
||
|
||
// Осуществляет запрос КМ без ожидания ответа.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьЗапросКМБезОжиданияОтвета(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("RequestKMKMNoWait",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область УстаревшиеПроцедурыИФункции
|
||
|
||
// Устарела: следует использовать НачатьПроверкуКМ.
|
||
// Осуществляет запрос КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьЗапросКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("RequestKM",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Истина, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устарела: следует использовать НачатьПроверкуКМ.
|
||
// Начать получения результатов запроса КМ.
|
||
//
|
||
// Параметры:
|
||
// ОповещениеПриЗавершении - ОписаниеОповещения - оповещение при завершении.
|
||
// ИдентификаторКлиента - ФормаКлиентскогоПриложения -идентификатор формы.
|
||
// ИдентификаторУстройства - СправочникСсылка.ПодключаемоеОборудование - идентификатор устройства.
|
||
// ПараметрыОперации - Структура - параметры выполнения операции.
|
||
// ДополнительныеПараметры - Структура - дополнительные команды.
|
||
//
|
||
Процедура НачатьПолученияРезультатовЗапросаКМ(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства, ПараметрыОперации, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды("GetProcessingKMResult",
|
||
"ОборудованиеЧекопечатающиеУстройства", ДополнительныеПараметры, Ложь, Истина);
|
||
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(ОповещениеПриЗавершении, ИдентификаторКлиента, ИдентификаторУстройства,
|
||
ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
#Область ПакетнаяОбработка
|
||
|
||
// Обрабатывает результат выбора эквайрингового терминала
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ПакетнаяОбработка_ВыборУстройстваЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
Результат = РезультатВыполнения.Результат;
|
||
|
||
Если Не Результат Тогда
|
||
// Эквайринговый терминал не выбран, завершить пакет операций
|
||
ЗавершитьПакетОпераций(Ложь, РезультатВыполнения.ОписаниеОшибки, КонтекстОперации);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ИдентификаторЭТ = РезультатВыполнения.ИдентификаторУстройства;
|
||
ИдентификаторКлиента = КонтекстОперации.ИдентификаторКлиента;
|
||
КонтекстОперации.ИдентификаторЭТ = ИдентификаторЭТ;
|
||
|
||
// Подключить ЭТ, если он не подключен (требуется для проверки возможности печати коротких слип-чеков)
|
||
Оповещение = Новый ОписаниеОповещения("ПакетнаяОбработка_ПодключениеУстройстваЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПодключенноеУстройство = МенеджерОборудованияКлиент.ПолучитьПодключенноеУстройство(ИдентификаторЭТ);
|
||
Если ПодключенноеУстройство = Неопределено Тогда
|
||
ТипыОборудования = Новый Массив();
|
||
ТипыОборудования.Добавить("ЭквайринговыйТерминал");
|
||
МенеджерОборудованияКлиент.НачатьПодключениеОборудования(Оповещение,
|
||
ИдентификаторКлиента,
|
||
ТипыОборудования,
|
||
ИдентификаторЭТ);
|
||
Иначе
|
||
РезультатВыполнения.ПодключенноеУстройство = ПодключенноеУстройство;
|
||
ВыполнитьОбработкуОповещения(Оповещение, РезультатВыполнения);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат подключения эквайрингового терминала
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ПакетнаяОбработка_ПодключениеУстройстваЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
Результат = РезультатВыполнения.Результат;
|
||
ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
ПодключенноеУстройство = РезультатВыполнения.ПодключенноеУстройство;
|
||
Оповещение = КонтекстОперации.ОповещениеЗавершенияПодключения;
|
||
|
||
Если Не Результат Тогда
|
||
// Не удалось подключить эквайринговый терминал
|
||
ЗавершитьПакетОпераций(Ложь, ОписаниеОшибки, КонтекстОперации);
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонтекстОперации.ПодключенныйЭТ = ПодключенноеУстройство;
|
||
|
||
ОпределитьВозможностьПечатиСлипЧекаВТелеФискального(КонтекстОперации);
|
||
|
||
// Подключить ЭТ, если он не подключен (требуется для проверки возможности печати коротких слип-чеков)
|
||
ВыполнитьОбработкуОповещения(Оповещение, РезультатВыполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат печати слип-чека как текстового документа
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ПакетнаяОбработка_ПечатьТекстаЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
Результат = КонтекстОперации.Результат;
|
||
ОписаниеОшибки = КонтекстОперации.ОписаниеОшибки;
|
||
|
||
ЗавершитьПакетОпераций(Результат, ОписаниеОшибки, КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область ЭквайринговаяОперацияСФискализацией
|
||
|
||
// Возвращает заполненную структуру результата выполнения пакета операций
|
||
//
|
||
// Параметры:
|
||
// РезультатОперации - Булево - Результат выполнения пакета операций
|
||
// ОписаниеОшибки - Строка - Описание ошибки выполнения пакета операции
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Результат - Булево - Результат выполнения пакета операций.
|
||
// * ОписаниеОшибки - Строка - Описание ошибки выполнения пакета операции.
|
||
// * РезультатВыполненияЭквайринговойОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧека - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатАварийнойОтменыОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * ПараметрыЭквайринговойОперации - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПакетнойОперацииВОчередиЧеков
|
||
Функция РезультатЭквайринговойОперацииСФискализацией(РезультатОперации, ОписаниеОшибки, КонтекстОперации) Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("Результат", РезультатОперации);
|
||
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
|
||
Если КонтекстОперации.ТипОперации = "ПокупкаСЗачислением" Тогда
|
||
Результат.Вставить("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ПокупкаСЗачислением"));
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
Результат.Вставить("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ФискализацияЧекаСОплатойКартой"));
|
||
Иначе
|
||
ВызватьИсключение СтрШаблон(НСтр("ru = 'Неизвестный тип операции %1'"), КонтекстОперации.ТипОперации);
|
||
КонецЕсли;
|
||
Результат.Вставить("РезультатФискализацииЧека", КонтекстОперации.РезультатФискализацииЧека);
|
||
Результат.Вставить("РезультатАварийнойОтменыОперации", КонтекстОперации.РезультатАварийнойОтменыОперации);
|
||
Результат.Вставить("РезультатВыполненияЭквайринговойОперации", КонтекстОперации.РезультатВыполненияЭквайринговойОперации);
|
||
Результат.Вставить("ПараметрыЭквайринговойОперации", Новый Структура());
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Начинает выполнение операции на эквайринговом терминале
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперация(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
// Проверить возможность выполнения пакета операций
|
||
ОписаниеОшибки = "";
|
||
Если Не ЭкваринговаяОперацияСФискализациейДопустима(КонтекстОперации, ОписаниеОшибки) Тогда
|
||
ЗавершитьПакетОпераций(Ложь, ОписаниеОшибки, КонтекстОперации);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// начать выполнение операций
|
||
Оповещение = Новый ОписаниеОповещения("НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперацияЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеОперацииНаЭквайринговомТерминале(Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ,
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации,
|
||
КонтекстОперации.ДополнительныеПараметры,
|
||
КонтекстОперации.ИдентификаторККТ);
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат выполнения эквайринговой операции, в случае успеха вставляет слип-чек,
|
||
// в тело фискального чека.
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьЭкваринговуюОперациюСФискализацией_ЭквайринговаяОперацияЗавершение(
|
||
РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
РезультатВыполнения.Вставить("СуммаОперации", КонтекстОперации.СуммаОперации);
|
||
КонтекстОперации.РезультатВыполненияЭквайринговойОперации = РезультатВыполнения;
|
||
|
||
Если РезультатВыполнения.Результат Тогда
|
||
ВставитьСлипЧекВТелоФискальногоЧека(КонтекстОперации);
|
||
НачатьЭкваринговуюОперациюСФискализацией_Фискализация(КонтекстОперации);
|
||
Иначе
|
||
ОбработатьОтрицательныйРезультатЭквайринговойОперацииСФискализацией(КонтекстОперации);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Запускает фискализацию кассового чека.
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьЭкваринговуюОперациюСФискализацией_Фискализация(КонтекстОперации) Экспорт
|
||
|
||
Оповещение = Новый ОписаниеОповещения("НачатьЭкваринговуюОперациюСФискализацией_ФискализацияЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
НачатьФискализациюЧекаНаФискальномУстройстве(Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
КонтекстОперации.ПараметрыФискализацииЧека,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результаты фискализации чека, в случае ошибки фискализации вызывает аварийную отмену последней операции
|
||
// эквайрингового терминала
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьЭкваринговуюОперациюСФискализацией_ФискализацияЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатФискализацииЧека = РезультатВыполнения;
|
||
Результат = РезультатВыполнения.Результат;
|
||
ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
|
||
Если Результат Тогда
|
||
Если КонтекстОперации.ПараметрыФискализацииЧека.Электронно Тогда
|
||
КонтекстОперации.Результат = Истина;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Электронный", КонтекстОперации);
|
||
Иначе
|
||
ЗавершитьПакетОпераций(Истина, ОписаниеОшибки, КонтекстОперации);
|
||
КонецЕсли;
|
||
Иначе
|
||
Если КонтекстОперации.РезультатВыполненияЭквайринговойОперации.Результат Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
Оповещение = Новый ОписаниеОповещения("НачатьЭкваринговуюОперациюСФискализацией_АварийнаяОтменаЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПараметрыОтменыЭквайринговойОперации = МодульОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
|
||
ЗаполнитьЗначенияСвойств(
|
||
ПараметрыОтменыЭквайринговойОперации,
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации,
|
||
,
|
||
"ТипТранзакции, ИдентификаторЗапроса");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеАварийнойОтменыОперации(Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ,
|
||
ПараметрыОтменыЭквайринговойОперации,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
Иначе
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результаты аварийной отмены последней операции эквайрингового терминала
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьЭкваринговуюОперациюСФискализацией_АварийнаяОтменаЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатАварийнойОтменыОперации = РезультатВыполнения;
|
||
КонтекстОперации.Результат = Ложь;
|
||
Если РезультатВыполнения.Результат Тогда
|
||
КонтекстОперации.ОписаниеОшибки = КонтекстОперации.РезультатФискализацииЧека.ОписаниеОшибки;
|
||
Иначе
|
||
КонтекстОперации.ОписаниеОшибки = КонтекстОперации.РезультатАварийнойОтменыОперации.ОписаниеОшибки;
|
||
КонецЕсли;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПродажаСВыдачейНаличных
|
||
|
||
// Начинает выполнение эквайринговой операции "Оплата с выдачей наличных"
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура НачатьПродажаСВыдачейНаличных_ЭквайринговаяОперация(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
// Проверить возможность выполнения пакета операций
|
||
ОписаниеОшибки = "";
|
||
Если Не ПродажаСВыдачейНаличныхДопустима(КонтекстОперации, ОписаниеОшибки) Тогда
|
||
ЗавершитьПакетОпераций(Ложь, ОписаниеОшибки, КонтекстОперации);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Оповещение = Новый ОписаниеОповещения(
|
||
"НачатьПродажаСВыдачейНаличных_ЭквайринговаяОперацияЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеОперацииНаЭквайринговомТерминале(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ,
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации,
|
||
КонтекстОперации.ДополнительныеПараметры,
|
||
КонтекстОперации.ИдентификаторККТ);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Начинает выполнение фискализации продажи
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура НачатьПродажаСВыдачейНаличных_ЭквайринговаяОперацияЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
РезультатВыполнения.Вставить("СуммаОперации", КонтекстОперации.СуммаОперации);
|
||
РезультатВыполнения.Вставить("СуммаНаличных", КонтекстОперации.СуммаВыдачи);
|
||
КонтекстОперации.РезультатВыполненияЭквайринговойОперации = РезультатВыполнения;
|
||
|
||
Результат = РезультатВыполнения.Результат;
|
||
ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
|
||
Если РезультатВыполнения.Результат Тогда
|
||
// Эквайринговая операция выполнена успешно, требуется произвести фискализацию продажи
|
||
Если КонтекстОперации.СлипЧекВТелеФискального Тогда
|
||
ВставитьСлипЧекВТелоФискальногоЧека(КонтекстОперации);
|
||
КонецЕсли;
|
||
|
||
Оповещение = Новый ОписаниеОповещения(
|
||
"НачатьПродажаСВыдачейНаличных_ФискализацияПродажиЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
|
||
НачатьФискализациюЧекаНаФискальномУстройстве(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
КонтекстОперации.ПараметрыФискализацииЧека,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
Иначе
|
||
// Эквайринговая операция не выполнена, завершение пакета операций
|
||
Если КонтекстОперации.ВыводитьУведомленияПользователя Тогда
|
||
ТекстСообщения = НСтр("ru = 'Оплата с выдачей наличных не удалась.%1%2'");
|
||
ТекстСообщения = СтрШаблон(ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
ОбщегоНазначенияБПОКлиент.СообщитьПользователю(ТекстСообщения);
|
||
КонецЕсли;
|
||
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат выполнения фискализации продажи
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура НачатьПродажаСВыдачейНаличных_ФискализацияПродажиЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатФискализацииЧека = РезультатВыполнения;
|
||
|
||
Результат = РезультатВыполнения.Результат;
|
||
ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
|
||
Если Результат Тогда
|
||
// Фискализация продажи выполнена успешно, требуется произвести фискализацию выдачи
|
||
|
||
Оповещение = Новый ОписаниеОповещения("НачатьПродажаСВыдачейНаличных_ФискализацияВыдачиЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
НачатьФискализациюЧекаНаФискальномУстройстве(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
КонтекстОперации.ПараметрыФискализацииЧекаВыдачи,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
Иначе
|
||
// продажа не выполнена, отмена эквайринговой операции
|
||
Если КонтекстОперации.ВыводитьУведомленияПользователя Тогда
|
||
ТекстСообщения = НСтр("ru = 'Не удалось произвести фискализацию чека продажи.%1%2'");
|
||
ТекстСообщения = СтрШаблон(ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
ОбщегоНазначенияБПОКлиент.СообщитьПользователю(ТекстСообщения);
|
||
КонецЕсли;
|
||
// фискализация не удалась, требуется произвести отмену операции на ЭТ
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
Оповещение = Новый ОписаниеОповещения(
|
||
"НачатьПродажаСВыдачейНаличных_АварийнаяОтменаЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
ПараметрыОтменыЭквайринговойОперации = МодульОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
|
||
ЗаполнитьЗначенияСвойств(
|
||
ПараметрыОтменыЭквайринговойОперации,
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации,
|
||
,
|
||
"ТипТранзакции, ИдентификаторЗапроса");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеАварийнойОтменыОперации(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ,
|
||
ПараметрыОтменыЭквайринговойОперации,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат выполнения фискализации выдачи, в случае не удачи выполняет фискализацию чека возврата
|
||
// и аварийную отмену последней эквайринговой операции. Если операция успешна, тогда операция завершается.
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура НачатьПродажаСВыдачейНаличных_ФискализацияВыдачиЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатФискализацииЧекаВыдачи = РезультатВыполнения;
|
||
Результат = РезультатВыполнения.Результат;
|
||
|
||
Если Результат Тогда
|
||
Если КонтекстОперации.ПараметрыФискализацииЧекаВыдачи.Электронно Тогда
|
||
КонтекстОперации.Результат = Истина;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Электронный", КонтекстОперации);
|
||
Иначе
|
||
ЗавершитьПакетОпераций(Истина, "", КонтекстОперации);
|
||
КонецЕсли;
|
||
Иначе
|
||
// Фискализация не удалась, требуется произвести отмену фискализации продажи и отмену операции на ЭТ
|
||
Оповещение = Новый ОписаниеОповещения(
|
||
"НачатьПродажаСВыдачейНаличных_ФискализацияВозвратаПродажиЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
|
||
НачатьФискализациюЧекаНаФискальномУстройстве(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
КонтекстОперации.ПараметрыФискализацииЧекаВозврата,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат выполнения фискализации возврата продажи, и выполняет аварийную отмену последней
|
||
// эквайринговой операции.
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. ОборудованиеЧекопечатающиеУстройстваКлиент.КонтекстПродажаСВыдачейНаличных
|
||
Процедура НачатьПродажаСВыдачейНаличных_ФискализацияВозвратаПродажиЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатФискализацииЧекаВозврата = РезультатВыполнения;
|
||
Результат = РезультатВыполнения.Результат;
|
||
|
||
// Независимо от результата выполнить аварийную отмену эквайринговой операции
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
Оповещение = Новый ОписаниеОповещения(
|
||
"НачатьПродажаСВыдачейНаличных_АварийнаяОтменаЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
МодульОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеАварийнойОтменыОперации(
|
||
Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ,
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обрабатывает результат выполнения аварийной отмены последней эквайринговой операции
|
||
//
|
||
// Параметры:
|
||
// РезультатВыполнения - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура НачатьПродажаСВыдачейНаличных_АварийнаяОтменаЗавершение(РезультатВыполнения, КонтекстОперации) Экспорт
|
||
|
||
КонтекстОперации.РезультатАварийнойОтменыОперации = РезультатВыполнения;
|
||
|
||
Если РезультатВыполнения.Результат Тогда
|
||
// аварийная отмена выполнена успешно
|
||
Если ЗначениеЗаполнено(КонтекстОперации.РезультатФискализацииЧекаВыдачи) Тогда
|
||
// отмена в момент фискализации чека выдачи
|
||
ОписаниеОшибки = КонтекстОперации.РезультатФискализацииЧекаВыдачи.ОписаниеОшибки;
|
||
ТекстСообщения = НСтр("ru = 'Фискализация чека выдачи не выполнена.%1%2'");
|
||
ТекстСообщения = СтрШаблон(ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
Если Не КонтекстОперации.РезультатФискализацииЧекаВозврата.Результат Тогда
|
||
// чек возврата неудачен
|
||
ОписаниеОшибки = КонтекстОперации.РезультатФискализацииЧекаВозврата.ОписаниеОшибки;
|
||
ТекстСообщенияКоррекции = НСтр("ru = '%1%2Фискализация чека возврата не выполнена.%2%3'");
|
||
ТекстСообщенияКоррекции = СтрШаблон(ТекстСообщенияКоррекции, ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
КонецЕсли;
|
||
Иначе
|
||
// отмена в момент фискализации чека продажи
|
||
ОписаниеОшибки = КонтекстОперации.РезультатФискализацииЧека.ОписаниеОшибки;
|
||
ТекстСообщения = НСтр("ru = 'Фискализация чека продажи не выполнена.%1%2'");
|
||
ТекстСообщения = СтрШаблон(ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
КонецЕсли;
|
||
Иначе
|
||
// аварийная отмена оплаты с выдачей наличных не удалась
|
||
ОписаниеОшибки = КонтекстОперации.РезультатАварийнойОтменыОперации.ОписаниеОшибки;
|
||
ТекстСообщения = НСтр("ru = 'Аварийная отмена оплаты с выдачей наличных не выполнена.%1%2'");
|
||
ТекстСообщения = СтрШаблон(ТекстСообщения, Символы.ПС, ОписаниеОшибки);
|
||
КонецЕсли;
|
||
Если КонтекстОперации.ВыводитьУведомленияПользователя Тогда
|
||
ОбщегоНазначенияБПОКлиент.СообщитьПользователю(ТекстСообщения);
|
||
КонецЕсли;
|
||
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает заполненную структуру результата выполнения пакета операций
|
||
//
|
||
// Параметры:
|
||
// РезультатОперации - Булево - Результат выполнения пакета операций
|
||
// ОписаниеОшибки - Строка - Описание ошибки выполнения пакета операции
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Результат - Булево - Результат выполнения пакета операций.
|
||
// * ОписаниеОшибки - ИнформацияОбОшибке - Описание ошибки выполнения пакета операции.
|
||
// * РезультатВыполненияЭквайринговойОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧека - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧекаВыдачи - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧекаВозврата - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатАварийнойОтменыОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * ПараметрыЭквайринговойОперации - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПакетнойОперацииВОчередиЧеков
|
||
// * ПараметрыПродажаСВыдачейНаличных - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПакетнойОперацииВОчередиЧеков
|
||
Функция РезультатПродажаСВыдачейНаличных(РезультатОперации, ОписаниеОшибки, КонтекстОперации) Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("Результат", РезультатОперации);
|
||
Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки);
|
||
Результат.Вставить("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыПакетнойОперацииВОчередиЧеков.ПродажаСВыдачейНаличных"));
|
||
Результат.Вставить("РезультатФискализацииЧека", КонтекстОперации.РезультатФискализацииЧека);
|
||
Результат.Вставить("РезультатФискализацииЧекаВыдачи", КонтекстОперации.РезультатФискализацииЧекаВыдачи);
|
||
Результат.Вставить("РезультатФискализацииЧекаВозврата", КонтекстОперации.РезультатФискализацииЧекаВозврата);
|
||
Результат.Вставить("РезультатАварийнойОтменыОперации", КонтекстОперации.РезультатАварийнойОтменыОперации);
|
||
Результат.Вставить("РезультатВыполненияЭквайринговойОперации", КонтекстОперации.РезультатВыполненияЭквайринговойОперации);
|
||
Результат.Вставить("ПараметрыЭквайринговойОперации", Новый Структура());
|
||
Результат.Вставить("ПараметрыПродажаСВыдачейНаличных", Новый Структура());
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру контекст выполнения пакета операций
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ТипОперации - Строка - тип операции
|
||
// * Результат - Булево - результат выполнения пакета операций
|
||
// * ОписаниеОшибки - Строка - Описание ошибки пакета операций
|
||
// * ОповещениеЗавершения - ОписаниеОповещения - Оповещение вызываемое при завершении выполнения пакета
|
||
// * ИдентификаторКлиента - ФормаКлиентскогоПриложения - идентификатор формы.
|
||
// * ИдентификаторККТ - СправочникСсылка.ПодключаемоеОборудование - ККТ на котором будет печататься фискальный чек
|
||
// содержащий в себе слип-чек
|
||
// * ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции
|
||
// * ПодключенныйЭТ - Структура - параметры подключенного терминала
|
||
// * ПараметрыФискализацииЧека - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыФискализацииЧекаВыдачи -см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыФискализацииЧекаВозврата - см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - см. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * РезультатВыполненияЭквайринговойОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧека - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧекаВыдачи - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧекаВозврата - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатАварийнойОтменыОперации - см. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * ВыводитьУведомленияПользователя - Булево - если установлена Истина (по умолчанию), тогда при ошибке операции
|
||
// в пакете, будет выведено сообщение пользователю.
|
||
// * ОставитьПодключенным - Булево - Оставить оборудование подключенным после выполнения пакета
|
||
// * ДополнительныеПараметры - Структура - Дополнительные параметры которые можно передать в операции
|
||
// оплаты и фискализации
|
||
// * РеквизитыКартыQR - Строка
|
||
//
|
||
Функция КонтекстПродажаСВыдачейНаличных() Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ТипОперации", "ПродажаСВыдачейНаличных");
|
||
Результат.Вставить("Результат", Ложь);
|
||
Результат.Вставить("ОписаниеОшибки", "");
|
||
Результат.Вставить("ОповещениеЗавершения", Неопределено);
|
||
Результат.Вставить("ИдентификаторКлиента", Неопределено);
|
||
Результат.Вставить("ИдентификаторККТ", Неопределено);
|
||
Результат.Вставить("ИдентификаторЭТ", Неопределено);
|
||
Результат.Вставить("ПодключенныйЭТ", Неопределено);
|
||
Результат.Вставить("ПараметрыФискализацииЧека", Неопределено);
|
||
Результат.Вставить("ПараметрыФискализацииЧекаВозврата", Неопределено);
|
||
Результат.Вставить("ПараметрыФискализацииЧекаВыдачи", Неопределено);
|
||
Результат.Вставить("ПараметрыВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатФискализацииЧека", Неопределено);
|
||
Результат.Вставить("РезультатФискализацииЧекаВозврата", Неопределено);
|
||
Результат.Вставить("РезультатФискализацииЧекаВыдачи", Неопределено);
|
||
Результат.Вставить("РезультатАварийнойОтменыОперации", Неопределено);
|
||
Результат.Вставить("СлипЧекВТелеФискального", Неопределено);
|
||
Результат.Вставить("ВыводитьУведомленияПользователя", Неопределено);
|
||
Результат.Вставить("ОставитьПодключенным", Ложь);
|
||
Результат.Вставить("ДополнительныеПараметры", Новый Структура());
|
||
Результат.Вставить("ПризнакАгента", Неопределено);
|
||
Результат.Вставить("ДанныеАгента", Неопределено);
|
||
Результат.Вставить("ДанныеПоставщика", Неопределено);
|
||
Результат.Вставить("СуммаВыдачи", 0);
|
||
Результат.Вставить("СуммаОперации", 0);
|
||
Результат.Вставить("РеквизитыКартыQR", "");
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
Процедура ВыполнитьВыборФискальногоУстройства(КонтекстОперации)
|
||
|
||
Если КонтекстОперации.ИдентификаторУстройства = Неопределено Или ПустаяСтрока(КонтекстОперации.ИдентификаторУстройства) Тогда
|
||
|
||
ПоддерживаемыеТипы = МенеджерОборудованияКлиентСервер.ПараметрыТипыОборудования();
|
||
ПоддерживаемыеТипы.ПринтерЧеков = Истина;
|
||
ПоддерживаемыеТипы.ККТ = Истина;
|
||
|
||
Оповещение = Новый ОписаниеОповещения("ВыполнитьОперациюНаФискальномУстройстве", ЭтотОбъект, КонтекстОперации);
|
||
МенеджерОборудованияКлиент.ВыбратьУстройство(Оповещение, ПоддерживаемыеТипы,
|
||
НСтр("ru='Выберите фискальное устройство'"),
|
||
НСтр("ru='Фискальное устройство не подключено.'"),
|
||
НСтр("ru='Фискальное устройство не выбрано.'"));
|
||
|
||
Иначе
|
||
ВыполнитьОперациюНаФискальномУстройстве(КонтекстОперации, КонтекстОперации);
|
||
КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВыполнитьОперациюНаФискальномУстройстве(РезультатВыбора, КонтекстОперации) Экспорт
|
||
|
||
Если РезультатВыбора.Результат Тогда
|
||
ПараметрыВыполнениеКоманды = МенеджерОборудованияКлиентСервер.ПараметрыВыполнениеКоманды(КонтекстОперации.Команда,
|
||
"ОборудованиеЧекопечатающиеУстройства", КонтекстОперации.ДополнительныеПараметры,
|
||
КонтекстОперации.ПодготовитьДанные, КонтекстОперации.ОбработатьДанные);
|
||
МенеджерОборудованияКлиент.НачатьВыполнениеКоманды(КонтекстОперации.ОповещениеПриЗавершении, КонтекстОперации.ИдентификаторКлиента,
|
||
РезультатВыбора.ИдентификаторУстройства, КонтекстОперации.ПараметрыОперации, ПараметрыВыполнениеКоманды);
|
||
Иначе
|
||
ВыполнитьОбработкуОповещения(КонтекстОперации.ОповещениеПриЗавершении, РезультатВыбора);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПоказатьПредупреждениеДрайверСнятыйСПоддержки(Результат)
|
||
|
||
Если Результат.Свойство("ДрайверСнятСПоддержки") И Результат.ДрайверСнятСПоддержки
|
||
И Результат.Свойство("СообщениеПриИспользовании") И Результат.СообщениеПриИспользовании Тогда
|
||
ТекстЗаголовок = НСтр("ru = 'Используемый драйвер устарел и снят с поддержки.'");
|
||
ТекстПредупреждения =
|
||
Строка(Результат.ИдентификаторУстройства) + Символы.ПС +
|
||
НСтр("ru = 'Использование данного драйвера может приводить к некорректному формированию фискальных данных на ККТ.'") + Символы.ПС +
|
||
НСтр("ru = 'Необходимо использовать актуальную версию драйвера ККТ для данного производителя.'") + Символы.ПС +
|
||
НСтр("ru = 'Перенастройте оборудование в разделе: «Поддержка оборудования – Подключаемое оборудование»'");
|
||
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения, 0, ТекстЗаголовок);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область ПакетнаяОбработка
|
||
|
||
// Запустить выбор эквайрингового терминала
|
||
//
|
||
// Параметры:
|
||
// ОповещениеЗавершенияПодключения - ОписаниеОповещения
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ПакетнаяОбработка_ВыборУстройства(ОповещениеЗавершенияПодключения, КонтекстОперации)
|
||
|
||
ИдентификаторЭТ = КонтекстОперации.ИдентификаторЭТ;
|
||
КонтекстОперации.Вставить("ОповещениеЗавершенияПодключения", ОповещениеЗавершенияПодключения);
|
||
// Выбрать ЭТ если не указан конкретный
|
||
Оповещение = Новый ОписаниеОповещения("ПакетнаяОбработка_ВыборУстройстваЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
Если ИдентификаторЭТ = Неопределено Или ПустаяСтрока(ИдентификаторЭТ) Тогда
|
||
ПоддерживаемыеТипы = МенеджерОборудованияКлиентСервер.ПараметрыТипыОборудования();
|
||
ПоддерживаемыеТипы.ЭквайринговыйТерминал = Истина;
|
||
МенеджерОборудованияКлиент.ВыбратьУстройство(Оповещение,
|
||
ПоддерживаемыеТипы,
|
||
НСтр("ru='Выберите эквайринговый терминал'"),
|
||
НСтр("ru='Эквайринговый терминал не подключен.'"),
|
||
НСтр("ru='Эквайринговый терминал не выбран.'"));
|
||
Иначе
|
||
РезультатВыполнения = МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании();
|
||
РезультатВыполнения.Результат = Истина;
|
||
РезультатВыполнения.ИдентификаторУстройства = ИдентификаторЭТ;
|
||
ВыполнитьОбработкуОповещения(Оповещение, РезультатВыполнения);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#Область ЭквайринговаяОперацияСФискализацией
|
||
|
||
// Возвращает структуру для заполнения данными операции с эквайринговым терминалом и фискализации
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * ОповещениеВопросПользователю - ОписаниеОповещения - Описание оповещения пользователя, для самостоятельной выдачи
|
||
// сообщения, это оповещение будет вызвано в случае отрицательного ответа от эквайрингового
|
||
// терминала при оплате, в процедуру будут переданы результат выполнения пакета операций,
|
||
// а также структура содержащая контекст пакета, если требуется продолжить выполнение пакета,
|
||
// тогда нужно будет вызвать в модуле ОборудованиеЧекопечатающиеУстройстваКлиент процедуры
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение" или
|
||
// "НачатьФискализациюЧекаСОплатойКартой_ПовторитьОплату".
|
||
// передав туда этот контекст.
|
||
// Процедура оповещения содержит следующие параметры:
|
||
// Результат - Структура:
|
||
// * РезультатОперации - См. РезультатФискализацииЧекаСОплатойКартой
|
||
// * КонтекстОперации - Структура - контекст пакета операции который нужно передать в процедуру
|
||
// "ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение"
|
||
// для продолжения выполнения пакета
|
||
// ДополнительныеПараметры - Любой - значение переданное при создании оповещения
|
||
// * СлипЧекВТелеФискального - Булево, Неопределено - Выводить слип-чек в теле фискального, Истина - слип-чек будет выведен
|
||
// в теле фискального, Ложь - короткий слип-чек не будет выводиться, Неопределено - короткий слип-чек
|
||
// будет выводиться если поддерживает драйвер оборудования.
|
||
//
|
||
// Пример:
|
||
// Определение процедуры оповещения пользователя
|
||
// Процедура ВопросПользователюЗавершение(Результат, ДополнительныеПараметры)
|
||
// РезультатОперации = Результат.РезультатОперации;
|
||
// КонтекстОперации = Результат.КонтекстОперации;
|
||
// ...
|
||
// // продолжить выполнение пакета операций
|
||
// ОборудованиеЧекопечатающиеУстройстваКлиент.НачатьФискализациюЧекаСОплатойКартой_ПродолжитьВыполнение(Истина, КонтекстОперации);
|
||
// КонецПроцедуры
|
||
//
|
||
Функция ПараметрыЭквайринговаяОперацияСФискализацией()
|
||
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
ПараметрыВыполненияЭквайринговойОперации = МодульОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
|
||
КонецЕсли;
|
||
ПараметрыОперацииФискализацииЧека = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека();
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ПараметрыФискализацииЧека", ПараметрыОперацииФискализацииЧека);
|
||
Результат.Вставить("ПараметрыВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("ОповещениеВопросПользователю", Неопределено);
|
||
Результат.Вставить("СлипЧекВТелеФискального", Неопределено);
|
||
Результат.Вставить("РеквизитыКартыQR", "");
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Возвращает структуру, контекст выполнения пакета операций
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ТипОперации - Строка - тип операции
|
||
// * Результат - Булево - результат выполнения пакета операций
|
||
// * ОписаниеОшибки - Строка - Описание ошибки пакета операций
|
||
// * ОповещениеЗавершения - ОписаниеОповещения - Оповещение вызываемое при завершении выполнения пакета
|
||
// * ИдентификаторКлиента - ФормаКлиентскогоПриложения - идентификатор формы.
|
||
// * ИдентификаторККТ - СправочникСсылка.ПодключаемоеОборудование - ККТ на котором будет печататься фискальный чек
|
||
// содержащий в себе слип-чек
|
||
// * ИдентификаторЭТ - СправочникСсылка.ПодключаемоеОборудование - Эквайринговый терминал для обработки операции
|
||
// * ПодключенныйЭТ - Структура - параметры подключенного терминала
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * РезультатВыполненияЭквайринговойОперации - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатФискализацииЧека - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатАварийнойОтменыОперации - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * ОповещениеВопросПользователю - ОписаниеОповещения - Описание оповещения пользователя, для самостоятельной выдачи
|
||
// сообщения, это оповещение будет вызвано в случае отрицательного ответа от эквайрингового
|
||
// терминала при оплате, в процедуру будут переданы результат выполнения пакета операций,
|
||
// а также структура содержащая контекст пакета.
|
||
// * ОставитьПодключенным - Булево - Оставить оборудование подключенным после выполнения пакета
|
||
// * ДополнительныеПараметры - Структура - Дополнительные параметры которые можно передать в операции
|
||
// оплаты и фискализации
|
||
// * РеквизитыКартыQR - Строка
|
||
Функция КонтекстЭквайринговойОперацииСФискализацией() Экспорт
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ТипОперации", "");
|
||
Результат.Вставить("Результат", Ложь);
|
||
Результат.Вставить("ОписаниеОшибки", "");
|
||
Результат.Вставить("ОповещениеЗавершения", Неопределено);
|
||
Результат.Вставить("ИдентификаторКлиента", Неопределено);
|
||
Результат.Вставить("ИдентификаторККТ", Неопределено);
|
||
Результат.Вставить("ИдентификаторЭТ", Неопределено);
|
||
Результат.Вставить("ПодключенныйЭТ", Неопределено);
|
||
Результат.Вставить("ИдентификаторЗаписи", Неопределено);
|
||
Результат.Вставить("ПараметрыФискализацииЧека", Неопределено);
|
||
Результат.Вставить("ПараметрыВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатФискализацииЧека", Неопределено);
|
||
Результат.Вставить("РезультатАварийнойОтменыОперации", Неопределено);
|
||
Результат.Вставить("СлипЧекВТелеФискального", Неопределено);
|
||
Результат.Вставить("ОповещениеВопросПользователю", Неопределено);
|
||
Результат.Вставить("ОставитьПодключенным", Ложь);
|
||
Результат.Вставить("ДополнительныеПараметры", Новый Структура());
|
||
Результат.Вставить("СуммаОперации", 0);
|
||
Результат.Вставить("РеквизитыКартыQR", "");
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Задает вопрос пользователю, или же вызывает оповещение переданное в параметрах операции
|
||
// переданной в процедуру "НачатьФискализациюЧекаСОплатойКартой"
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ОбработатьОтрицательныйРезультатЭквайринговойОперацииСФискализацией(КонтекстОперации)
|
||
|
||
РезультатВыполнения = КонтекстОперации.РезультатВыполненияЭквайринговойОперации;
|
||
ОповещениеВопросПользователю = КонтекстОперации.ОповещениеВопросПользователю;
|
||
ОписаниеОшибки = РезультатВыполнения.ОписаниеОшибки;
|
||
|
||
Если ОповещениеВопросПользователю <> Неопределено Тогда
|
||
// Пользователь создал свое оповещение
|
||
Результат = Новый Структура("РезультатОперации, КонтекстОперации");
|
||
Результат.КонтекстОперации = КонтекстОперации;
|
||
Результат.РезультатОперации = РезультатЭквайринговойОперацииСФискализацией(Ложь, ОписаниеОшибки, КонтекстОперации);
|
||
ВыполнитьОбработкуОповещения(ОповещениеВопросПользователю, Результат);
|
||
Иначе
|
||
КонтекстОперации.Результат = Ложь;
|
||
КонтекстОперации.ОписаниеОшибки = ОписаниеОшибки;
|
||
ВывестиСлипЧекКакТекстовыйДокумент("Отказ", КонтекстОперации);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет проверку допустимости выполнения операции
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - См. КонтекстЭквайринговойОперацииСФискализацией.
|
||
// ОписаниеОшибки - Строка - Описание ошибки параметра операции
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Возвращает истина если переданные параметры операции корректны
|
||
Функция ЭкваринговаяОперацияСФискализациейДопустима(КонтекстОперации, ОписаниеОшибки)
|
||
|
||
ОписаниеОшибки = "";
|
||
// Используется подсистема "Платежные системы"
|
||
Если Не ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
ТекстОшибки = НСтр("ru = 'Подсистема ""Платежные системы"" не подключена.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
Если ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции <> "AuthorizeSales"
|
||
И ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции <> "PurchaseWithEnrollment" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Операция %1 не поддерживается данным режимом.'");
|
||
ТекстОшибки = СтрШаблон(ТекстОшибки, ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции);
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыВыполненияЭквайринговойОперации.СуммаОперации <= 0 Тогда
|
||
ОписаниеОшибки = ОписаниеОшибки + НСтр("ru = 'Сумма операции должна быть больше 0.'") + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если ПустаяСтрока(ОписаниеОшибки) Тогда
|
||
Возврат Истина;
|
||
Иначе
|
||
ОписаниеОшибки = Лев(ОписаниеОшибки, СтрДлина(ОписаниеОшибки) - 1);
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ПродажаСВыдачейНаличных
|
||
|
||
// Выполняет проверку корректности заполнения банковского платежного агента
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстПродажаСВыдачейНаличных.
|
||
// ОписаниеОшибки - Строка - Описание ошибки параметра операции
|
||
//
|
||
Процедура ПроверитьКорректностьБанковскогоАгента(КонтекстОперации, ОписаниеОшибки)
|
||
|
||
ПараметрыЧекаВыдачи = КонтекстОперации.ПараметрыФискализацииЧекаВыдачи;
|
||
Если ПараметрыЧекаВыдачи.ПозицииЧека.Количество()=0 Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не задана строка операции выдачи в позиции чека.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
Иначе
|
||
ДанныеАгентаПозиция = ПараметрыЧекаВыдачи.ПозицииЧека[0].ДанныеАгента; // см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеАгента
|
||
ДанныеАгентаШапка = ПараметрыЧекаВыдачи.ДанныеАгента; // см. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыДанныеАгента
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ОператорПеревода.Телефон)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ОператорПеревода.Телефон) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлен телефон оператора перевода банковского платежного агента (эквайера).'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ОператорПеревода.Наименование)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ОператорПеревода.Наименование) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлено наименование оператора перевода банковского платежного агента (эквайера).'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ОператорПеревода.Адрес)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ОператорПеревода.Адрес) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлен адрес оператора перевода банковского платежного агента (эквайера).'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ОператорПеревода.ИНН)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ОператорПеревода.ИНН) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлен ИНН оператора перевода банковского платежного агента (эквайера).'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ПлатежныйАгент.Телефон)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ПлатежныйАгент.Телефон) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлен телефон банковского платежного агента (организации).'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если Не ЗначениеЗаполнено(ДанныеАгентаПозиция.ПлатежныйАгент.Операция)
|
||
И Не ЗначениеЗаполнено(ДанныеАгентаШапка.ПлатежныйАгент.Операция) Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не установлена операция банковского платежного агента.'") ;
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет проверку допустимости выполнения операции
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстПродажаСВыдачейНаличных.
|
||
// ОписаниеОшибки - Строка - Описание ошибки параметра операции
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Возвращает истина если переданные параметры операции корректны
|
||
Функция ПродажаСВыдачейНаличныхДопустима(КонтекстОперации, ОписаниеОшибки)
|
||
|
||
КратностьСуммыВыдачиНаличных = 100;
|
||
|
||
ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
ПараметрыФискализацииЧекаВыдачи = КонтекстОперации.ПараметрыФискализацииЧекаВыдачи;
|
||
ТипТранзакции = ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции;
|
||
СуммаОперации = ПараметрыВыполненияЭквайринговойОперации.СуммаОперации;
|
||
СуммаНаличных = ПараметрыВыполненияЭквайринговойОперации.СуммаНаличных;
|
||
ПодключенноеУстройство = КонтекстОперации.ПодключенныйЭТ;
|
||
|
||
Отказ = Ложь;
|
||
МенеджерОборудованияВызовСервераПереопределяемый.ПроверитьДостаточностьНаличныхСредств(
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
СуммаНаличных,
|
||
Отказ);
|
||
Если Отказ Тогда
|
||
ТекстОшибки = НСтр("ru = 'В ККТ не достаточно денежных средств.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
// проверка кратности суммы выдачи наличных
|
||
Если СуммаНаличных % КратностьСуммыВыдачиНаличных <> 0 Тогда
|
||
ТекстОшибки = СтрШаблон(НСтр("ru = 'Сумма выдачи наличных должна быть кратной %1.'"), КратностьСуммыВыдачиНаличных);
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если ПараметрыФискализацииЧекаВыдачи = Неопределено Тогда
|
||
ТекстОшибки = НСтр("ru = 'Не заданы параметры фискализации чека выдачи наличных.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
// Используется подсистема "Платежные системы"
|
||
Если Не ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
ТекстОшибки = НСтр("ru = 'Подсистема ""Платежные системы"" не подключена.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если ТипТранзакции <> "PayByPaymentCardWithCashWithdrawal" Тогда
|
||
ТекстОшибки = НСтр("ru = 'Операция %1 не поддерживается данным режимом.'");
|
||
ТекстОшибки = СтрШаблон(ТекстОшибки, ТипТранзакции);
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
Если СуммаОперации <= 0 Тогда
|
||
ТекстОшибки = НСтр("ru = 'Сумма операции должна быть больше 0.'");
|
||
ОписаниеОшибки = ОписаниеОшибки + ТекстОшибки + Символы.ПС;
|
||
КонецЕсли;
|
||
|
||
ПроверитьКорректностьБанковскогоАгента(КонтекстОперации, ОписаниеОшибки);
|
||
|
||
Если ПустаяСтрока(ОписаниеОшибки) Тогда
|
||
Возврат Истина;
|
||
Иначе
|
||
ОписаниеОшибки = Лев(ОписаниеОшибки, СтрДлина(ОписаниеОшибки) - 1);
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|
||
|
||
// Заполняет параметры выполнения эквайринговой операции на основании параметров фискальной операции
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура ПодготовитьПараметрыЭквайринговойОперации(КонтекстОперации)
|
||
|
||
ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧека;
|
||
|
||
Если ПараметрыВыполненияЭквайринговойОперации = Неопределено Тогда
|
||
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
ПараметрыВыполненияЭквайринговойОперации = МодульОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
|
||
КонецЕсли;
|
||
КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации = ПараметрыВыполненияЭквайринговойОперации;
|
||
|
||
СуммаОперации = 0;
|
||
ТаблицаОплат = ПараметрыФискализацииЧека.ТаблицаОплат;
|
||
Для Каждого СтрокаОплаты Из ТаблицаОплат Цикл
|
||
Если СтрокаОплаты.ТипОплаты = ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Электронно") Тогда
|
||
СуммаОперации = СуммаОперации + СтрокаОплаты.Сумма;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если КонтекстОперации.ТипОперации = "ПродажаСВыдачейНаличных" Тогда
|
||
СуммаВыдачи = КонтекстОперации.СуммаВыдачи;
|
||
ПараметрыВыполненияЭквайринговойОперации.СуммаНаличных = СуммаВыдачи;
|
||
ПараметрыВыполненияЭквайринговойОперации.СуммаОперации = СуммаОперации;
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ПокупкаСЗачислением" Тогда
|
||
ПараметрыВыполненияЭквайринговойОперации.СуммаОперации = СуммаОперации;
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
ПараметрыВыполненияЭквайринговойОперации.СуммаОперации = СуммаОперации;
|
||
Иначе
|
||
ВызватьИсключение СтрШаблон(НСтр("ru = 'Неизвестный тип операции %1'"), КонтекстОперации.ТипОперации);
|
||
КонецЕсли;
|
||
|
||
ПараметрыВыполненияЭквайринговойОперации.ДокументОснование = ПараметрыФискализацииЧека.ДокументОснование;
|
||
ПараметрыВыполненияЭквайринговойОперации.РеквизитыКартыQR = КонтекстОперации.РеквизитыКартыQR;
|
||
ПараметрыВыполненияЭквайринговойОперации.ИдентификаторЗапроса = Новый УникальныйИдентификатор();
|
||
|
||
КонецЕсли;
|
||
|
||
Если КонтекстОперации.ТипОперации = "ПродажаСВыдачейНаличных" Тогда
|
||
ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции = "PayByPaymentCardWithCashWithdrawal";
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ПокупкаСЗачислением" Тогда
|
||
ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции = "PurchaseWithEnrollment";
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
ПараметрыВыполненияЭквайринговойОперации.ТипТранзакции = "AuthorizeSales";
|
||
Иначе
|
||
ВызватьИсключение СтрШаблон(НСтр("ru = 'Неизвестный тип операции %1'"), КонтекстОперации.ТипОперации);
|
||
КонецЕсли;
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
// Подготавливает контекст пакетной операции для выполнения
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
// ДополнительныеПараметры - Структура - дополнительные параметры переданные при запуске пакета
|
||
Процедура ПодготовитьКонтекстПакетнойОперации(КонтекстОперации, ДополнительныеПараметры)
|
||
|
||
Если Не ЗначениеЗаполнено(ДополнительныеПараметры) Тогда
|
||
ДополнительныеПараметры = Новый Структура();
|
||
КонецЕсли;
|
||
КонтекстОперации.ДополнительныеПараметры = ДополнительныеПараметры;
|
||
|
||
// запомнить состояние ОставитьПодключенным переданные пользователем
|
||
Если ДополнительныеПараметры.Свойство("ОставитьПодключенным") Тогда
|
||
КонтекстОперации.ОставитьПодключенным = ДополнительныеПараметры.ОставитьПодключенным;
|
||
КонецЕсли;
|
||
|
||
ПодготовитьПараметрыЭквайринговойОперации(КонтекстОперации);
|
||
|
||
ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
КонтекстОперации.СуммаОперации = ПараметрыВыполненияЭквайринговойОперации.СуммаОперации;
|
||
|
||
// оставить подключенным оборудование, на все время выполнения пакета
|
||
ДополнительныеПараметры.Вставить("ОставитьПодключенным", Истина);
|
||
КонецПроцедуры
|
||
|
||
// Определяет существует ли возможность печати короткого слип-чека в теле фискального
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - См. КонтекстПродажаСВыдачейНаличных
|
||
Процедура ОпределитьВозможностьПечатиСлипЧекаВТелеФискального(КонтекстОперации)
|
||
|
||
ПодключенноеУстройство = КонтекстОперации.ПодключенныйЭТ;
|
||
|
||
// если не установлено в параметрах принудительная печать слип-чека
|
||
Если КонтекстОперации.СлипЧекВТелеФискального = Неопределено Тогда
|
||
// тогда печатать слип чек в зависимости от устройства
|
||
Если ПодключенноеУстройство.КороткиеСлипЧеки И Не ПодключенноеУстройство.ПечатьКвитанцийНаТерминале Тогда
|
||
КонтекстОперации.СлипЧекВТелеФискального = Истина;
|
||
Иначе
|
||
КонтекстОперации.СлипЧекВТелеФискального = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если КонтекстОперации.СлипЧекВТелеФискального Тогда
|
||
КонтекстОперации.ДополнительныеПараметры.Вставить("ИспользоватьПечатающееУстройство", Ложь);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Отключает оборудование используемое в пакете (ККТ и ЭТ)
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ОтключитьОборудованиеПакета(КонтекстОперации)
|
||
|
||
// вернуть исходное значение ОставитьПодключенным
|
||
ДополнительныеПараметры = КонтекстОперации.ДополнительныеПараметры;
|
||
Если ДополнительныеПараметры.Свойство("ОставитьПодключенным") Тогда
|
||
ДополнительныеПараметры.ОставитьПодключенным = КонтекстОперации.ОставитьПодключенным;
|
||
КонецЕсли;
|
||
ОтключатьОборудование = Не КонтекстОперации.ОставитьПодключенным;
|
||
|
||
// Требуется отключить оборудование, т.к. во время операции отключение оборудования было отменено
|
||
ПодключенноеУстройствоККТ = МенеджерОборудованияКлиент.ПолучитьПодключенноеУстройство(КонтекстОперации.ИдентификаторККТ);
|
||
Если ПодключенноеУстройствоККТ <> Неопределено Тогда
|
||
Если ОтключатьОборудование Или ПодключенноеУстройствоККТ.СетевоеОборудование Тогда
|
||
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоИдентификатору(
|
||
,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
ПодключенноеУстройствоЭТ = МенеджерОборудованияКлиент.ПолучитьПодключенноеУстройство(КонтекстОперации.ИдентификаторЭТ);
|
||
Если ПодключенноеУстройствоЭТ <> Неопределено Тогда
|
||
Если ОтключатьОборудование Или ПодключенноеУстройствоЭТ.СетевоеОборудование Тогда
|
||
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоИдентификатору(
|
||
,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторЭТ);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Формирует результат пакета операций и вызывает оповещение пользователя при завершении если оно было задано.
|
||
//
|
||
// Параметры:
|
||
// Результат - Булево - флаг того, что пакет операций завершился успешно
|
||
// ОписаниеОшибки - Строка - Описание ошибки, которое будет передано в оповещении
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ЗавершитьПакетОпераций(Результат, ОписаниеОшибки, КонтекстОперации)
|
||
|
||
ТипОперации = КонтекстОперации.ТипОперации;
|
||
ОповещениеЗавершения = КонтекстОперации.ОповещениеЗавершения;
|
||
|
||
Если КонтекстОперации.РезультатФискализацииЧека <> Неопределено
|
||
И КонтекстОперации.РезультатФискализацииЧека.Результат Тогда
|
||
ИдентификаторЗапроса = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации.ИдентификаторЗапроса;
|
||
ИдентификаторФискальнойЗаписи = КонтекстОперации.ПараметрыФискализацииЧека.ИдентификаторФискальнойЗаписи;
|
||
ЛогированиеОперацийБПОСлужебныйВызовСервера.УстановитьИдентификаторФискальнойЗаписи(ИдентификаторЗапроса, ИдентификаторФискальнойЗаписи);
|
||
КонецЕсли;
|
||
|
||
ОтключитьОборудованиеПакета(КонтекстОперации);
|
||
Если ОповещениеЗавершения <> Неопределено Тогда
|
||
Если ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
РезультатОперации = РезультатЭквайринговойОперацииСФискализацией(Результат, ОписаниеОшибки, КонтекстОперации);
|
||
ИначеЕсли ТипОперации = "ПокупкаСЗачислением" Тогда
|
||
РезультатОперации = РезультатЭквайринговойОперацииСФискализацией(Результат, ОписаниеОшибки, КонтекстОперации);
|
||
ИначеЕсли ТипОперации = "ПродажаСВыдачейНаличных" Тогда
|
||
РезультатОперации = РезультатПродажаСВыдачейНаличных(Результат, ОписаниеОшибки, КонтекстОперации);
|
||
Иначе
|
||
ВызватьИсключение НСтр("ru = 'Неизвестный тип операции.'");
|
||
КонецЕсли;
|
||
ВыполнитьОбработкуОповещения(ОповещениеЗавершения, РезультатОперации);
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
#Область ФормированиеСлипЧекаВТелеФискального
|
||
|
||
// Возвращает структуру для формирования шаблона слип-чека
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ПараметрыФискализацииЧека - См. ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыОперацииФискализацииЧека
|
||
// * ПараметрыВыполненияЭквайринговойОперации - См. ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации
|
||
// * РезультатВыполненияЭквайринговойОперации - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * РезультатАварийнойОтменыОперации - См. МенеджерОборудованияКлиентСервер.ПараметрыВыполненияОперацииНаОборудовании
|
||
// * ДополнительныеПараметры - Структура - Дополнительные параметры переданные ранее в процедуру
|
||
// "НачатьФискализациюЧекаСОплатойКартой"
|
||
Функция ПараметрыФормированияШаблонаСлипЧека()
|
||
|
||
Результат = Новый Структура();
|
||
Результат.Вставить("ПараметрыФискализацииЧека", Неопределено);
|
||
Результат.Вставить("ПараметрыВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатВыполненияЭквайринговойОперации", Неопределено);
|
||
Результат.Вставить("РезультатФискализацииЧека", Неопределено);
|
||
Результат.Вставить("РезультатАварийнойОтменыОперации", Неопределено);
|
||
Результат.Вставить("ДополнительныеПараметры", Неопределено);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Формирует шаблон слип-чека и печатает его как текстовый документ на ККТ
|
||
//
|
||
// Параметры:
|
||
// Тип - Строка - Тип слип-чека
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ВывестиСлипЧекКакТекстовыйДокумент(Тип, КонтекстОперации)
|
||
|
||
Оповещение = Новый ОписаниеОповещения("ПакетнаяОбработка_ПечатьТекстаЗавершение",
|
||
ЭтотОбъект,
|
||
КонтекстОперации);
|
||
Если Не КонтекстОперации.СлипЧекВТелеФискального Тогда
|
||
ВыполнитьОбработкуОповещения(Оповещение, Неопределено);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ПараметрыСлипЧека = КонтекстОперации.РезультатВыполненияЭквайринговойОперации;
|
||
Если КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧека;
|
||
РезультатФискализацииЧека = КонтекстОперации.РезультатФискализацииЧека;
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ПродажаСВыдачейНаличных" Тогда
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧекаВыдачи;
|
||
РезультатФискализацииЧека = КонтекстОперации.РезультатФискализацииЧекаВыдачи;
|
||
Иначе
|
||
ВызватьИсключение НСтр("ru = 'Неизвестный тип операции.'");
|
||
КонецЕсли;
|
||
|
||
// дать возможность пользователю поменять текст слип чека
|
||
СтандартнаяОбработка = Истина;
|
||
ДанныеДляШаблона = ПараметрыФормированияШаблонаСлипЧека();
|
||
ДанныеДляШаблона.ПараметрыФискализацииЧека = ПараметрыФискализацииЧека;
|
||
ДанныеДляШаблона.ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
ДанныеДляШаблона.РезультатВыполненияЭквайринговойОперации = КонтекстОперации.РезультатВыполненияЭквайринговойОперации;
|
||
ДанныеДляШаблона.РезультатФискализацииЧека = РезультатФискализацииЧека;
|
||
ДанныеДляШаблона.РезультатАварийнойОтменыОперации = КонтекстОперации.РезультатАварийнойОтменыОперации;
|
||
ДанныеДляШаблона.ДополнительныеПараметры = КонтекстОперации.ДополнительныеПараметры;
|
||
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
Текст = МодульОборудованиеПлатежныеСистемыКлиентСервер.ТекстСлипЧекаПоУмолчанию(
|
||
ДанныеДляШаблона.РезультатВыполненияЭквайринговойОперации, Ложь);
|
||
Иначе
|
||
Текст = "";
|
||
КонецЕсли;
|
||
|
||
МенеджерОборудованияКлиентПереопределяемый.СформироватьШаблонСлипЧека(Тип, ДанныеДляШаблона, Текст, СтандартнаяОбработка);
|
||
Если Не СтандартнаяОбработка Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// запомнить текст последнего слип-чека в глобальной переменной
|
||
Если Не ПустаяСтрока(Текст) И ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.УстановитьПоследнийСлипЧек(Текст);
|
||
КонецЕсли;
|
||
|
||
ПараметрыОперации = ОборудованиеЧекопечатающиеУстройстваКлиентСервер.ПараметрыПечатиТекста(Текст);
|
||
НачатьПечатьТекста(Оповещение,
|
||
КонтекстОперации.ИдентификаторКлиента,
|
||
КонтекстОперации.ИдентификаторККТ,
|
||
ПараметрыОперации,
|
||
КонтекстОперации.ДополнительныеПараметры);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Получает текст слип-чека из предопределенной процедуры и вставляет его в тело фискального чека,
|
||
// так же записывает текст последнего слип-чека в глобальную переменную
|
||
//
|
||
// Параметры:
|
||
// КонтекстОперации - см. КонтекстЭквайринговойОперацииСФискализацией
|
||
Процедура ВставитьСлипЧекВТелоФискальногоЧека(КонтекстОперации)
|
||
|
||
Если Не КонтекстОперации.СлипЧекВТелеФискального Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// сформировать тест слип чека по умолчанию
|
||
Тип = "Обычный";
|
||
Если КонтекстОперации.ТипОперации = "ФискализацияЧекаСОплатой" Тогда
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧека;
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ПокупкаСЗачислением" Тогда
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧека;
|
||
ИначеЕсли КонтекстОперации.ТипОперации = "ПродажаСВыдачейНаличных" Тогда
|
||
ПараметрыФискализацииЧека = КонтекстОперации.ПараметрыФискализацииЧека;
|
||
Иначе
|
||
ВызватьИсключение НСтр("ru = 'Неизвестный тип операции.'");
|
||
КонецЕсли;
|
||
|
||
// дать возможность пользователю поменять текст слип чека
|
||
СтандартнаяОбработка = Истина;
|
||
ДанныеДляШаблона = ПараметрыФормированияШаблонаСлипЧека();
|
||
ДанныеДляШаблона.ПараметрыФискализацииЧека = ПараметрыФискализацииЧека;
|
||
ДанныеДляШаблона.ПараметрыВыполненияЭквайринговойОперации = КонтекстОперации.ПараметрыВыполненияЭквайринговойОперации;
|
||
ДанныеДляШаблона.РезультатВыполненияЭквайринговойОперации = КонтекстОперации.РезультатВыполненияЭквайринговойОперации;
|
||
ДанныеДляШаблона.ДополнительныеПараметры = КонтекстОперации.ДополнительныеПараметры;
|
||
|
||
Если ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиентСервер = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиентСервер");
|
||
Текст = МодульОборудованиеПлатежныеСистемыКлиентСервер.ТекстСлипЧекаПоУмолчанию(
|
||
ДанныеДляШаблона.РезультатВыполненияЭквайринговойОперации);
|
||
Иначе
|
||
Текст = "";
|
||
КонецЕсли;
|
||
|
||
МенеджерОборудованияКлиентПереопределяемый.СформироватьШаблонСлипЧека(Тип, ДанныеДляШаблона, Текст, СтандартнаяОбработка);
|
||
Если Не СтандартнаяОбработка Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// добавить текст слип чека в тело фискального чека
|
||
Если ПустаяСтрока(ПараметрыФискализацииЧека.ТекстКороткогоСлипЧека) Тогда
|
||
ПараметрыФискализацииЧека.ТекстКороткогоСлипЧека = Текст;
|
||
КонецЕсли;
|
||
|
||
// запомнить текст последнего слип-чека в глобальной переменной
|
||
Если Не ПустаяСтрока(Текст) И ОбщегоНазначенияБПОКлиент.ИспользуетсяПлатежныеСистемы() Тогда
|
||
МодульОборудованиеПлатежныеСистемыКлиент = ОбщегоНазначенияБПОКлиент.ОбщийМодуль("ОборудованиеПлатежныеСистемыКлиент");
|
||
МодульОборудованиеПлатежныеСистемыКлиент.УстановитьПоследнийСлипЧек(Текст);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти
|
||
|
||
#КонецОбласти |