Отбор в динамическом списке на форме выбора

1. AlexUnder 17.03.24 10:37 Сейчас в теме
Доброго времени суток, камрады!
Подскажите пожалуйста, задача такая:
В форму выбора элементов справочника нужно выводить только определенный список элементов. Получаю список запросом.
Конфа самописная.
Как передать его в форму выбора?
На данный момент имею нерабочее решение:
&НаСервере
Функция КлиентНачалоВыбораНаСервере(ДанныеВыбора)
	 День = ТРег(Формат(Объект.Дата, "ДФ=дддд"));
	 СписокВыбора = Новый СписокЗначений;	

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

	//ДанныеВыбора = СписокВыбора;
	//Возврат(ДанныеВыбора);
	Возврат(СписокВыбора);
КонецФункции

&НаКлиенте
Процедура КлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	 Если Объект.ПодборПоДню тогда
		 СтандартнаяОбработка = Ложь;
//ДанныеВыбора =  КлиентНачалоВыбораНаСервере(ДанныеВыбора);
СтруктураПараметров = Новый Структура("ДанныеВыбора", КлиентНачалоВыбораНаСервере(ДанныеВыбора));
    ОткрытьФорму("Справочник.Клиенты.ФормаВыбора",СтруктураПараметров,Элемент);
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
3. AlexUnder 17.03.24 12:04 Сейчас в теме
Решил следующим образом, возможно кому-то пригодится:
&НаСервере
Функция КлиентНачалоВыбораНаСервере(ДанныеВыбора)
	День = ТРег(Формат(Объект.Дата, "ДФ=дддд"));
	СписокВыбора = Новый Массив;	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДеньМагазина","%" + День + "%");
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Клиенты.Наименование КАК Наименование,
	|	Клиенты.Ссылка КАК Ссылка,
	|	Клиенты.ДниДоставки КАК ДниДоставки
	|ИЗ
	|	Справочник.Клиенты КАК Клиенты
	|ГДЕ
	|	Клиенты.ДниДоставки ПОДОБНО &ДеньМагазина";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		СписокВыбора.Добавить(Выборка.Ссылка)	
	КонецЦикла;
	Возврат(СписокВыбора);
КонецФункции

&НаКлиенте
Процедура КлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	Если Объект.ПодборПоДню тогда
		СтандартнаяОбработка = Ложь;
		ЭлементыНоменклатуры = КлиентНачалоВыбораНаСервере(ДанныеВыбора);
		ЭлементОтбора = Новый Структура("Ссылка", новый ФиксированныйМассив(ЭлементыНоменклатуры));
		ПараметрыОткрытия = Новый Структура("Отбор", ЭлементОтбора);
		ОткрытьФорму("Справочник.Клиенты.ФормаВыбора", ПараметрыОткрытия, ЭтаФорма, ЭтаФорма.УникальныйИдентификатор);
	КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AlexUnder 17.03.24 12:04 Сейчас в теме
Решил следующим образом, возможно кому-то пригодится:
&НаСервере
Функция КлиентНачалоВыбораНаСервере(ДанныеВыбора)
	День = ТРег(Формат(Объект.Дата, "ДФ=дддд"));
	СписокВыбора = Новый Массив;	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДеньМагазина","%" + День + "%");
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Клиенты.Наименование КАК Наименование,
	|	Клиенты.Ссылка КАК Ссылка,
	|	Клиенты.ДниДоставки КАК ДниДоставки
	|ИЗ
	|	Справочник.Клиенты КАК Клиенты
	|ГДЕ
	|	Клиенты.ДниДоставки ПОДОБНО &ДеньМагазина";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		СписокВыбора.Добавить(Выборка.Ссылка)	
	КонецЦикла;
	Возврат(СписокВыбора);
КонецФункции

&НаКлиенте
Процедура КлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	Если Объект.ПодборПоДню тогда
		СтандартнаяОбработка = Ложь;
		ЭлементыНоменклатуры = КлиентНачалоВыбораНаСервере(ДанныеВыбора);
		ЭлементОтбора = Новый Структура("Ссылка", новый ФиксированныйМассив(ЭлементыНоменклатуры));
		ПараметрыОткрытия = Новый Структура("Отбор", ЭлементОтбора);
		ОткрытьФорму("Справочник.Клиенты.ФормаВыбора", ПараметрыОткрытия, ЭтаФорма, ЭтаФорма.УникальныйИдентификатор);
	КонецЕсли;
КонецПроцедуры
Показать
Оставьте свое сообщение

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