Чек ККМ / Быстрые товары / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	Группа       = Неопределено;
	Индекс       = 0;
	ИндексГруппы = 0;
	
	ГорячиеКлавиши = Параметры.ГорячиеКлавиши;
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ГорячиеКлавиши.БыстрыеТовары КАК БыстрыеТовары
	|ИЗ
	|	Справочник.ГорячиеКлавиши КАК ГорячиеКлавиши
	|ГДЕ
	|	ГорячиеКлавиши.Ссылка = &Ссылка");
	
	Запрос.УстановитьПараметр("Ссылка", ГорячиеКлавиши);
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	УстановитьПривилегированныйРежим(Ложь);
	
	ЕстьБыстрыеТовары = Ложь;
	Если Выборка.Следующий() Тогда
		
		ЕстьБыстрыеТовары = Истина;
		
		ВыборкаБыстрыеТовары = Выборка.БыстрыеТовары; // ХранилищеЗначения
		ТЧБыстрыеТовары = ВыборкаБыстрыеТовары.Получить(); // см. Справочники.ГорячиеКлавиши.НоваяКоманда.Таблица
		
		Для Каждого СтрокаТЧ Из ТЧБыстрыеТовары Цикл
			
			Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
				
				ИмяКнопки = "БыстрыйТовар_" + ТЧБыстрыеТовары.Индекс(СтрокаТЧ);
				
				Если Группа = Неопределено ИЛИ Индекс >= 6 Тогда
					ИндексГруппы = ИндексГруппы + 1;
					Группа = Элементы.Добавить("Группа_" + ИндексГруппы, Тип("ГруппаФормы"), ЭтаФорма);
					Группа.Вид                 = ВидГруппыФормы.ОбычнаяГруппа;
					Группа.ОтображатьЗаголовок = Ложь;
					Группа.Отображение         = ОтображениеОбычнойГруппы.Нет;
					Группа.Группировка         = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
					Индекс = 0;
				КонецЕсли;
				
				Индекс = Индекс + 1;
				
				НоваяКоманда = ЭтаФорма.Команды.Добавить(ИмяКнопки);
				НоваяКоманда.Действие        = "ВыбранБыстрыйТовар";
				
				НоваяКоманда.Отображение     = ОтображениеКнопки.Текст;
				НоваяКоманда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша[СтрокаТЧ.Клавиша], СтрокаТЧ.Alt, СтрокаТЧ.Ctrl, СтрокаТЧ.Shift);
				
				Если ЗначениеЗаполнено(СтрокаТЧ.Заголовок) Тогда
					НоваяКоманда.Заголовок = СтрокаТЧ.Заголовок;
				Иначе
					НоваяКоманда.Заголовок = Строка(СтрокаТЧ.Номенклатура);
				КонецЕсли;
				НоваяКоманда.Заголовок = НоваяКоманда.Заголовок + Символы.ПС + ОбщегоНазначенияУТ.ПредставлениеСочетанияКлавиш(НоваяКоманда.СочетаниеКлавиш);
				
				НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), Группа);
				НоваяКнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
				НоваяКнопка.ИмяКоманды = НоваяКоманда.Имя;
				НоваяКнопка.Высота = 3;
				НоваяКнопка.Ширина = 12;
				
				НовыйТовар = БыстрыеТовары.Добавить();
				ЗаполнитьЗначенияСвойств(НовыйТовар, СтрокаТЧ);
				НовыйТовар.ИмяКоманды = НоваяКоманда.Имя;
				
			КонецЕсли;
			
		КонецЦикла;
	
	КонецЕсли;
	
	Элементы.НетБыстрыхТоваров.Видимость = Не ЕстьБыстрыеТовары;
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийФормы

// Параметры:
// 	Команда - КомандаФормы - 
&НаКлиенте
Процедура ВыбранБыстрыйТовар(Команда)
	
	ДанныеТовара = ДанныеТовара(Команда.Имя);
	
	ПараметрыОповещения = Новый Структура();
	ПараметрыОповещения.Вставить("Номенклатура", ДанныеТовара.Номенклатура);
	ПараметрыОповещения.Вставить("Характеристика", ДанныеТовара.Характеристика);
	ПараметрыОповещения.Вставить("Упаковка", ДанныеТовара.Упаковка);
	ПараметрыОповещения.Вставить("ТипНоменклатуры", ДанныеТовара.ТипНоменклатуры);
	ПараметрыОповещения.Вставить("КоличествоУпаковок", 1);
	ПараметрыОповещения.Вставить("ФормаВладелец", ВладелецФормы.УникальныйИдентификатор);
	
	Если ДанныеТовара <> Неопределено Тогда
		Оповестить("ВыбранБыстрыйТовар", ПараметрыОповещения);
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// Параметры:
// 	Команда - КомандаФормы - 
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция ДанныеТовара(ИмяКоманды)
	
	НайденныеСтроки = БыстрыеТовары.НайтиСтроки(Новый Структура("ИмяКоманды", ИмяКоманды));
	Если НайденныеСтроки.Количество() > 0 Тогда
		
		ДанныеСтроки = НайденныеСтроки[0];
		
		ТипНоменклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеСтроки.Номенклатура, "ТипНоменклатуры");
		
		СтруктураВозврата = Новый Структура();
		СтруктураВозврата.Вставить("Номенклатура", ДанныеСтроки.Номенклатура);
		СтруктураВозврата.Вставить("Характеристика", ДанныеСтроки.Характеристика);
		СтруктураВозврата.Вставить("Упаковка", ДанныеСтроки.Упаковка);
		СтруктураВозврата.Вставить("ТипНоменклатуры", ТипНоменклатуры);

		Возврат СтруктураВозврата;
		
	Иначе
		Возврат Неопределено;
	КонецЕсли;
	
КонецФункции

#КонецОбласти

Связанные материалы