Имя: Пароль:
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) чтобы он настроил фильтр на список? вместо того чтобы вставить несколько нужных строк.. ну ну. еще есть варианты?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший