Форма подбора справочника "Номенклатура" в виде динамических кнопок в РМК

1. Gok9 06.12.22 10:43 Сейчас в теме
Здравствуйте, реализую в форму подбора справочника "Номенклатура" в виде динамических кнопок в РМК, код не свой, я ещё начинающий))
При выборе товара, товар должен добавляться в корзину "Товары", как можно реализовать такую функцию как ещё доработать код?
        &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        КоличествоКнопокНоменклатурыПоШирине 	= 2;
	НеОтображатьНоменклатуруБезПапок 		= Ложь;
	РазмерШириныКнопокНоменклатуры 			= 25;
	РазмерВысотыКнопокНоменклатуры 			= 4;
	РазмерШрифтаКнопокНоменклатуры 			= 8;
	
	
	ТекущийУровень = 0;
	ТекущийРодитель = Справочники.Номенклатура.ПустаяСсылка();
	
	Группа       = Неопределено;
	Индекс       = 0;
	ИндексГруппы = 0;
		
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Номенклатура,
	|	Номенклатура.Родитель КАК Родитель,
	|	Номенклатура.Наименование КАК Наименование,
	|	ВЫБОР
	|		КОГДА Номенклатура.Ссылка.Родитель = &ПустойРодитель
	|			ТОГДА 0
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 1
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 2
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 3
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 4
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 5
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 6
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 7
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 8
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 9
	|		КОГДА Номенклатура.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
	|			ТОГДА 10
	|	КОНЕЦ КАК Уровень,
	|	Номенклатура.ЭтоГруппа КАК ЭтоГруппа
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЭтоГруппа УБЫВ,
	|	Наименование";
	Запрос.УстановитьПараметр("ПустойРодитель", Справочники.Номенклатура.ПустаяСсылка());
	
	ТЗНоменклатура .Загрузить(Запрос.Выполнить().Выгрузить());
	
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("Уровень", 0);
	Если НеОтображатьНоменклатуруБезПапок = Истина Тогда
		ПараметрыОтбора.Вставить("ЭтоГруппа", Истина);	
	КонецЕсли;
	
	НайденныеСтроки = ТЗНоменклатура.НайтиСтроки(ПараметрыОтбора);
	
	ТекШрифт = Новый Шрифт( ,РазмерШрифтаКнопокНоменклатуры);
//	ТекШрифт.Размер = РазмерШрифтаКнопокНоменклатуры;
	
	Для Каждого Стр Из НайденныеСтроки Цикл
		
		ТекИндекс = ОтсечьПробелы(Строка(ТЗНоменклатура.Индекс(Стр)));
		ИмяКнопки = "Товар_" + ТекИндекс;
		
		Если Группа = Неопределено ИЛИ Индекс >= КоличествоКнопокНоменклатурыПоШирине Тогда
			ИндексГруппы = ИндексГруппы + 1;
			Группа = Элементы.Добавить("Группа_" + ИндексГруппы, Тип("ГруппаФормы"), ЭтаФорма.Элементы.Группа2);
			Группа.Вид                 = ВидГруппыФормы.ОбычнаяГруппа;
			Группа.ОтображатьЗаголовок = Ложь;
			Группа.Отображение         = ОтображениеОбычнойГруппы.Нет;
			Группа.Группировка         = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
			Индекс = 0;
		КонецЕсли;
		
		Индекс = Индекс + 1;
		
		//Сообщить(ИмяКнопки);
		НоваяКоманда = ЭтаФорма.Команды.Добавить(ИмяКнопки);
		НоваяКоманда.Действие        = "ВыбранТовар";	
		НоваяКоманда.Отображение     = ОтображениеКнопки.Текст;	
		НоваяКоманда.Заголовок = Стр.Наименование;
				
		НоваяКнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), Группа);
		НоваяКнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
		НоваяКнопка.ИмяКоманды = НоваяКоманда.Имя;
		НоваяКнопка.Высота = РазмерВысотыКнопокНоменклатуры;
		НоваяКнопка.Ширина = РазмерШириныКнопокНоменклатуры;
		НоваяКнопка.Шрифт = ТекШрифт;
		Если Стр.ЭтоГруппа = Истина Тогда
			НоваяКнопка.ЦветФона = WebЦвета.Желтый;
		Иначе
			НоваяКнопка.ЦветФона = WebЦвета.Бежевый;
		КонецЕсли;
		
	КонецЦикла;
		
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот