Имя: Пароль:
1C
1С v8
Как задать фокус на новом созданном элементе отбора в настройках СКД
0 vasmedv
 
02.10.12
09:11
В форме настроек скд на вкладке "Отбор" сделал новую кнопку - новый элемент.
(Стандартная не устраивает - там выбор из подменю. А стандартное действие новый элемент- не устраивает- там нельзя выбрать картинку для кнопки. )
сделал ей обработку  нажатия

Процедура КоманднаяПанельОтборНовыйЭлемент(Кнопка)
   новэл=КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(тип("ЭлементОтбораКомпоновкиДанных"));
   новэл.ЛевоеЗначение= Новый ПолеКомпоновкиДанных("");
КонецПроцедуры

элемент добавляется, но не выбирается.
А если отбор был пустой, то он даже не открывается. Просто + в представлении.
Как сделать чтобы фокус был на левом значении нового элемента отбора?
1 чувак
 
02.10.12
09:15
Новый ПолеКомпоновкиДанных("???")
2 vasmedv
 
02.10.12
09:25
(1) незнаю что вы имели ввиду, чувак. Но это не работает.
3 чувак
 
02.10.12
09:27
Новый ПолеКомпоновкиДанных("Сдезь должна быть имя поле компоновки данных")
4 vasmedv
 
02.10.12
09:31
Действие дожно быть аналогично кнопке "Новый элемент".
Там нет имени. так как имя еще не выбрано. Пользователь должен сам выбрать имя поля.
5 чувак
 
02.10.12
09:36
Примерно так:


       ЭлОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ЭлОтбора.ВидСравнения        = Стр.ВидСравнения;
       ЭлОтбора.Использование        = Стр.Использование;
       ЭлОтбора.ЛевоеЗначение        = Стр.ЛевоеЗначение;
       ЭлОтбора.ПравоеЗначение        = Стр.ПравоеЗначение;
6 vasmedv
 
02.10.12
09:40
а где "стр" взять?
7 vasmedv
 
02.10.12
09:46
а как правому значению присвоить тип, который у значения "Левого значения"?
8 чувак
 
02.10.12
09:53
Левый - это поле компоновки данных (    ЭлОтбора.ЛевоеЗначение        = Новый ПолеКомпоновкиДанных("Контрагент");
)
А правое - это значение этого поля . Например, справочники.Контрагенты.НайтиПоНаименованию("БлаБла")
9 vasmedv
 
02.10.12
09:58
сделал при открытии формы добавление полей отбора:

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