Как открыть форму выбора с отбором по организации?

1. user1444986 10.09.20 16:51 Сейчас в теме
У документа есть реквизит "Организация" и табличная часть в которой находиться реквизит "Сотрудник". Как при открытии формы выбора выводить форму именно с теми сотрудниками которые работают в данной организации. Пробовал через свойство реквизита "Связи параметров выбора" - не выходит.
Helly_ti; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. lefthander 10.09.20 20:59 Сейчас в теме
(1)
Как при открытии формы выбора выводить форму именно с теми сотрудниками которые работают в данной организации.
А каким образом сотрудники связаны с организацией?
5. user1444986 10.09.20 21:03 Сейчас в теме
(4)
У каждого сотрудника есть реквизит организация.
6. lefthander 10.09.20 21:08 Сейчас в теме
(5)через настройки
Прикрепленные файлы:
2. VictorRGB2 13 10.09.20 17:57 Сейчас в теме
передайте в форму выбора параметры с нужными вам значениями отбора, а в форме выбора при открытии установите условия отбора из полученных параметров
3. user1444986 10.09.20 20:53 Сейчас в теме
(2) Спасибо за подсказку. Не могли бы продемонстрировать данный подход кодом?
7. farengeit00 11.09.20 10:47 Сейчас в теме
(3)
&НаКлиенте
Процедура ТаблицаСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ЗначениеОтбора = Новый Структура("Организация", Объект.Организация);
	ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);
	ОткрытьФорму("Справочник.Сотрудник.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
Helly_ti; +1 Ответить
9. farengeit00 11.09.20 11:54 Сейчас в теме
(7)Тут же.
&НаКлиенте
Процедура ТаблицаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	Строка = Элементы.Таблица.ТекущиеДанные;
	Строка.Сотрудник = ВыбранноеЗначение;
КонецПроцедуры

А в модуле формы выбора справочника
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ОповеститьОВыборе(ВыбраннаяСтрока); 
КонецПроцедуры
Показать
8. VictorRGB2 13 11.09.20 11:15 Сейчас в теме
(3) первое, что надо сделать, это в форме выбора, в динамическом списке определиться с реквизитом, для которого будет устанавливаться отбор по параметру формы при открытии
дальше примерно так, на примере формы выбора сотрудников с отбором по организации документа

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


или через методы конфы, но тут надо смотреть в саму конфу как в ней это вызывается для форм, например так
		Список.Параметры.УстановитьЗначениеПараметра("Организация", Параметры.ОрганизацияСотрудника);
		ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
			Список, 
			"Организация", 
			Параметры.ОрганизацияСотрудника, 
			ВидСравненияКомпоновкиДанных.Равно,
			, 
			Истина);
Показать


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


вариант 2
основан на том,что сотрудник выбирается из выпадающего списка
в событие элемента формы НачалоВыбора пишем код установки параметров формы выбора, например
&НаКлиенте
Процедура СотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	Если НЕ ЗначениеЗаполнено(ЭтотОбъект.Организация) Тогда
	      Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Не выбрана организация!";
    Сообщение.Поле = "Организация";
    Сообщение.УстановитьДанные(ЭтотОбъект);
    Сообщение.Сообщить();

Возврат;
	КонецЕсли; 

	ОрганизацияСотрудника = ЭтотОбъект.Организация;
		
	НастройкиОтбора = Новый НастройкиКомпоновкиДанных;
	
	ЭлементыОтбора = НастройкиОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементыОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
	ЭлементыОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементыОтбора.ПравоеЗначение = ОрганизацияСотрудника ;
	ЭлементыОтбора.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиОтбора);
		
	ОткрытьФормуМодально("Справочник.Сотрудники.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
	
КонецПроцедуры
Показать
10. sergioevans 12.09.20 01:13 Сейчас в теме
А почему с параметрами выбора не получилось? Самый простой способ же.
Если в Сотруднике есть реквизит Организация и в вашем документе тоже есть реквизит Организация, то для элемента Сотрудник (в табличной части вашего документа) устанавливаем связь параметров выбора и ничего не нужно дописывать:
Прикрепленные файлы:
11. slasher777 29.09.20 19:44 Сейчас в теме
В форме выбора, в динамическом списке определиться с реквизитом, для которого будет устанавливаться отбор по параметру формы при открытии дальше примерно так, на примере формы выбора сотрудников с отбором по организации документа.
12. t278 56 05.04.24 05:14 Сейчас в теме
 Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	 //Параметры.Отбор.Родитель    ;
	 //Список.Отбор ;  
	 Если Параметры.Отбор.количество()>0 Тогда
	     ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	     ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель"); //    номер
	     ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	     ЭлементОтбора.Использование = Истина;
	     ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
	     ЭлементОтбора.ПравоеЗначение =  Параметры.Отбор.Родитель; // "000000001";
	 КонецЕсли;  
	 // ЭтотОбъект
 КонецПроцедуры
Показать


РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;

мне это нужно было установить! и заработало
Оставьте свое сообщение

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