Медиадисплей. Дополнительный монитор вместо дисплея покупателя

Вместо двустрочного дисплея покупателя можно использовать обычный монитор компьютера, подключенный к кассовому компьютеру.

Перейти к публикации

Комментарии
1. Максим Лукин (pafftis) 9 22.08.17 19:22 Сейчас в теме
так и не въехал как её в 1с прикрутить!
3. Intenso Intenso (Intenso) 07.12.17 15:39 Сейчас в теме
Расширение для УТ11 есть? В демо режиме работает чтобы понять стоит ли вобще разработка покупки и сколько там костылей если они есть?
(3) Нет расширения для УТ. Его несложно сделать самому на примере расширения для розницы.

Текст модуля формы расширения для розницы (обработка РМКУправляемыйРежим):



&НаКлиенте
&Вместо("ВывестиИнформациюНаДисплейПокупателя")
Процедура rbs_ВывестиИнформациюНаДисплейПокупателя(Команда)
    
	Если Не ИспользоватьПодключаемоеОборудование Тогда
		Возврат;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(НаборПравИНастроек.ШаблонРаботыДисплеяПокупателя) Тогда
		ВыводитьИтоги = Ложь;
		ТекстПриПростое = НСтр("ru = 'ДОБРО ПОЖАЛОВАТЬ!'");
		ТекстВНерабочемСостоянии = НСтр("ru = 'КАССА НЕ РАБОТАЕТ'");
	Иначе
		ВыводитьИтоги = НаборПравИНастроек.ВыводитьПромИтогНаДисплей;
		ТекстПриПростое = НаборПравИНастроек.ТекстПриПростое;
		ТекстВНерабочемСостоянии = НаборПравИНастроек.ТекстВНерабочемСостоянии;
	КонецЕсли;
	
	Строка1 = "";
	Строка2 = "";
	ВыровнятьВПраво = Ложь;
	
	Если Команда = "НачалоРаботы" Тогда
		Строка1 = ТекстПриПростое;
		
	ИначеЕсли Команда = "Оплата" Тогда
		Строка1 = НСтр("ru = 'ВНЕСЕНО:'") + " " + ДисплейПокупателяПараметры.Оплата;
		Строка2 = НСтр("ru = '  СДАЧА:'") + " " + ДисплейПокупателяПараметры.Сдача;
	ИначеЕсли Команда = "ОжиданиеОплаты" Тогда
		
		ДисплейПокупателяПараметры.СуммаВсего  = Формат(СуммаВсего, "ЧДЦ=2;ЧГ=;ЧН=0.00");
		ДисплейПокупателяПараметры.СуммаСкидки = Формат(СуммаСкидки, "ЧДЦ=2;ЧГ=");
		
		Если ПустаяСтрока(ДисплейПокупателяПараметры.СуммаСкидки) Тогда
			Строка1 = НСтр("ru = '  ИТОГО:'") + " " + ДисплейПокупателяПараметры.СуммаВсего;
		Иначе
			Строка1 = НСтр("ru = '  ИТОГО:'") + " " + ДисплейПокупателяПараметры.СуммаВсего;
			Строка2 = НСтр("ru = ' СКИДКА:'") + " " + ДисплейПокупателяПараметры.СуммаСкидки;
		КонецЕсли;
		
	ИначеЕсли Команда = "ОтменаОплаты" Тогда
		Строка1 = НСтр("ru = 'ОТМЕНА ОПЛАТЫ'");
		
	ИначеЕсли Команда = "ДобавлениеТовара" 
		ИЛИ Команда = "УдалениеТовара" 
		ИЛИ Команда = "ИзмененияКоличества" 
		ИЛИ Команда = "ИзмененияЦены" Тогда
		
		ИнформацияНаименование = ДисплейПокупателяПараметры.ТоварНаименование;
		
		Если ВыводитьИтоги Тогда
			
			Если Команда = "УдалениеТовара" Тогда
				Строка1 = НСтр("ru = 'СТОРНО:'") + " ";
			Иначе
				Строка1 = НСтр("ru = '  ЦЕНА:'") + " ";
			КонецЕсли;
			
			Если НЕ ДисплейПокупателяПараметры.ТоварКоличество = 1 ИЛИ  Команда = "ИзмененияКоличества" ИЛИ Команда = "УдалениеТовара" Тогда
				Строка1 =  Строка1 + Строка(ДисплейПокупателяПараметры.ТоварКоличество) + "x";
			КонецЕсли;
			
			Строка1 = Строка1 + Строка(ДисплейПокупателяПараметры.ТоварЦена);
			Строка2 = НСтр("ru = ' ИТОГО:'") + " " + ДисплейПокупателяПараметры.СуммаВсего;
			
		Иначе
			
			ВыровнятьВПраво = Истина;
			Строка1 = Строка(ДисплейПокупателяПараметры.ТоварНаименование);
			Строка2 = Строка(ДисплейПокупателяПараметры.ТоварЦена);
			Если Не ПустаяСтрока(Строка1) Тогда
				Если НЕ ДисплейПокупателяПараметры.ТоварКоличество = 1 ИЛИ Команда = "ИзмененияКоличества" ИЛИ Команда = "УдалениеТовара" Тогда
					Строка2 = Строка(ДисплейПокупателяПараметры.ТоварКоличество) + "x" + Строка2 +  "=" +  Строка(ДисплейПокупателяПараметры.ТоварСумма);
				КонецЕсли;
				Если Команда = "УдалениеТовара" Тогда
					Строка2 = "-" + Строка2;
				КонецЕсли;
			КонецЕсли;
			
		КонецЕсли;
	ИначеЕсли Команда = "Аннулирование" Тогда
		Строка1 = НСтр("ru = 'ЧЕК АННУЛИРОВАН'");
		
	ИначеЕсли Команда = "ОтложитьЧек" Тогда
		Строка1 = НСтр("ru = 'ЧЕК ОТЛОЖЕН'");
	
	ИначеЕсли Команда = "ВозвратТовара" Тогда
		Строка1 = НСтр("ru = 'ВОЗВРАТ ТОВАРА'");
		 
	 ИначеЕсли Команда = "Сервис" Тогда
		Строка1 = ТекстВНерабочемСостоянии;
	
	КонецЕсли;
	
	Описание = Новый ОписаниеОповещения("ВывестиИнформациюНаДисплейПокупателяЗавершение", ЭтотОбъект);
    //типовой вызов
	МенеджерОборудованияКлиент.НачатьВыводИнформацииНаДисплейПокупателя(Описание,,, Строка1 + Символы.ПС + Строка2);
	
	
	/////РБ-Софт

