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