Имя: Пароль:
1C
1С v8
Параметры выбора у реквизита. Сделать отбор по коду при открытии формы.
0 synapce
 
23.08.21
19:17
Всем привет.

Есть форма списка справочника "Детали". Иерархический справочник. И есть у него группа "Радиодетали" с кодом ММ-000341. Мне нужно сделать отбор при открытии - чтобы попадались только эти радиодетали.
Указал в параметрах выбора Отбор.Код(ММ-000341)
По факту - при открытии формы он мне выводит этот единственный элемент без дочерних элементов внутри.
Пробовал по родителю подобное - не выводит элементов вообще.  

Как правильно сделать отбор в таком случае?(

1С Бухгалтерия 3.0
1 Chameleon1980
 
23.08.21
19:22
отбор дс в иерархии
2 synapce
 
23.08.21
19:25
(1) а где именно ставить, подскажете?
3 Chameleon1980
 
23.08.21
19:26
а где вы пытаетесь свой отбор установить?
4 synapce
 
23.08.21
19:26
(3) в конфигураторе свойства элементы формы
5 synapce
 
23.08.21
19:28
(3) свойство реквизита. В Форме Выбора - указываю нужную мне форму выбора и в параметрах выбора указываю отбор
6 Chameleon1980
 
23.08.21
19:29
http://prntscr.com/1qfv7wh

только программно, например в ПриСозданииНаСервере
7 Chameleon1980
 
23.08.21
19:31
8 Chameleon1980
 
23.08.21
19:32
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
9 acht
 
23.08.21
19:37
(0) > Пробовал по родителю подобное - не выводит элементов вообще.
Показывай код или скриншот настроек
10 synapce
 
23.08.21
19:49
(9) показать, увы, не могу, рабочая база. Делаю не кодом - средствами платформы.
В момент срабатывания отбора - показывается только вот, один элемент - наименование группы Радиодетали с нужным мне кодом, без дочерних элементов
11 acht
 
23.08.21
19:53
(10) "ММ-000341" - это строка. Если ты ставшишь отбор по Код = строка, то это и будет ровно один элемент. Тот у которого код равен строке. Если ты ставишь отбор по Родитель = строка, то не будет ни одного элемента, потому что ссылка строке никогда не равна.
12 synapce
 
23.08.21
19:54
(11) получается, что так, да. А...как тогда поставить правильно? Если выбираю, соответственно, справочникссылку - он мне выводит "пустое значение" в выбор. Как этот момент обойти, чтобы нормально выводил?
13 acht
 
23.08.21
19:59
(12) Программно - найти ссылку по коду и передать ее при открытии формы через параметр Отбор в событии ПриНачалеВыбора, типа так:

СтандартнаяОбработка = Ложь;

ПараметрыФормыВыбора = Новый Структура("Отбор", Новый Структура);
ПараметрыФормыВыбора.Отбор.Вставить("Родитель", Справочники.Детали.НайтиПоКоду("ММ-000341");

ОткрытьФорму("Справочники.Детали.ФормаВыбора", ПараметрыФормыВыбора, Элементы.ТоЧтоВыбираем);
14 acht
 
23.08.21
20:00
(12) Можно попробовать еще сделать этот элемент-родителя предпределенным, там по-моему тогда удастя его в форме выбрать. Но не уверен.
15 synapce
 
23.08.21
20:10
(14) спасибо за код, ругается в данный момент, что нет такого элемента "Открыть форму")
Я это делаю в процедуре, которая на сервере без контекста, на клиенте к справочникам нельзя обращаться.
16 acht
 
23.08.21
20:17
(15) Наоборот надо.
ПараметрыФормыВыбора.Отбор.Вставить("Родитель", ПолучитьРодителяНаСервереБезКонтекста());
17 synapce
 
23.08.21
20:20
(16) стоп, стоп, можете пояснить, что в этом случае, куда вписывается?

Все, что выше нижней строчки- на сервере
А нижнюю - на клиенте определяем, да?
18 synapce
 
23.08.21
20:21
(16) можете плз написать, что куда относится?
19 acht
 
23.08.21
20:24
(18) Совсем молодежь плохая пошла.

&НаКлиенте
Процедура ЧтоТоТамНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

    СсылкаНаГруппу = ПолучитьРодителяНаСервереБезКонтекста();
    ПараметрыФормыВыбора = Новый Структура("Отбор", Новый Структура);
    ПараметрыФормыВыбора.Отбор.Вставить("Родитель", СсылкаНаГруппу);

    ОткрытьФорму("Справочники.Детали.ФормаВыбора", ПараметрыФормыВыбора, Элементы.ЧтоТоТам);
КонецПроцедуы

&НаСервереБезКонтекста
Функция ПолучитьРодителяНаСервереБезКонтекста()
    Возврат  Справочники.Детали.НайтиПоКоду("ММ-000341");
КонецФункции
20 synapce
 
23.08.21
20:37
(19) показывает в данный момент просто ничего, а скажите, что указывать в "Элементы.чТототам". Я поставил просто ",Элемент")
21 synapce
 
23.08.21
20:38
(19) вроде и вопрос элементарный, а что-то туплю жестко...
22 acht
 
23.08.21
21:39
(20) В "Элементы.ЧтоТоТам" надо указат элемент, которому прилетит событие выбора и установятся новые данные. Элемент тоже подойдет, если это поле, в котором происходит выбор.

Что возвращает Справочники.Детали.НайтиПоКоду("ММ-000341") ?
23 synapce
 
23.08.21
21:54
(22) Работает в данный момент только тогда, если укажу Ссылка вместо Родитель. Тогда возвращает как раз одну строку с этим наименованием. С Родитель - просто ничего не выводит
Справочники.Детали.НайтиПоКоду("ММ-000341")  - как раз возвращает ту самую строчку "Радиодетали"
24 synapce
 
23.08.21
22:05
(22) Указал Родитель, затем изменил строку на
ОткрытьФорму("Справочники.Детали.ФормаВыбора", ПараметрыФормыВыбора, ЭтаФорма);
- показались элементы дочерние (3 строки), но они тоже имеют своих "дочек", в данный момент они - без дочерних элементов, просто как три строки) ОТгадка где-то рядом)
25 acht
 
24.08.21
08:53
(24) Оно у тебя еще и с вложенными группами...

Тогда отставить параметр формы Отбор. Кури параметр ФиксированныеНастройки. Туда надо передать настройки компоновки с установленным отбором с видом сравнения "В иерархии".
26 Вафель
 
24.08.21
08:57
Нужен не отбор, а что то типа ТекущийРодитель
27 acht
 
24.08.21
09:02
(26) Это будет не отбор, а начальное позиционирование.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший