Не выбирается элемент справочника из формы выбора с установленным отбором

Max

Компьютерщик
Почётный участник
Регистрация
12 Фев 2008
Сообщения
11,798
Реакции
173
Баллы
63
Приветствую.
Написал код в форме справочника 1С, который открывает форму выбора другого справочника с определенным отбором:
Код:
Процедура СотрудникНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;   
    ЗначениеОтбора = ПредопределенноеЗначение("Перечисление.РолиСотрудников.Машинист");
    ПараметрыОтбора = Новый Структура("РольСотрудника", ЗначениеОтбора);
    ПараметрыФормы = Новый Структура("Отбор", ПараметрыОтбора); 
    ОткрытьФорму("Справочник.Сотрудники.ФормаВыбора", ПараметрыФормы);         
КонецПроцедуры
Однако, после этого перестал выбираться сотрудник.
Собственно, если закомментировать или удалить строку 'СтандартнаяОбработка = Ложь' сотрудник выбирается, но перестает работать отбор.
Подскажите, каким образом выйти из данной ситуации?
 
Проблема может быть в том, что при установке `СтандартнаяОбработка = Ложь` вы отключаете стандартное поведение выбора, и это может мешать обработке отбора.

Я бы попробовал следующий подход: вместо полного отключения стандартной обработки, можно оставить её включенной и просто добавить фильтрацию в обработчик события после открытия формы. Это позволит сохранить стандартное поведение, но с вашим требуемым отбором.

Также стоит проверить, правильно ли вы передаете параметры отбора в открытую форму. Убедитесь, что структура `ПараметрыОтбора` действительно содержит нужные значения.

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