Имя: Пароль:
1C
1С v8
Фильтр в списке выбора
,
0 NordMad
 
01.02.17
10:00
8.3 УФ. в любой конфе 8.3 если у нас есть поле выбора типа справочникСсылка (ну например Номенклатура) есть кнопочка "настройка списка" где я могу выбрать условия, например мне надо чтобы в списке отображались элементы только одной определенной группы (иерархически) я добавляю условие: "в группе" и ставлю в какой именно. вопрос - как это же самое сделать программно? можно пример кода?
1 NordMad
 
01.02.17
10:40
есть кто живой? могу уточнить вопрос
2 vicof
 
01.02.17
10:48
Учу пользоваться СП, дорого

ДинамическийСписок (DynamicList)
ДинамическийСписок (DynamicList)
Свойства:

АвтоматическоеСохранениеПользовательскихНастроек (AutoSaveUserSettings)
Группировка (Group)
ДинамическоеСчитываниеДанных (DynamicDataRead)
КлючТекущихПользовательскихНастроек (CurrentUserSettingsKey)
КомпоновщикНастроек (SettingsComposer)
ОсновнаяТаблица (MainTable)
Отбор (Filter)
Параметры (Parameters)
Порядок (Order)
ПроизвольныйЗапрос (CustomQuery)
ТекстЗапроса (QueryText)
УсловноеОформление (ConditionalAppearance)

Методы:

ПолучитьОбязательноеИспользование (GetRequiredUse)
УстановитьОбязательноеИспользование (SetRequiredUse)

Описание:

Динамический список предоставляет разработчику возможность описать в форме запрос практически произвольного вида, указать условное оформление данных, порядок сортировки, отборы и группировки данных.
Ограничения: в запросах нельзя использовать объединения.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Может использоваться в реквизитах управляемой формы.
--------------------------------------------------------------------------------

     Методическая информация
3 NordMad
 
01.02.17
10:54
(2) на событии приНАчалеВВода нужно писать фильтр?
4 vicof
 
01.02.17
10:55
(3) У вас там 1с?
5 NordMad
 
01.02.17
10:58
(4) да. можно пропустить момент стеба и сразу написать короткий пример установки отбора?
6 NordMad
 
01.02.17
10:58
(4) был бы премного благодарен
7 vicof
 
01.02.17
11:00
В событии "начало выбора"
8 NordMad
 
01.02.17
11:09
(7) т.е. тип значения поля задавать не как справочникССылка, а как динамический список?
9 NordMad
 
01.02.17
11:15
(7) пока не совсем понимаю как прикрутить динамический список к полю
10 makfromkz
 
01.02.17
13:15
вот у меня запрос динамического списка:

ВЫБРАТЬ
    ДокументмкЗалоговыйБилет.Ссылка,
    ДокументмкЗалоговыйБилет.ДатаПогашения
ИЗ
    Документ.мкЗалоговыйБилет КАК ДокументмкЗалоговыйБилет
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.мкСтатусыЗалоговогоБилета.СрезПоследних КАК мкСтатусыЗалоговогоБилетаСрезПоследних
        ПО (мкСтатусыЗалоговогоБилетаСрезПоследних.ЗалоговыйБилет = ДокументмкЗалоговыйБилет.Ссылка)
            И (мкСтатусыЗалоговогоБилетаСрезПоследних.Организация = ДокументмкЗалоговыйБилет.Организация)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.мкКассыФакт.СрезПоследних КАК мкКассыФактСрезПоследних
        ПО ДокументмкЗалоговыйБилет.Ссылка = мкКассыФактСрезПоследних.ДокЗБ
ГДЕ
    (ДокументмкЗалоговыйБилет.Касса = &КассаФакт
            ИЛИ мкКассыФактСрезПоследних.КассаФакт = &КассаФакт
            ИЛИ &КассаПустая)


=========
а вот модуль формы списка
===========

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры


&НаСервере
Процедура ПриОткрытииНаСервере()
    КассаПользователя=справочники.мкПользователиКассы.НайтиПоРеквизиту("Пользователь",ПользователиКлиентСервер.АвторизованныйПользователь()).Касса;
    Список.Параметры.УстановитьЗначениеПараметра("КассаФакт",КассаПользователя);
    Список.Параметры.УстановитьЗначениеПараметра("КассаПустая",КассаПользователя.Пустая());
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    КассаПользователя=справочники.мкПользователиКассы.НайтиПоРеквизиту("Пользователь",ПользователиКлиентСервер.АвторизованныйПользователь()).Касса;
    Если НЕ КассаПользователя.Пустая() Тогда
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Касса");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.ПравоеЗначение = КассаПользователя;       
    КонецЕсли;
КонецПроцедуры
11 NordMad
 
01.02.17
13:21
(10) я вот посмотрел СП - параметры выбора
сделал вот так:
&НаКлиенте
Процедура Авто_ПечатьНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    НовыйПараметр = Новый ПараметрВыбора("Отбор.Родитель", "Автомобили");
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НовыйПараметр);
НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
Элементы.Авто_печать.ПараметрыВыбора = НовыеПараметры;

КонецПроцедуры
но не работает. т.е. он ничего не фильтрует. или это вообще не то? и как задать тип сравнения, чтобы было не =, а в группе?
12 NordMad
 
01.02.17
13:23
(10) мне по сути нужно сделать вот так вот: http://prntscr.com/e31xz5
только программно, неужели нету какого то простого способа? без динамического списка? мне кажется это и выглядело бы короче
13 makfromkz
 
01.02.17
13:42
(12) а если в моем рабочем примере:
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

Заменить на

   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;


?????
14 NordMad
 
01.02.17
13:51
(13) у меня нету ЭлементОтбора, у меня НовыеПараметры, имеющие тип ПараметрВыбора
ПараметрВыбора (ChoiceParameter)
Свойства:

Значение (Value)
Имя (Name)

Конструкторы:

Основной

Описание:

Элемент фиксированного массива свойства ПараметрыВыбора.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
15 aleks_default
 
01.02.17
13:57
Позовите специалиста
16 NordMad
 
01.02.17
14:20
(15) чтобы он настроил фильтр на список? вместо того чтобы вставить несколько нужных строк.. ну ну. еще есть варианты?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан