Имя: Пароль:
1C
1С v8
Как сделать на УФ выбор в поле ввода элементов справочника только верхнего уровня.
0 davlen86
 
17.07.17
13:18
Приветствую, уважаемые форумчане! Подскажите пожалуйста или пните в нужном направлении))). Собственно на управляемой форме необходимо разместить поле, в которое можно выбирать только элементы верхнего уровня справочника. Если у реквизита формы Тип значения оставить произвольный и заполнять список выбора у элемента при открытии формы, ничего не получается.
1 r_i_n_i_k
 
17.07.17
13:21
данные выбора заполнять только теми элементами у которых Родитель и есть сам справочник
2 Рэйв
 
17.07.17
13:23
(0)Заполни список выбора по условию
Если НЕ ЗначениеЗаполнено(ссылкаСпр.Родитель) Тогда
...
3 Рэйв
 
17.07.17
13:23
ну и на НЕ .ЭтоГруппа тоже проверять можно
4 Fedor-1971
 
17.07.17
13:25
(0) ты хочешь это сделать в отдельной форме выбора или прямо в  вываливающемся списке поля?
5 r_i_n_i_k
 
17.07.17
13:26
(3) а если у него иерархия элементов?
6 Рэйв
 
17.07.17
13:28
(5) тогда можно не делать
7 davlen86
 
17.07.17
13:30
(4) в вываливающимся нет скорее всего, так как нужно предусмотреть выбор нескольких значений
8 Рэйв
 
17.07.17
13:31
(7)Тогда перед открытием формы выбора ставь вид отбора =ВСписке и передавай список элементов верхнего уровня по условию из (2)
9 davlen86
 
17.07.17
13:33
(2) Подскажите пожалуйста где это заполнить?
Я уже пробовал вот так
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    МойСпр.Ссылка
    |ИЗ
    |    Справочник.МойСпрКАК МойСпр
    |ГДЕ
    |    МойСпр.Родитель = ЗНАЧЕНИЕ(Справочник.МойСпр.ПустаяСсылка)
    |
    |УПОРЯДОЧИТЬ ПО
    |    МойСпр.Наименование";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    СписокВыб = Новый СписокЗначений;
    
    Пока Выборка.Следующий() Цикл
        
        СписокВыб.Добавить(Выборка.Ссылка);
        
    КонецЦикла;    
    

Элементы.Полеввода.СписокВыбора.Добавить(СписокВыб);
10 davlen86
 
17.07.17
13:36
(8) Это вид отбора и отбор указать в форму выбора справочника?
11 Рэйв
 
17.07.17
13:37
(9)Все правильно вроде
12 Рэйв
 
17.07.17
13:37
(10)Да, в ней.
13 Fedor-1971
 
17.07.17
13:40
(7) В одно поле не поместишь несколько выбранных значений.
В отдельной форме: параметры открытия формы выбора передаёшь, например, параметр ТолькоКорень, проверка выглядит так:

Если Параметры.Свойство("ТолькоКорень") тогда
  Если Параметры.ТолькоКорень тогда //при значении Истина изменим запрос ДС
    Список.ТекстЗапроса=Список.ТекстЗапроса+
   " ГДЕ Не МойСпр.ЭтоГруппа и МойСпр.Родитель=Значение("Справочник.МойСпр.ПустаяСсылка")";
  КонецЕсли;
КонецЕсли;

т.е. модифицируй запрос ДС так, что-бы он вернул только элементы с пустым родителем

(9) НаСервере, например, в ПриСозданииНаСервере
(12) Нет, там присвоение списка выбора конкретному полю формы
14 Рэйв
 
17.07.17
13:41
(0)А так тебе одно значение выбрать надо в поле? Тогда сделай выпадающий список и не мучайся
15 davlen86
 
17.07.17
13:43
(11) я вот тоже думаю что все правильно, но почему то не работает.
(12) сейчас попробовал настроить отбор в форме выбора вручную  Ссылка.Входит в группу = оставил пустым, все работает как надо, а если пользователь отключит этот отбор?
(13) я присваиваю на клиенте в процедуре при открытии, это я так написал что две проц не выкладывать
16 davlen86
 
17.07.17
13:44
(14) не одно, а чтобы можно было несколько, все работает когда устанавливаешь типзначения у реквизита и без кода, только вот выбирает все уровни
17 Fedor-1971
 
17.07.17
13:51
(15) это ты зря, запихни код в ПриСозданииНаСервере и в цикле заполняй список выбора формы
Элементы.Полеввода.СписокВыбора.Добавить(Выборка.Ссылка);
У тебя есть и форма и доступ к запросу вот и заполни список выбора поля. Есть один недостаток, если в корень добавят элемент при открытой форме, придётся переоткрывать форму что-бы он появился в выборе.

Только оптимальнее делать в обработчике события ПередНачаломВыбора - список может и не понадобиться, а ты его уже сформировал
18 davlen86
 
17.07.17
13:54
(17) спасибо. А он в этом случае даст выбрать несколько значений?
19 Fedor-1971
 
17.07.17
14:22
(18) попробуй, для обработки выбора нескольких значений есть обработчик ОбработкаВыбора в нём и рули что у тебя попадёт в поле
20 oslokot
 
17.07.17
14:29
Вообще-то, такие вещи в УФ принято делать через ПараметрыВыбора поля ввода
21 davlen86
 
17.07.17
14:46
(19) выбирает только одно значение
(20) спасибо попробую
22 davlen86
 
17.07.17
14:49
(20) а как эти параметры найти, не могу почему то. Подскажите
23 Dvoe4nik
 
17.07.17
14:57
(21) я возможно ошибаюсь, но помоему в (9) ты в список выбора добавляешь список а не элемент...
24 Вафель
 
17.07.17
15:16
в параметрахОтбора поставить родитель = пустая ссылка
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс