Приветствую всех.
Есть справочник. Пусть будет организации, но в данном случае не важно совсем.
Есть пользователи, которым по определенной логике настраивается доступ к организациям, то есть они должны видеть и иметь возможность выбрать только те организации, которые им доступны в "настройках".
Формы списка и выбора при открытии ограничивают список организаций как положено, но ничто не мешает пользователю скажем в документе реализации при выборе организации не открывать форму выбора, а начать писать название в самом поле ввода.
Так вот, нельзя отнимать право ввода по строке и нельзя использовать РЛС... и нельзя как-то запретить изменять текст поля ввода или сбрасывать его и тп. потому что организации используются в куче документов, в отборах отчетов и тп. то есть просто напросто во все формы не залезешь, их очень много

Как можно ограничить список предлагаемых организаций при вводе по строке, не используя РЛС? Есть какие-то обработчики событий или что-то еще, что поможет в такой ситуации с такими ограничениями?
Спасибо заранее

П.С.: работаем как в обычном приложении, так и с управляемыми формами. Платформа 8.3.13.1690 , конфигурация своя
---
В Модуле менеджера справочника есть процедура "ОбработкаПолученияДанныхВыбора" она отрабатывет при вводе строки. Можно ДанныеВыбора заполнять нужными значениями
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

  ДанныеВыбора = Новый СписокЗначений;
  ДанныеВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));

КонецПроцедуры
---
В Модуле менеджера справочника есть процедура "ОбработкаПолученияДанныхВыбора" она отрабатывет при вводе строки. Можно ДанныеВыбора заполнять нужными значениями
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

  ДанныеВыбора = Новый СписокЗначений;
  ДанныеВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));

КонецПроцедуры
---
Спасибо, попробовал, действительно работает. Но не везде...
Работает если начинаю ввод в реквизите с типом "организации", но например если это список значений с типом значений "организации", то при добавлении значения в список и попытке ввода, данная процедура не выполняется. так же не работает, если пытаюсь сделать отбор в динамическом списке или в отчете...
---
Но не везде...
Отрабатывает везде, если вводить по строке.
---
так я и ввожу по строке)))
есть реквизит "Организация" в форме документа. Кликаю по нему, начинаю вбивать "ООО Р" и выполняется процедура, показываются только доступные организации содержащие "ООО Р"

теперь другая ситуация. есть отчет на СКД, в котором есть отбор по полю "организация". так же встаем в поле отбора и начинаем писать "ООО Р" выпадает весь список организаций содержащий эти символы... в процедуре стоит точка останова и в этом случае я в неё даже не попадаю...
аналогично и в случае, если есть реквизит с типом "Список значений", значения которого имеют тип "организации", проваливаюсь в список, жму добавить, в появившемся поле начинаю писать "ООО Р" и опять не попадаю на точку останова в процедуре и вижу весь список организаций.
---
Странно, сейчас проверил. У меня из отчетов на СКД и в динамических списках срабатывает
---
Значит буду ковырять свою сторону... может быть дело в клиенте.. пока пробовал только обычное приложение. прогоню сейчас по тонкому/толстому клиенту. если нигде не сработает, может тогда сами элементы на формах в обработчиках при начале ввода или выбора отключают стандартную обработку..
в любом случае огромное спасибо.
---
А как это сделать для обычных форм?
---
Понимаю, что вопросу много лет, но вдруг кому пригодится, а дело было так: в справочнике появилась папка "Не используемые" и нужно было при выборе реквизита документа из этой папки отказывать пользователю, сообщая об устаревшем значении реквизита. Дело облегчалось тем, что на предприятии уже используется стандартная Подписка на событие ПередЗаписью для типа ДокументОбъект, в которой просто добавил код:

```1c
    #Если Клиент Тогда
    Если Отказ = Ложь И РежимЗаписи <> РежимЗаписиДокумента.ОтменаПроведения И Не Источник.ПометкаУдаления Тогда
    ТипМоегоСправочника = Тип("СправочникСсылка.МойСправочник");
    ПапкаНеиспользуемых = Справочники.МойСправочник.НайтиПоНаименованию("Не используемые");
    Для Каждого Реквизит ИЗ Источник.Метаданные().Реквизиты Цикл
    Если Реквизит.Тип.СодержитТип(ТипМоегоСправочника) Тогда
    Если Источник[Реквизит.Имя].Родитель = ПапкаНеиспользуемых Тогда
    СтрокаПодтверждения = "Нет";
    ВвестиЗначение(СтрокаПодтверждения, Строка(Источник[Реквизит.Имя]) + " больше НЕ ИСПОЛЬЗУЕТСЯ на предприятии, подтвердите, что вы используете его целенаправленно, введя в поле "Да, я в курсе":");
    Если ВРег(СтрокаПодтверждения) <> "ДА, Я В КУРСЕ" Тогда
    Отказ = Истина;
    Сообщить("Запись отклонена!!! Выбран неиспользуемый элемент в реквизите документа: " + Реквизит.Имя);
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    #КонецЕсли
```

В зависимости от ситуации код может усложниться, но, думаю, суть ясна