Ограничение ввода по строке

1. Johney20 28.03.18 11:16 Сейчас в теме
В конфе есть пользователь "Администратор". Он не является руководителем подразделения, поэтому не должен видеть список сотрудников в окне выбора в реквизите документа. (Скриншот прикрепила).

Для этого я написала процедурку, которая, в принципе, решила этот вопрос:

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

КонецПроцедуры
Показать


ПолучитьДоступныеПодразделенияНаСервере() - это:

&НаСервереБезКонтекста
Функция ПолучитьДоступныеПодразделенияНаСервере()
	Возврат ПараметрыСеанса.ДоступныеПодразделения
КонецФункции


Все отлично, это все работает. НО! Ведь он может не открывать список, а воспользоваться вводом по строке!? Какое событие отвечает з ввод по строке и как наложить отбор?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Alexey_ 27 28.03.18 11:43 Сейчас в теме
(1)СправочникМенеджер.<Имя справочника>
ОбработкаПолученияДанныхВыбора(<ДанныеВыбора>, <Параметры>, <СтандартнаяОбработка>)
Описание:
Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.
6. Johney20 28.03.18 12:30 Сейчас в теме
(4) А, то есть мне это даже нужно делать не на форме самого документа, а в модуле справочника?
11. Alexey_ 27 28.03.18 13:22 Сейчас в теме
7. user623969_dusa 28.03.18 12:38 Сейчас в теме
(1) не благодарным вы делом занялись запрещать администратору смотреть справочники, подскажу есть еще внешние обработки например консоль запросов - администратор сможет там увидеть любую информацию, если роли нельзя запретить чтение то все бесполезно, чисто для собственного успокоения
9. Johney20 28.03.18 12:40 Сейчас в теме
(7) Я понимаю, что администратор может все) Ну тут смысл немножко в другом)
2. FesenkoA 58 28.03.18 11:40 Сейчас в теме
А из роли "ввод по строке" удалить не подходит?
Merkalov; +1 Ответить
3. FesenkoA 58 28.03.18 11:42 Сейчас в теме
(2) или можно свойствах реквизита формі - свойства-использоватение=бістрій вібор - нет
5. Johney20 28.03.18 12:29 Сейчас в теме
(3) Нет, это все не подойдет, так как в некоторых документах администратор может видеть весь список.
8. FesenkoA 58 28.03.18 12:39 Сейчас в теме
(5) реквизит именно этого документа. Или в некоторых - это в "№00001" "№00004" и "№00041"? Тогда при открытии делайте то же самое с элементом программно
10. kar911 28.03.18 13:11 Сейчас в теме
Но ведь можно задать параметры выбора для поля, а ДоступныеПодразделения поместить в параметр и связать связи с параметрами выбора
12. Johney20 28.03.18 13:43 Сейчас в теме
(10) Мм, если это возможно - то решение всех проблем) Каким образом ДоступныеПодразделения поместить в параметр?
13. kar911 28.03.18 13:56 Сейчас в теме
(12)ну хоть ПриСозданииНаСервере на форме
14. kar911 28.03.18 14:02 Сейчас в теме
вот типо такого можно сделать
Прикрепленные файлы:
тест.epf
Fristayla; +1 Ответить
15. Akuji 22 28.03.18 15:17 Сейчас в теме
Вызывается во время начала ожидания ввода текста
АвтоПодборТекста, AutoCompleteText
16. Gazulo 25 27.01.21 12:40 Сейчас в теме
(15)
Вызывается во время начала ожидания ввода текста
АвтоПодборТекста, AutoCompleteText

В процедуре можно вставить необходимы параметр для передачи например из документа в процедуру ОбработкаПолученияДанныхВыбора(

ПараметрыПолученияДанных.Отбор.Вставить("НашПараметр",НашПараметр);
17. oops_74 05.09.21 20:32 Сейчас в теме
&НаСервереБезКонтекста
Функция ПолучитьДоступныеПодразделенияНаСервере()
	
	Возврат ПараметрыСеанса.ДоступныеПодразделения;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьМассивСотрудников()
	
	Запрос = Новый Запрос;
	
	Запрос.УстановитьПараметр("Подразделения", ПолучитьДоступныеПодразделенияНаСервере());
	
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Сотрудники.Ссылка
		|ИЗ
		|	Справочник.Сотрудники КАК Сотрудники
		|ГДЕ
		|	НЕ Сотрудники.ПометкаУдаления
		|	И НЕ Сотрудники.Уволен
		|	И Сотрудники.Подразделение В(&Подразделения)";
	
	Результат = Запрос.Выполнить();
	
	Если Не Результат.Пустой() Тогда
		
		Возврат Результат.Выгрузить().ВыгрузитьКолонку("Ссылка");
		
	Иначе
		
		Возврат Новый Массив;
		
	КонецЕсли;

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

&НаСервере
Процедура ЗаполнитьПараметрыВыбора()
	
	МассивСотрудников = ПолучитьМассивСотрудников();

	ПараметрВыбора = Новый ПараметрВыбора("Отбор.Ссылка", МассивСотрудников);
	
	МассивПараметровВыбора = Новый Массив();

	МассивПараметровВыбора.Добавить(ПараметрВыбора); 
	
	ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
	
	Элементы.Сотрудник.ПараметрыВыбора = ПараметрыВыбора;

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ЗаполнитьПараметрыВыбора();
	
КонецПроцедуры
Показать
Оставьте свое сообщение

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