![]() |
![]() |
|
Фильтрация динамического списка в иерархии | ☑ | ||
---|---|---|---|---|
0
Новичок1С Учится
01.03.19
✎
14:51
|
Здравствуйте великие умы Мисты! Я начинающий программист 1С, у которого уже есть задачи и нет понимания в решении некоторых вопросов. Одним из таких является такой вопрос, вытекающий из задачи: Хочу фильтровать все динамические списки разных документов в Бух 3.0. Нашёл событие, вернее процедуру, связанную с открытием данного списка в общем модуле "ОбщегоНазначенияБПКлиент". Называется она ОткрытьОсновнуюФорму.
Процедура ОткрытьОсновнуюФорму(ОжидаетсяДлительноеОткрытие, ПараметрыОткрытия, ПараметрыФормы = Неопределено) Экспорт Если ПараметрыФормы = Неопределено Тогда ПараметрыФормы = Новый Структура; КонецЕсли; // Отключаем подписку на событие ОбработкаПолученияФормы(), если она определена для данного объекта. ПараметрыФормы.Вставить("ОтключитьОжиданиеПриОткрытииФорм", Истина); Если ПараметрыОткрытия.ЗамерПроизводительности = Истина Тогда // Bремя ключевой операции будет задано позже. ПараметрыФормы.Вставить("УИДЗамера", ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина)); ИначеЕсли ТипЗнч(ПараметрыОткрытия.ЗамерПроизводительности) = Тип("Строка") И Не ПустаяСтрока(ПараметрыОткрытия.ЗамерПроизводительности) Тогда // Начинаем замер определенной ключевой операции. ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, ПараметрыОткрытия.ЗамерПроизводительности); КонецЕсли; ВремяНачалаОткрытия = ТекущаяУниверсальнаяДатаВМиллисекундах(); Если ПараметрыОткрытия.ОбработчикОткрытияФормы <> Неопределено Тогда ВыполнитьОбработкуОповещения(ПараметрыОткрытия.ОбработчикОткрытияФормы, ПараметрыФормы); Иначе ОткрытьФорму(ПараметрыОткрытия.ИмяФормы, ПараметрыФормы, ПараметрыОткрытия.Владелец, ПараметрыОткрытия.Уникальность, ПараметрыОткрытия.Окно, ПараметрыОткрытия.НавигационнаяСсылка, ПараметрыОткрытия.ОписаниеОповещенияОЗакрытии, ПараметрыОткрытия.РежимОткрытияОкна); КонецЕсли; ЗамерОткрытия = Новый Структура; ЗамерОткрытия.Вставить("ВремяНачалаОткрытия", ВремяНачалаОткрытия); ЗамерОткрытия.Вставить("ОжидаетсяДлительноеОткрытие", ОжидаетсяДлительноеОткрытие); ЗамерОткрытия.Вставить("ИмяФормы", ПараметрыОткрытия.ИмяФормы); ИмяПараметра = "БухгалтерияПредприятия.ЗамерОткрытия"; ПараметрыПриложения.Вставить(ИмяПараметра, ЗамерОткрытия); ПодключитьОбработчикОжидания("Подключаемый_ДобавитьСтатистикуОткрытия", 0.1, Истина); КонецПроцедуры Так вот. Мне нужно выводить список только в соответствии с подразделением пользователя, который его формирует. Соль в том что подразделения имеют ещё и филиалы. В некоторых списках документов нужно только само подразделение, в других подразделение + филиалы. Как вычислить подразделение и получить в данной процедуре эту переменную у меня особого труда не составило. Далее я решил что одним из возможных решений будет реализовать открытие формы с параметрами. Погуглив немного я нашел два варианта: Вариант с "жестким значение параметра", который работает, но частично. Не отображаются филиалы, а они нужны... ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ПодразделениеОрганизации", ПодразделениеПользователя); ПараметрыФормы = Новый Структура("Отбор", ПараметрыОтбора); Вариант с параметрами отбора ввиду структуры, который почему то не работает... ПараметрыОтбора1 = Новый Структура; ПараметрыОтбора1.Вставить("ЛевоеЗначение", Новый ПолеКомпоновкиДанных("ПодразделениеОрганизации")); ПараметрыОтбора1.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных.ВИерархии); ПараметрыОтбора1.Вставить("ПравоеЗначение", ПодразделениеПользователя); ПараметрыОтбора1.Вставить("РежимОтображения", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ПодразделениеОрганизации",ПараметрыОтбора1); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ПараметрыОтбора", ПараметрыОтбора); Подскажите пожалуйста где моя ошибка и как правильно реализовать открытие формы с правильно заданной фильтрацией... |
|||
1
sqr4
01.03.19
✎
14:59
|
||||
2
Новичок1С Учится
01.03.19
✎
14:59
|
Забыл сказать что задача поставлена сделать без использования РЛС...
|
|||
3
DrWatson
01.03.19
✎
15:05
|
(0)
Расширение управляемой формы для динамического списка (Managed form extension for dynamic lists) Отбор (Filter) Описание: Тип: Структура. Используется для установки отбора в динамическом списке. Ключ структуры - имя поля основной таблицы. Значение элемента структуры содержит значение отбора. Если значение является массивом, фиксированным массивом или списком значений с не одним элементом, то отбор будет применяться с видом сравнения ВСписке. |
|||
4
sqr4
01.03.19
✎
15:06
|
(3) Именно (0) Использовать жесткий вариант, в параметр передавать, заранее полученный список подразделений.
|
|||
5
DrWatson
01.03.19
✎
15:07
|
Какой-то гугл у тебя неправильный, второй вариант не должен работать.
|
|||
6
Новичок1С Учится
01.03.19
✎
15:48
|
(4) Подразделений или филиалов? Если филиалов то их тоже нужно передавать структурой? В итоге получится структура "Филиалы" в структуре "ПараметрыОтбора" в структуре "ПараметрыФормы" ?
|
|||
7
Новичок1С Учится
01.03.19
✎
15:48
|
(5) Да нет правильный, он у меня и не работает. Видимо я не совсем правильно понят область применения данной конструкции
|
|||
8
Новичок1С Учится
04.03.19
✎
08:31
|
Всё таки не могу определить решение для данного вопроса, помогите кто нибудь...
|
|||
9
sqr4
04.03.19
✎
08:57
|
(6) всего и подразделений и филиалов
|
|||
10
Новичок1С Учится
04.03.19
✎
10:01
|
(9) Т.е. если я правильно понял, мне необходимо заранее формировать переменную с типом данных Структура, в которой будет содержаться подразделение и входящие в это подразделение филиалы. Затем добавить эту структуру в структуру "ПараметрыФормы" и уже с этим параметром открывать форму? Грубо говоря само существование структуры в структуре "ПараметрыФормы" будет эквивалентно указанию отбора с любым значением из этого списка?
|
|||
11
Новичок1С Учится
04.03.19
✎
13:51
|
(10) Так и сделал, только опечатался, не структура в структуре "ПараметрыФормы", а список. Всё работает, Спасибо!
|
|||
12
Cyberhawk
05.03.19
✎
16:46
|
Много букв. В трех словах в чем затык?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |