helpf.pro
Регистрация

v8.2 УП: отбор значений в быстром выборе (выпадающий список)

Richard_wolf
10.03.2014 21:47Прочитано: 7935
в форме документа необходимо выбрать сотрудника (выпадающий список). Чтобы не мешались неработающие на данный момент сотрудники, необходимо установить отбор. У справочника "Сотрудники" реквизит булево - "Действующий".

реализовал это вот так. подскажите - может есть вариант менее напоминающий сколиоз мозга в поздней стадии. Как минимум - хотелось бы понять - можно ли реализовать выбор без нескольких обращений к &НаСервере.
Заранее благодарю

Код 1C v 8.2 УП
 
&НаКлиенте
Процедура ПриёмщикНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) // хочу показывать только работающих сотрудников
РаботающиеСотрудники = ВыборРаботающихСотрудников();

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

&НаСервере
функция ВыборРаботающихСотрудников()
РаботающиеСотрудники = Новый СписокЗначений;
выборкаСотрудников = Справочники.Сотрудники.Выбрать();
пока выборкаСотрудников.Следующий()=1 цикл
Если выборкаСотрудников.Действующий тогда
РаботающиеСотрудники.Добавить(выборкаСотрудников.Ссылка);
КонецЕсли;
КонецЦикла;
Возврат РаботающиеСотрудники;

КонецФункции

&НаСервере
процедура ПрисвоениеЗначенияПриемщик(значениеВыбранногоСотрудника)
Объект.Приёмщик=значениеВыбранногоСотрудника;
КонецПроцедуры

Yandex
Возможно, вас также заинтересует
Реклама на портале
Richard_wolf
13.03.2014 11:07Ответ № 1
нашел решение более быстрое. нужно было лишь вчитаться в свойства "НачалоВыбора"

Код 1C v 8.2 УП
 //ПОКАЗЫВАЕМ ТОЛЬКО РАБОТАЮЩИХ НА ДАННЫЙ МОМЕНТ РАБОТНИКОВ
&НаСервере
функция ВыборРаботающихСотрудников()
РаботающиеСотрудники = Новый СписокЗначений;
выборкаСотрудников = Справочники.Сотрудники.Выбрать();
пока выборкаСотрудников.Следующий()=1 цикл
Если выборкаСотрудников.Действующий тогда
РаботающиеСотрудники.Добавить(выборкаСотрудников.Ссылка);
КонецЕсли;
КонецЦикла;
Возврат РаботающиеСотрудники;
КонецФункции

&НаКлиенте
Процедура ПриёмщикНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) // хочу показывать только работающих сотрудников
ДанныеВыбора=ВыборРаботающихСотрудников(); ///!!!!
СтандартнаяОбработка=Ложь;
КонецПроцедуры
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.