Каталог решений - Ценник на товар через HTTP-сервис

Ценник на товар через HTTP-сервис

Ценник на товар через HTTP-сервис

В наличии

Коллеги, добрый день! Вспыхнула мода на электронный ценник на товар из-за скачущего курса, предлагаю не рассуждать на тему законности, а посовещаться, как это можно реализовать.
В моем примере есть следующие входные данные, существуют ценники без цены, но c QR-кодом. Содержание QR представляет собой штрихкод товара и адрес http-сервиса.

Категория:

Описание

Рабочее окружение: 

Розница, редакция 2.3 (2.3.10.61) 

1С:Предприятие 8.3 (8.3.19.1264)

Для реализации было сделано расширение с http-сервисом и шаблон html ценника. (Приложены к публикации). 

На фото в публикации результат, который отдает сервис пользователю. 

Надеюсь, кто-нибудь покритикует, расскажет о своем (возможном решении). 

Листинг кода

Функция startPrice(Запрос) 
	
	//http://127.0.0.1:33365/Ret/hs/unit/start/4810344008954
	Штрихкод = СтрЗаменить(Запрос.ОтносительныйURL,"/start/","");
	HTTPОтвет = Новый HTTPСервисОтвет(200);
	HTTPОтвет.УстановитьТелоИзСтроки(Чтение(Штрихкод)); //Добавляем аргумент функции (Штрихкод)
	HTTPОтвет.Заголовки["Content-Type"] = "text/html"; 
	
	Возврат HTTPОтвет;
	
КонецФункции 

Функция Чтение(Штрихкод)
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Штрихкод",Штрихкод);
	Запрос.Текст = 
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(Штрихкоды.Владелец) КАК НаименованиеТовара,
	|	Штрихкоды.Характеристика КАК Характеристика,
	|	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
	|ИЗ
	|	РегистрСведений.Штрихкоды КАК Штрихкоды
	|		ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
	|		ПО (Штрихкоды.Владелец = ЦеныНоменклатурыСрезПоследних.Номенклатура)
	|ГДЕ
	|	Штрихкоды.Штрихкод = &Штрихкод"; 
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда 
		ЦенаТовара = 0;
		НаименованиеТовара = "Товар отсутствует"; 
	Иначе
		Выборка = РезультатЗапроса.Выбрать(); 
		Пока Выборка.Следующий() Цикл  
			ЦенаСтрокой = СтрЗаменить(Строка(Выборка.Цена),Символы.НПП,""); 
			РазмерСтроки = СтрДлина(ЦенаСтрокой);
			СуммаЦелых = Лев(ЦенаСтрокой,РазмерСтроки-3);
			ДробнаяЧасть = СтрНайти(ЦенаСтрокой,",");
			Если ДробнаяЧасть = 0 Тогда 
				СуммаКопеек = "00"; 
				СуммаЦелых = ЦенаСтрокой;
			Иначе
				СуммаКопеек = Прав(ЦенаСтрокой,2); 
				СуммаЦелых = Лев(ЦенаСтрокой,РазмерСтроки-3);
			КонецЕсли;
			ЦенаТовара = СтрШаблон("%1 руб. %2 коп.",СуммаЦелых,СуммаКопеек);  
			НаименованиеТовара = Выборка.НаименованиеТовара;
		КонецЦикла;
	КонецЕсли;

	ЧтениеHTML = Новый ЧтениеHTML;
	ЧтениеHTML.ОткрытьФайл("C:\Ценник2.html", "UTF-8"); //Размешение шаблона HTML ценника.
	ПостроительDOM = Новый ПостроительDOM;
	ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
	ЧтениеHTML.Закрыть();
	АдресHTML = ПолучитьТекстHTML(ДокументHTML);
	СтрокаЗаменыЦены = "Цена товара";
	СтрокаЗаменыНаименование = "Карточка товара";
	ЦенаHTML = СтрЗаменить(АдресHTML,СтрокаЗаменыЦены, ЦенаТовара);
	КарточкаТовараHTML = СтрЗаменить(ЦенаHTML,СтрокаЗаменыНаименование,НаименованиеТовара);
	
	Возврат КарточкаТовараHTML;
	
КонецФункции  

Функция ПолучитьТекстHTML(ДокументHTML) 
	
	ЗапиcьHTML = Новый ЗаписьHTML;	
	ЗапиcьHTML.УстановитьСтроку();	
	ЗаписьDOM = Новый ЗаписьDOM;	
	ЗаписьDOM.Записать(ДокументHTML, ЗапиcьHTML);
	
	Возврат ЗапиcьHTML.Закрыть();
	
КонецФункции

Текст HTML-Шаблона 

<!DOCTYPE html>
<html>
<head>
<style>
.card {
  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
  max-width: 1000px;
  min-height: 640px; 
  margin: auto;
  text-align: center;
  font-family: arial;
  font-size: 48px;
}

.price {
  color: grey;
  font-size: 96px;
}

.card button {
  border: none;
  outline: 0;
  padding: 12px;
  color: white;
  background-color: #000;
  text-align: center;
  cursor: pointer;
  width: 100%;
  font-size: 18px;
}

.card button:hover {
  opacity: 0.7;
}
</style>
</head>
<body>



<div class="card">
  <h1>Карточка товара</h1>
  <meta charset="UTF-8">
  <p class="price">Цена товара</p>
  <p>Финские товары лучшего качества</p>
  <p><button>ИП Плошкиш В.П.</button></p>
</div>

</body>
</html>

 

has been added to your cart:
Оформление заказа