Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Параметры выбора у реквизита. Сделать отбор по коду при открытии формы.

Параметры выбора у реквизита. Сделать отбор по коду при открытии формы.
Я
   synapce
 
23.08.21 - 19:17
Всем привет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Список тем форума
 
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.