Параметры в программно создаваемой кнопке формы.

1. Artem1405 25 04.12.20 00:32 Сейчас в теме
Как создать кнопку с параметрами? Или передать параметр в обработчик?
Ниже код: создал две кнопки, пользователь должен быть кассу, форма должна закрыться и передать ссылку из запроса, но как в обработчик команды передать эту ссылку нигде не могу найти.

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КассыККМ.Ссылка КАК Ссылка,
		|	КассыККМ.Наименование КАК Наименование
		|ИЗ
		|	Справочник.КассыККМ КАК КассыККМ
		|ГДЕ
		|	КассыККМ.РабочееМесто = &РабочееМесто
		|	И НЕ КассыККМ.ПометкаУдаления";
	
	Запрос.УстановитьПараметр("РабочееМесто", ПараметрыСеанса.РабочееМестоКлиента);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Кмд = ЭтаФорма.Команды.Добавить(СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ",""));
	    Кмд.Действие = "НажатиеКнопки";
	    Кмд.Заголовок = ВыборкаДетальныеЗаписи.Наименование;


	   
	    //Добавляем новую кнопку
	    Элемент2 = ЭтаФорма.Элементы.Добавить(СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ",""), Тип("КнопкаФормы"), ЭтаФорма);
	    Элемент2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	    Элемент2.ИмяКоманды = СтрЗаменить(ВыборкаДетальныеЗаписи.Наименование," ","");

	КонецЦикла;

&НаКлиенте
Процедура НажатиеКнопки(Элемент,здесь  ПАРАМЕТР)


     Закрыть( Или здесь должен быть параметр из создаваемой программно кнопки\команды)


КонецПроцедуры 


Показать
По теме из базы знаний
Найденные решения
9. user5300 1055 07.12.20 08:09 Сейчас в теме
 сч = 1;
	  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл


    ДобавляемыеРеквизиты = Новый Массив;
	
	ТипРеквизита = новый ОписаниеТипов("");
	
	РеквизитФормы = Новый РеквизитФормы(
		"КассаККМ" + сч,  //Имя реквизита формы
		ТипРеквизита,     //Тип
		"",               //Путь  (Пусто, "Объект", ИмяТЧ)
						  // например "Объект.Товары"	
		"Касса ККМ");//Заголовок
						  							 
	ДобавляемыеРеквизиты.Добавить(РеквизитФормы);
	
	//Заставляем форму создать новые реквизиты
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
	//Обращение к реквизиту формы из кода
	ЭтаФорма.КассаККМ = ВыборкаДетальныеЗаписи.Ссылка;
	
	//Вывод реквизита на форму (при необходимости)
	ПолеВвода = Элементы.Добавить("ФормаКассаККМ + сч", Тип("ПолеФормы"), ЭтаФорма);
	ПолеВвода.Вид = ВидПоляФормы.ПолеНадписи;
	ПолеВвода.ПутьКДанным = "КассаККМ + сч";
	ПолеВвода.Гиперссылка = Истина;
	сч = сч +1;
	    КонецЦикла;
Показать
Artem1405; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user5300 1055 04.12.20 08:52 Сейчас в теме
(1) Вместо кнопки создай гиперссылку (Декларация или полеНадписи) и при нажатии открывай ссылку
5. Artem1405 25 04.12.20 22:12 Сейчас в теме
(3) а хотя бы примерный код можете начиркать? Я не могу подобраться к реквизиту хоть какому нибудь.

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

Вот и ищу хоть какой нибудь способ передать в "НажатиеКнопки" наименование или ссылку на ккт на которую нажимает пользователь.
9. user5300 1055 07.12.20 08:09 Сейчас в теме
 сч = 1;
	  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл


    ДобавляемыеРеквизиты = Новый Массив;
	
	ТипРеквизита = новый ОписаниеТипов("");
	
	РеквизитФормы = Новый РеквизитФормы(
		"КассаККМ" + сч,  //Имя реквизита формы
		ТипРеквизита,     //Тип
		"",               //Путь  (Пусто, "Объект", ИмяТЧ)
						  // например "Объект.Товары"	
		"Касса ККМ");//Заголовок
						  							 
	ДобавляемыеРеквизиты.Добавить(РеквизитФормы);
	
	//Заставляем форму создать новые реквизиты
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
	//Обращение к реквизиту формы из кода
	ЭтаФорма.КассаККМ = ВыборкаДетальныеЗаписи.Ссылка;
	
	//Вывод реквизита на форму (при необходимости)
	ПолеВвода = Элементы.Добавить("ФормаКассаККМ + сч", Тип("ПолеФормы"), ЭтаФорма);
	ПолеВвода.Вид = ВидПоляФормы.ПолеНадписи;
	ПолеВвода.ПутьКДанным = "КассаККМ + сч";
	ПолеВвода.Гиперссылка = Истина;
	сч = сч +1;
	    КонецЦикла;
Показать
Artem1405; +1 Ответить
4. Sashares 35 04.12.20 10:53 Сейчас в теме
(1)Именно в обработчике команды - никак.
Обработчик события выполнения команды на форме содержит один параметр, это сама команда.

Как уже сказали - храните отдельно параметр, или в самой процедуре его получайте, если это возможно.
7. Artem1405 25 04.12.20 22:15 Сейчас в теме
(4)
или в самой процедуре его получайте, если это возможно
Невозможно(
2. platonov.e 159 04.12.20 07:45 Сейчас в теме
Сделайте реквизит формы, и положите параметр в него. Он доступен из любой процедуры формы, которой доступен контекст.
6. Artem1405 25 04.12.20 22:14 Сейчас в теме
(2) тут тоже не могу понять как сделать, получается что у меня команды создаются в цикле, а реквизит как создать? его значение в цикле перезапишется.
8. Sashares 35 05.12.20 01:18 Сейчас в теме
(6)
Создаете реквизит формы произвольного типа.
Создаете соответствие - где ключ - имя элемента формы (кнопки), а значение - ссылку на кассу.

Реквизиту формы присваиваете фиксированное соответствие, сформированное из этого соответствия.

Далее при нажатии на кнопку в обработчике команды находите текущий активный элемент - это будет кнопка, которую нажали. Берете имя этого элемента.

Из реквизита формы с фиксированным соответствием получаете ссылку на кассу по имени элемента.
Как-то так.
Оставьте свое сообщение

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