Фильтр в форме выбора справочника с запросом
Всем привет.
Необходимо фильтровать форму выбора (в документе) справочника по наименованию (ссылке) этого справочника. Есть справочник "Сотрудники" - в нем 2 табличные части "Организации" и "Подразделения" (в них происходит выбор из справочников организаций и подразделений.
В документе необходимо выбрать подразделение, далее сотрудника (фильтрацию сотрудников по подразделениям на основании табличной части в справочнике сотрудники я настроил), далее необходимо выбрать организацию (на основании табличной части того же справочника сотрудников).
Написал код, в "ЗначениеОтбора" подпихиваю результат запроса. Запрос обращается к ТЧ справочника сотрудников и в результате выдает ссылки (проверял запрос с обработкой в режиме предприятия, там запрос выдает все значения отдельными ссылками).
В итоге запрос возвращает одно найденное значение (первое) и форма выбора фильтруется по этому значению.
Необходимо, что бы запрос возвращал все значения и фильтрация формы происходила по этим значениям.
Помогите пожалуйста разобраться.
Необходимо фильтровать форму выбора (в документе) справочника по наименованию (ссылке) этого справочника. Есть справочник "Сотрудники" - в нем 2 табличные части "Организации" и "Подразделения" (в них происходит выбор из справочников организаций и подразделений.
В документе необходимо выбрать подразделение, далее сотрудника (фильтрацию сотрудников по подразделениям на основании табличной части в справочнике сотрудники я настроил), далее необходимо выбрать организацию (на основании табличной части того же справочника сотрудников).
Написал код, в "ЗначениеОтбора" подпихиваю результат запроса. Запрос обращается к ТЧ справочника сотрудников и в результате выдает ссылки (проверял запрос с обработкой в режиме предприятия, там запрос выдает все значения отдельными ссылками).
В итоге запрос возвращает одно найденное значение (первое) и форма выбора фильтруется по этому значению.
Необходимо, что бы запрос возвращал все значения и фильтрация формы происходила по этим значениям.
Помогите пожалуйста разобраться.
&НаКлиенте
Процедура ОрганизацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура("Ссылка", ОргСотр(Объект.Сотрудник));
ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.Организации.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОргСотр(Сотрудник)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СотрудникиОрганизации.Организации КАК Организация
|ИЗ
| Справочник.Сотрудники.Организации КАК СотрудникиОрганизации
|ГДЕ
| СотрудникиОрганизации.Ссылка = &Сотрудник" ;
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Следующий() Тогда
Возврат РезультатЗапроса.Организация;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
ПоказатьПо теме из базы знаний
- Всякие полезности
- Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) Вернет 1 значение из запроса, если в нем несколько значений будет.
Либо как в вашем случае
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить()[0].Организация;
КонецЕсли;
Либо как в вашем случае
Пока РезультатЗапроса.Следующий() Цикл
Организация = РезультатЗапроса.Организация;
КонецЦикла;
Возврат Организация;
(11)
Попробовал данный код, возвращает "неопределенно".
Немного дописал
Так возвращает второе значение (не последнее, а именно второе)
Пока РезультатЗапроса.Следующий Цикл
Организация = РезультатЗапроса.Организация;
КонецЦикла;
Организация = РезультатЗапроса.Организация;
КонецЦикла;
Попробовал данный код, возвращает "неопределенно".
Немного дописал
Пока РезультатЗапроса.Следующий() Цикл
Возврат РезультатЗапроса.Организация;
КонецЦикла;
Иначе
Возврат "";
КонецЕсли;
Возврат РезультатЗапроса.Организация;
КонецЦикла;
Иначе
Возврат "";
КонецЕсли;
Так возвращает второе значение (не последнее, а именно второе)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот