Фильтр в форме выбора справочника с запросом

1. usershmuser 07.04.23 13:29 Сейчас в теме
Всем привет.
Необходимо фильтровать форму выбора (в документе) справочника по наименованию (ссылке) этого справочника. Есть справочник "Сотрудники" - в нем 2 табличные части "Организации" и "Подразделения" (в них происходит выбор из справочников организаций и подразделений.
В документе необходимо выбрать подразделение, далее сотрудника (фильтрацию сотрудников по подразделениям на основании табличной части в справочнике сотрудники я настроил), далее необходимо выбрать организацию (на основании табличной части того же справочника сотрудников).
Написал код, в "ЗначениеОтбора" подпихиваю результат запроса. Запрос обращается к ТЧ справочника сотрудников и в результате выдает ссылки (проверял запрос с обработкой в режиме предприятия, там запрос выдает все значения отдельными ссылками).
В итоге запрос возвращает одно найденное значение (первое) и форма выбора фильтруется по этому значению.
Необходимо, что бы запрос возвращал все значения и фильтрация формы происходила по этим значениям.

Помогите пожалуйста разобраться.


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


&НаСервереБезКонтекста
Функция ОргСотр(Сотрудник)
   
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	СотрудникиОрганизации.Организации КАК Организация
	|ИЗ
	|	Справочник.Сотрудники.Организации КАК СотрудникиОрганизации
	|ГДЕ
	|	СотрудникиОрганизации.Ссылка = &Сотрудник" ;
	
	Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
		
	Если РезультатЗапроса.Следующий() Тогда   
		Возврат РезультатЗапроса.Организация;
	Иначе
	Возврат ""; 
	КонецЕсли;
	
КонецФункции
Показать
По теме из базы знаний
Найденные решения
16. user5300 1021 07.04.23 15:11 Сейчас в теме
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 07.04.23 14:10 Сейчас в теме
(1)
там запрос выдает все значения отдельными ссылками
..
В итоге запрос возвращает одно найденное значение (первое)
Как бы определится-то, не?
3. usershmuser 07.04.23 14:15 Сейчас в теме
(2)
(2)Запрос при использовании обработки "Консоль запросов" данный запрос выдает значения отдельными ссылками.
Мой код выдает только первое.
4. RustamZz 07.04.23 14:17 Сейчас в теме
(3) А когда вы писали
Возврат РезультатЗапроса.Организация; 
думали что тут будет?
6. usershmuser 07.04.23 14:22 Сейчас в теме
(4)Будьте добры, скажите как нужно, помогите начинающему.
8. RustamZz 07.04.23 14:26 Сейчас в теме
(6) Открыть отладчик, остановиться на строке, смотреть на результат, много думать.
succub1_5; +1 Ответить
9. usershmuser 07.04.23 14:27 Сейчас в теме
(8)Данный метод был применен, пробовал цикл, но у меня не получилось. Направьте хоть в нужном направлении
10. RustamZz 07.04.23 14:32 Сейчас в теме
(9) На занятиях по 1С преподаватель вас с какими объектами уже познакомил, хранящими несколько значений?
13. usershmuser 07.04.23 14:37 Сейчас в теме
(10)Я сам, читаю практическое пособие разработчика (саморазвитие наше все)
15. RustamZz 07.04.23 14:40 Сейчас в теме
(13) Похоже несколько глав вы пролистнули.
5. user1880116 07.04.23 14:20 Сейчас в теме
Если РезультатЗапроса.Следующий() Тогда
Возврат РезультатЗапроса.Организация;

А за следующими строками кто пойдет?
succub1_5; +1 Ответить
7. usershmuser 07.04.23 14:24 Сейчас в теме
(2)
(5)Как сходить за следующими строками?
11. user1671936 1 07.04.23 14:34 Сейчас в теме
(7)
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить()[0].Организация;
КонецЕсли;
 
Вернет 1 значение из запроса, если в нем несколько значений будет.
Либо как в вашем случае
Пока РезультатЗапроса.Следующий() Цикл
Организация = РезультатЗапроса.Организация;
КонецЦикла;
Возврат Организация;
12. usershmuser 07.04.23 14:35 Сейчас в теме
14. user1671936 1 07.04.23 14:37 Сейчас в теме
(12)РезультатЗапроса.Следующий() , скобочки пропустил, без них ошибку выдаст.
17. usershmuser 07.04.23 15:13 Сейчас в теме
(11)
Пока РезультатЗапроса.Следующий Цикл
Организация = РезультатЗапроса.Организация;
КонецЦикла;

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

Так возвращает второе значение (не последнее, а именно второе)
16. user5300 1021 07.04.23 15:11 Сейчас в теме
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Организация");
18. usershmuser 07.04.23 15:23 Сейчас в теме
(16)Все супер!
С данным кодом возвращается массив, работает!
Спасибо огромное!
Оставьте свое сообщение

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