Имя: Пароль:
1C
1С v8
Управляемые формы. При выборе контрагента из документа запретить смену родителя
0 altaykniga
 
21.11.18
14:23
Здравствуйте, уважаемые специалисты. Прошу подсказок умных людей.

в контрагентах - бардак. Нужно сделать так, чтобы при выборе грузоотправителя из документа можно было выбрать только контрагента из папки Грузоотправитель, при выборе грузоополучателя из документа можно было выбрать контрагента только из папки Грузополучатель.
создал такую процедуру:

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

но с ее помощью нельзя запретить пользователю изменить режим просмотра списка (ставит "Еще-Режим просмотра - Список") - и теперь пользователь может создать контрагента вообще без родителя.

Пробовал запретить пользователю доступ к команде «Еще – Режим просмотра», но не понял, как сделать недоступным для пользователя данное меню (Еще – Режим просмотра)

Буду признателен за подсказки, заранее благодарю за помощь!
1 asady
 
21.11.18
14:54
(0) зачем смешивать всё в кучу.

Грузоотправитель - свойство Контрагента

предлагаю создать подчиненный контрагентам справочник Грузоотправители - с единственным реквизитом: Контрагент(Грузоотправитель)
в документе у это реквизита настроить СвязиПараметровВыбора
Всё срастется и так - без кодирования
2 DrWatson
 
21.11.18
14:58
(0) У поля выбора контрагента нужно заполнить свойство ПараметрыВыбора. Это будет отбор при открытии списка и при быстром выборе. Причем этот отбор не снимается.
Если таким способом делать отбор по папке, то нужно иметь предопределенную папку. Другой вариант - сделать реквизит и заполнить его для всех контрагентов, которые должны выходить в списке выбора. Тогда они могут быть и в разных папках и всё "причесывание" списка можно ограничить заполнением этого реквизита.
3 AlexPC_Rus
 
21.11.18
16:26
(0) Если не хочется порядок наводить, тогда свою форму выбора делай. Там и отберешь ... жестко :)
4 Вафель
 
21.11.18
16:31
(2) такие параметры можно и в коде заполнять
5 runoff_runoff
 
21.11.18
16:35
параметры открытия формы: Отбор или ФиксированныеНастройки..
6 ptiz
 
21.11.18
16:44
(0) Пусть юзер выбирает что хочет, а проверку надо делать при записи документа.
7 altaykniga
 
21.11.18
16:52
(6) дело в том, что юзер может не только выбрать контрагента не из той группы, но может и создать контрагента не в той группе ) поэтому нужно "запирать" юзера в папке в зависимости от реквизита, из которого открывается форма выбора
8 altaykniga
 
21.11.18
16:53
(2) не хотелось делать предопределенную папку
9 altaykniga
 
21.11.18
16:54
(3) скорее всего буду делать свою форму выбора для справочника Контрагенты
10 altaykniga
 
21.11.18
16:55
(4) А при заполнении ПараметровВыбора из кода, можно указывать НЕпредопределенную группу?

Прошу дать ссылку или привести пример, как из кода устанавливать параметры выбора
11 ptiz
 
21.11.18
17:11
(10) А если добавить еще:
    НовыйЭлемент = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));      
    НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");
    НовыйЭлемент.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;  
    НовыйЭлемент.ПравоеЗначение   = НайтиКонтрагентаНаСервере("ГРУЗООТПРАВИТЕЛЬ");  
    НовыйЭлемент.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;