Функция которая формирует выводимую информацию на дисплей покупателя находится тут:
Общий модуль - МенеджерОборудованяРМККлиент - ИнформацияДляДисплеяПокупателя
Данная функция получает на вход параметры операции и на основании параметров возвращает структуру с свойством "СтрокиТекста" в котором будет хранится сформированный текст для дисплея покупателя.
Полный текс функции:
Функция которая формирует выводимую информацию на дисплей покупателя находится тут:
Общий модуль - МенеджерОборудованяРМККлиент - ИнформацияДляДисплеяПокупателя
Данная функция получает на вход параметры операции и на основании параметров возвращает структуру с свойством "СтрокиТекста" в котором будет хранится сформированный текст для дисплея покупателя.
Полный текс функции:
// Возвращает заполненные параметры операции для дисплея покупателя.
//
// Параметры:
// ИсходныеДанные - Структура
// *Операция - Строка
// *ИспользоватьПодключаемоеОборудование - Булево
// *ДанныеДляОтображения - Строка
// *СуммаСкидки - Число
// *СуммаИтого - Число
// ОбъектВладелец - УправляемаяФорма.
// СуммаСкидкиНаТовар - Число.
//
// Возвращаемое значение:
// Структура
//
Функция ИнформацияДляДисплеяПокупателя(Операция, ИсходныеДанные, ОбъектВладелец, СуммаСкидкиНаТовар = 0)
СуммаИтого = ИсходныеДанные.СуммаИтого;
СуммаСкидки = ИсходныеДанные.СуммаСкидки;
ДанныеДляОтображения = ИсходныеДанные.ДанныеДляОтображения;
ИспользоватьАвтоматическиеСкидки = Ложь;
ДопускаетсяПрименениеСкидок = Ложь;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ОбъектВладелец, "ИспользоватьАвтоматическиеСкидки") Тогда
ИспользоватьАвтоматическиеСкидки = ОбъектВладелец.ИспользоватьАвтоматическиеСкидки;
КонецЕсли;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ОбъектВладелец, "ДопускаетсяПрименениеСкидок") Тогда
ДопускаетсяПрименениеСкидок = ОбъектВладелец.ДопускаетсяПрименениеСкидок;
КонецЕсли;
ИспользуютсяСкидки = ИспользоватьАвтоматическиеСкидки Или ДопускаетсяПрименениеСкидок;
ТипыОпераций = ТипыОперацийДисплеяПокупателя();
ПараметрыОперации = ПараметрыОперацииДисплейПокупателя();
ПараметрыОперации.НазваниеОрганизации = ВРег(Строка(ИсходныеДанные.Организация));
ПараметрыОперации.СтатусРабочегоМеста =
ПредопределенноеЗначение("Перечисление.СтатусРабочегоМестаНаДисплее.РабочееМестоРаботает");
БазовыйШаблон = СтрШаблон("%1%2", НСтр("ru = '%1'"), " ");
БазовыйШаблонБезПробелов = НСтр("ru = '%1'");
ШаблонДваПараметра = НСтр("ru = '%1 %2'");
ТекстПриПростое = НСтр("ru = 'ДОБРО ПОЖАЛОВАТЬ'");
ТекстВНерабочемСостоянии = НСтр("ru = 'КАССА НЕ РАБОТАЕТ'");
Строка1 = НСтр("ru = ''");
Строка2 = НСтр("ru = ''");
ВыравниватьВправо = Ложь;
Если Операция = ТипыОпераций.НачалоРаботы Тогда
Строка1 = ТекстПриПростое;
ПараметрыОперации.Операция = "СервисныйРежим";
ПараметрыОперации.ГотовностьКРаботе = Истина;
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.НеУстановлен");
ПараметрыОперации.СтатусРабочегоМеста =
ПредопределенноеЗначение("Перечисление.СтатусРабочегоМестаНаДисплее.РабочееМестоСвободно");
ИначеЕсли Операция = ТипыОпераций.Сервис Тогда
Строка1 = ТекстВНерабочемСостоянии;
ПараметрыОперации.Операция = "СервисныйРежим";
ПараметрыОперации.ГотовностьКРаботе = Ложь;
ПараметрыОперации.СтатусРабочегоМеста =
ПредопределенноеЗначение("Перечисление.СтатусРабочегоМестаНаДисплее.СервисныйРежим");
ИначеЕсли Операция = ТипыОпераций.ПречекQR Тогда
ПараметрыОперации.Операция = "ПлатежнаяОперация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОжиданиеОперации");
ПараметрыОперации.Сумма = Число(ИсходныеДанные.СуммаКОплате);
ПараметрыОперации.ЗначениеQRКода = ИсходныеДанные.ЗначениеQRКода;
ПараметрыОперации.КартинкаQRКода = ИсходныеДанные.КартинкаQRКода;
ПараметрыОперации.НаличнаяОплата = Ложь;
ТипыПлатежныхСистем = МенеджерОборудованияРМККлиент.ТипыПлатежнойСистемыККТ();
Если ВРег(ОбъектВладелец.ПлатежнаяСистема_ИдентификаторПС) = ВРег("ЮКасса") Тогда
ПараметрыОперации.ТипПлатежнойСистемы = ТипыПлатежныхСистем.Получить("ЮКасса");
Иначе
ПараметрыОперации.ТипПлатежнойСистемы = ТипыПлатежныхСистем.Получить("СистемаБыстрыхПлатежей");
КонецЕсли;
ИначеЕсли Операция = ТипыОпераций.Оплата Тогда
Если Не ЗначениеЗаполнено(ДанныеДляОтображения.Оплата) Тогда
ДанныеДляОтображения.Оплата = 0;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеДляОтображения.Сдача) Тогда
ДанныеДляОтображения.Сдача = 0;
КонецЕсли;
Строка1 = СтрШаблон(ШаблонДваПараметра, НСтр("ru = 'ВНЕСЕНО:'"), ДанныеДляОтображения.Оплата);
Строка2 = СтрШаблон(ШаблонДваПараметра, НСтр("ru = 'СДАЧА:'"), ДанныеДляОтображения.Сдача);
ТаблицаОплат = ОбъектВладелец.Объект.Оплата;
КоличествоОплат = ТаблицаОплат.Количество();
Если КоличествоОплат>0 Тогда
ПоследняяОплата = ТаблицаОплат[КоличествоОплат-1];
ПараметрыОперации.Операция = "ПлатежнаяОперация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОжиданиеОперации");
ПараметрыОперации.Сумма = Число(ДанныеДляОтображения.Оплата);
ПараметрыОперации.Сдача = Число(ДанныеДляОтображения.Сдача);
ПараметрыОперации.НаличнаяОплата = ОбщегоНазначенияРМККлиент.ЭтоОплатаНаличными(ПоследняяОплата.ВидОплаты);
ПараметрыОперации.ТипПлатежнойСистемы = Строка(ПоследняяОплата.ВидОплаты);
Если ОбщегоНазначенияРМККлиент.ЭтоВидОперацииВозврат(ОбъектВладелец.Объект.ВидОперации) Тогда
ПараметрыОперации.Возврат = Истина;
КонецЕсли;
Иначе
ПараметрыОперации.Операция = "ПлатежнаяОперация";
ПараметрыОперации.ТипПлатежнойСистемы = НСтр("ru = 'К ОПЛАТЕ'");
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ПараметрыОперации.Сумма = Число(СуммаИтого);
Если ОбщегоНазначенияРМККлиент.ЭтоВидОперацииВозврат(ОбъектВладелец.Объект.ВидОперации) Тогда
ПараметрыОперации.ТипПлатежнойСистемы = НСтр("ru = 'К ВОЗВРАТУ'");
ПараметрыОперации.Возврат = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Операция = ТипыОпераций.ОжиданиеОплаты Тогда
ДанныеДляОтображения.СуммаИтого = ФорматСумм(СуммаИтого);
ДанныеДляОтображения.СуммаСкидки = ФорматСумм(СуммаСкидки);
Строка1 = СтрШаблон(ШаблонДваПараметра, НСтр("ru = 'ИТОГО:'"), ДанныеДляОтображения.СуммаИтого);
Если НЕ ПустаяСтрока(ДанныеДляОтображения.СуммаСкидки) Тогда
Строка2 = СтрШаблон(ШаблонДваПараметра, НСтр("ru = 'СКИДКА:'"), ДанныеДляОтображения.СуммаСкидки);
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеДляОтображения.Оплата) Тогда
ДанныеДляОтображения.Оплата = 0;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеДляОтображения.Сдача) Тогда
ДанныеДляОтображения.Сдача = 0;
КонецЕсли;
ТаблицаОплат = ОбъектВладелец.Объект.Оплата;
КоличествоОплат = ТаблицаОплат.Количество();
Если КоличествоОплат>0 Тогда
ПоследняяОплата = ТаблицаОплат[КоличествоОплат-1];
ПараметрыОперации.Операция = "ПлатежнаяОперация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОжиданиеОперации");
ПараметрыОперации.Сумма = Число(ДанныеДляОтображения.Оплата);
ПараметрыОперации.Сдача = Число(ДанныеДляОтображения.Сдача);
ПараметрыОперации.НаличнаяОплата = ОбщегоНазначенияРМККлиент.ЭтоОплатаНаличными(ПоследняяОплата.ВидОплаты);
ПараметрыОперации.ТипПлатежнойСистемы = Строка(ПоследняяОплата.ВидОплаты);
Если ОбщегоНазначенияРМККлиент.ЭтоВидОперацииВозврат(ОбъектВладелец.Объект.ВидОперации) Тогда
ПараметрыОперации.Возврат = Истина;
КонецЕсли;
Иначе
ПараметрыОперации.Операция = "ПлатежнаяОперация";
ПараметрыОперации.ТипПлатежнойСистемы = НСтр("ru = 'К ОПЛАТЕ'");
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ПараметрыОперации.Сумма = Число(СуммаИтого);
Если ОбщегоНазначенияРМККлиент.ЭтоВидОперацииВозврат(ОбъектВладелец.Объект.ВидОперации) Тогда
ПараметрыОперации.ТипПлатежнойСистемы = НСтр("ru = 'К ВОЗВРАТУ'");
ПараметрыОперации.Возврат = Истина;
КонецЕсли;
КонецЕсли;
ИначеЕсли Операция = ТипыОпераций.ОтменаОплаты Тогда
Строка1 = НСтр("ru = 'ОТМЕНА ОПЛАТЫ'");
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ИначеЕсли Операция = ТипыОпераций.ДобавлениеТовара ИЛИ Операция = ТипыОпераций.УдалениеТовара
ИЛИ Операция = ТипыОпераций.ИзменениеКоличества ИЛИ Операция = ТипыОпераций.ИзменениеЦены Тогда
ИнформацияНаименование = ДанныеДляОтображения.ТоварНаименование;
ВыравниватьВправо = Истина;
Строка1 = СтрШаблон(БазовыйШаблонБезПробелов, ДанныеДляОтображения.ТоварНаименование);
Строка2 = СтрШаблон(БазовыйШаблонБезПробелов, ДанныеДляОтображения.ТоварЦена);
Если Операция = ТипыОпераций.ИзменениеЦены И СуммаСкидкиНаТовар <> 0 Тогда
Строка2 = СтрШаблон(НСтр("ru = 'СКИДКА: %1'"), ДанныеДляОтображения.ТоварСкидка);
КонецЕсли;
Если Не ПустаяСтрока(Строка1) Тогда
Если НЕ ДанныеДляОтображения.ТоварКоличество = 1 ИЛИ ДанныеДляОтображения.Весовой Тогда
Строка2 = СтрШаблон( НСтр("ru = '%1x%2=%3'"), ДанныеДляОтображения.ТоварКоличество, Строка2,
ДанныеДляОтображения.ТоварСумма);
КонецЕсли;
Если Операция = ТипыОпераций.УдалениеТовара Тогда
Строка2 = СтрШаблон( НСтр("ru = '-%1'"), Строка2);
КонецЕсли;
КонецЕсли;
Если ОбъектВладелец.Объект.Товары.Количество() = 0 Тогда
ПараметрыОперации.Операция = "СервисныйРежим";
ПараметрыОперации.ГотовностьКРаботе = Истина;
Иначе
ПодготовитьСписокТоваровНаДисплейПокупателяHTML(ПараметрыОперации, ОбъектВладелец.Объект.Товары, ИспользуютсяСкидки);
КонецЕсли;
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ИначеЕсли Операция = ТипыОпераций.СписокТоваров Тогда
Если ОбъектВладелец.Объект.Товары.Количество() = 0 Тогда
ПараметрыОперации.Операция = "СервисныйРежим";
ПараметрыОперации.ГотовностьКРаботе = Истина;
Иначе
ПодготовитьСписокТоваровНаДисплейПокупателяHTML(ПараметрыОперации, ОбъектВладелец.Объект.Товары, ИспользуютсяСкидки);
КонецЕсли;
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ИначеЕсли Операция = ТипыОпераций.Аннулирование Тогда
Строка1 = НСтр("ru = 'ЧЕК АННУЛИРОВАН'");
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ВыполненоУспешно");
ИначеЕсли Операция = ТипыОпераций.ОтложитьЧек Тогда
Строка1 = НСтр("ru = 'ЧЕК ОТЛОЖЕН'");
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ВыполненоУспешно");
ПараметрыОперации.ГотовностьКРаботе = Истина;
ИначеЕсли Операция = ТипыОпераций.ВозвратТовара Тогда
Строка1 = НСтр("ru = 'ВОЗВРАТ ТОВАРА'");
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОжиданиеОперации");
ПараметрыОперации.ГотовностьКРаботе = Истина;
ИначеЕсли Операция = ТипыОпераций.Коррекция Тогда
Строка1 = НСтр("ru = 'КОРРЕКЦИЯ'");
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОжиданиеОперации");
ИначеЕсли Операция = ТипыОпераций.Информация Тогда
Строка1 = ДанныеДляОтображения.Информация;
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.Информация");
ИначеЕсли Операция = ТипыОпераций.Ошибка Тогда
Строка1 = НСтр("ru = 'ОПЕРАЦИЯ НЕ ВЫПОЛНЕНА'");
Строка2 = ИсходныеДанные.ТекстОшибки;
ПараметрыОперации.Операция = "Информация";
ПараметрыОперации.СтатусОперации = ПредопределенноеЗначение("Перечисление.СтатусОперацииНаДисплее.ОперацияНеВыполнена");
ПараметрыОперации.СтатусРабочегоМеста =
ПредопределенноеЗначение("Перечисление.СтатусРабочегоМестаНаДисплее.ОшибкаНаРабочемМесте");
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Неизвестная операция %1'"), Операция);
КонецЕсли;
// Дисплей Posua-vfd не обновляет вторую строку, если на нее передать пустую строку.
Если ПустаяСтрока(Строка2) Тогда
Строка2 = СтрШаблон(НСтр("ru = '%1'")," ");
КонецЕсли;
ТекстКОтправкеНаДисплей = СтрШаблон( НСтр("ru = '%1%2%3'"), Строка1, Символы.ПС, Строка2);
ПараметрыОперации.СтрокиТекста = ТекстКОтправкеНаДисплей;
Возврат ПараметрыОперации;
КонецФункции