//Шаблон для заголовка JSON-запроса
		 ЗаголовокЗапроса = "{""ordertable"":{
		 |""addmode"":""0"",
		 |""rows"":
		 |[";
//Шаблон для строки вывода товара в JSON-запросе
		 СтрокаЗапроса="{""name"":""<Наименование>"",
		 |""count"":""<Количество>"",
		 |""summ"":""<Сумма>""
		 |}";
//Шаблон для подвала JSON-запроса
		 ПодвалЗапроса="],
		 |""rowheight"": ""<КоличествоВидимыхСтрок>""
		 |},
		 |""currentrow"": ""<НомерВыделеннойСтроки>"",
		 |""infocount"":""<КоличествоПозиций>"",
		 |""infoToPay"": ""<СуммаКОплате>"",
		 |""infoCashIn"": ""<СуммаПринято>"",
		 |""infoRest"": ""<СуммаСдачи>"",
		 |""infoPaymentType"": ""<ТипОплаты>""
		 |}
		 |";
		 
		 
		 
		 ТипОплаты="Наличные";
		  			 
		 
		 
		 НомерВыделеннойСтроки = ЭтаФорма.Элементы.Товары.ТекущаяСтрока;
		 
		 КоличествоВидимыхСтрок=30;

//Заполняем данными подвал запроса
		 
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<КоличествоВидимыхСтрок>",Формат(КоличествоВидимыхСтрок,"ЧГ="));
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<НомерВыделеннойСтроки>",Формат(НомерВыделеннойСтроки,"ЧГ="));
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<КоличествоПозиций>",Формат(Объект.Товары.Количество(),"ЧГ="));
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<СуммаКОплате>",ДисплейПокупателяПараметры.СуммаВсего);
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<СуммаПринято>",ДисплейПокупателяПараметры.Оплата);
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<СуммаСдачи>",ДисплейПокупателяПараметры.Сдача);
		 
		 ПодвалЗапроса=СтрЗаменить(ПодвалЗапроса,"<ТипОплаты>",ТипОплаты);
		 
		 
	
	
    ОповещениеПриЗавершении=Описание;
    ИдентификаторУстройства=Неопределено;
    СтрокиТекста=Строка1 + Символы.ПС + Строка2;
    
    ПодключенныеУстройства = МенеджерОборудованияКлиент.ПолучитьПодключенныеУстройства(глПодключаемоеОборудование.ПараметрыПодключенияПО, 
		ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ДисплейПокупателя"), ИдентификаторУстройства);
        
    
    
	Если ПодключенныеУстройства.Количество() > 0 Тогда
        Для Каждого Устройство Из ПодключенныеУстройства Цикл
            Если Устройство.ИдентификаторОбъекта="AddIn.RBSoftMediaDisplay" Тогда
                //Нашли дисплей РБ-Софт
				
				Если Команда = "НачалоРаботы" Тогда
					
                                         //Установка темы "Магазин 2"
					ТекстЗапроса="{""theme"": ""3""}";
					Результат="";
					Если НЕ Устройство.ОбъектДрайвера.ВыполнитьЗапрос("SetTheme",ТекстЗапроса,Результат) Тогда
						ОписаниеОшибки="";
						КодОшибки = Устройство.ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
						Сообщить("Код ошибки "+КодОшибки +" : "+ОписаниеОшибки);
					КонецЕсли;    
				
				ИначеЕсли Команда = "ДобавлениеТовара" 
					ИЛИ Команда = "УдалениеТовара" 
					ИЛИ Команда = "ИзмененияКоличества" 
					ИЛИ Команда = "ИзмененияЦены" 
					ИЛИ Команда = "Оплата" 
					ИЛИ Команда = "ОжиданиеОплаты" 
					
					Тогда
					//Заполняем текст запроса для отображения товаров

					
					СтрТоварыЗапроса="";
					Для Каждого Стр Из Объект.Товары Цикл
						
						
						
						СтрТовар=СтрЗаменить(Стр.ПредставлениеТабло,"""","'");
						СтрТовар=СтрЗаменить(СтрТовар,Символ(13)," ");
						СтрТовар=СтрЗаменить(СтрТовар,Символ(10)," ");
						СтрТовар=СтрЗаменить(СтрТовар,Символы.Таб," ");
						
						Если Цел(Стр.КоличествоУпаковок)=Стр.КоличествоУпаковок Тогда
							СтрКоличество = Формат(Стр.КоличествоУпаковок,"ЧЦ=15; ЧДЦ=0;ЧРГ=");
						Иначе    
							СтрКоличество = Формат(Стр.КоличествоУпаковок,"ЧЦ=15; ЧДЦ=3; ЧРД=.; ЧРГ=");
						КонецЕсли;    
						СтрКоличество=СокрЛП(СтрКоличество);
						
						СтрСумма = Формат(Стр.Сумма,"ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=");
						
						ТекСтрокаЗапроса=СтрЗаменить(СтрокаЗапроса,"<Наименование>",СтрТовар);
						ТекСтрокаЗапроса=СтрЗаменить(ТекСтрокаЗапроса,"<Количество>",СтрКоличество);
						ТекСтрокаЗапроса=СтрЗаменить(ТекСтрокаЗапроса,"<Сумма>",СтрСумма);
						
						СтрТоварыЗапроса=СтрТоварыЗапроса+?(СтрТоварыЗапроса="","",",")+"
						|"+ТекСтрокаЗапроса;
					КонецЦикла;    
					
					
					//Собираем полный текст JSON-запроса
					ТекстЗапроса =ЗаголовокЗапроса+СтрТоварыЗапроса+ПодвалЗапроса;
					Результат="";
                                        //Отправляем JSON-запрос через метод компоненты
                                        //Можно отправлять и встроенным механизмом работы с JSON
					Если НЕ Устройство.ОбъектДрайвера.ВыполнитьЗапрос("SetParameters",ТекстЗапроса,Результат) Тогда
						ОписаниеОшибки="";
						КодОшибки = Устройство.ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
						Сообщить("Код ошибки "+КодОшибки +" : "+ОписаниеОшибки);
					КонецЕсли;    
				КонецЕсли;    
                
            КонецЕсли;
    	КонецЦикла
	КонецЕсли;

	ПродолжитьВызов(Команда);
КонецПроцедуры

Показать
5. Intenso Intenso (Intenso) 08.12.17 14:27 Сейчас в теме
(4) То что можно самому написать это понятно, решение не бесплатное почему и спрашиваю. Т.к. отсутвие расширения понесет доп расходы на его разработку. Что на счет демо версии? она имеестя? можно как то попробовать как оно работает какую информацию и куда можно выводить и тд?
Оставьте свое сообщение