В конфе есть пользователь "Администратор". Он не является руководителем подразделения, поэтому не должен видеть список сотрудников в окне выбора в реквизите документа. (Скриншот прикрепила).
Для этого я написала процедурку, которая, в принципе, решила этот вопрос:
ПолучитьДоступныеПодразделенияНаСервере() - это:
Все отлично, это все работает. НО! Ведь он может не открывать список, а воспользоваться вводом по строке!? Какое событие отвечает з ввод по строке и как наложить отбор?
Для этого я написала процедурку, которая, в принципе, решила этот вопрос:
&НаКлиенте
Процедура СотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтруктураОтбор = Новый Структура;
СтруктураОтбор.Вставить("Подразделение", ПолучитьДоступныеПодразделенияНаСервере());
СтруктураОтбор.Вставить("Уволен",Ложь);
СтруктураОтбор.Вставить("ПометкаУдаления",Ложь);
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", СтруктураОтбор);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
Если ЗначениеЗаполнено(Элементы.ПраваДоступа.ТекущиеДанные.Сотрудник) Тогда
ПараметрыФормы.Вставить("Ключ", Элементы.ПраваДоступа.ТекущиеДанные.Сотрудник);
КонецЕсли;
ОткрытьФорму("Справочник.СотрудникиОрганизаций.ФормаВыбора", ПараметрыФормы, Элемент, ЭтаФорма);
КонецПроцедуры
ПоказатьПолучитьДоступныеПодразделенияНаСервере() - это:
&НаСервереБезКонтекста
Функция ПолучитьДоступныеПодразделенияНаСервере()
Возврат ПараметрыСеанса.ДоступныеПодразделения
КонецФункции
Все отлично, это все работает. НО! Ведь он может не открывать список, а воспользоваться вводом по строке!? Какое событие отвечает з ввод по строке и как наложить отбор?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)СправочникМенеджер.<Имя справочника>
ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Описание:
Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Описание:
Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
(1) не благодарным вы делом занялись запрещать администратору смотреть справочники, подскажу есть еще внешние обработки например консоль запросов - администратор сможет там увидеть любую информацию, если роли нельзя запретить чтение то все бесполезно, чисто для собственного успокоения
(15)
В процедуре можно вставить необходимы параметр для передачи например из документа в процедуру ОбработкаПолученияДанныхВыбора(
ПараметрыПолученияДанных.Отбор.Вставить("НашПараметр",НашПараметр);
Вызывается во время начала ожидания ввода текста
АвтоПодборТекста, AutoCompleteText
АвтоПодборТекста, AutoCompleteText
В процедуре можно вставить необходимы параметр для передачи например из документа в процедуру ОбработкаПолученияДанныхВыбора(
ПараметрыПолученияДанных.Отбор.Вставить("НашПараметр",НашПараметр);
&НаСервереБезКонтекста
Функция ПолучитьДоступныеПодразделенияНаСервере()
Возврат ПараметрыСеанса.ДоступныеПодразделения;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьМассивСотрудников()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Подразделения", ПолучитьДоступныеПодразделенияНаСервере());
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| НЕ Сотрудники.ПометкаУдаления
| И НЕ Сотрудники.Уволен
| И Сотрудники.Подразделение В(&Подразделения)";
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить().ВыгрузитьКолонку("Ссылка");
Иначе
Возврат Новый Массив;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ЗаполнитьПараметрыВыбора()
МассивСотрудников = ПолучитьМассивСотрудников();
ПараметрВыбора = Новый ПараметрВыбора("Отбор.Ссылка", МассивСотрудников);
МассивПараметровВыбора = Новый Массив();
МассивПараметровВыбора.Добавить(ПараметрВыбора);
ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Сотрудник.ПараметрыВыбора = ПараметрыВыбора;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьПараметрыВыбора();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот