1с группа пользовательских настроек динамический список

Обновлено: 05.07.2024

Пользовательские настройки

Область применения: управляемое приложение.

Для эффективной работы пользователя с отчетом требуется определить состав быстрых и обычных пользовательских настроек. Состав настроек определяется основной целью использования отчета.


1. Общие рекомендации

1.1. Избегайте использования наименований настроек, которые могут быть истолкованы пользователями неоднозначно или быть для них непонятными.

Правильно Неправильно
"Оплатить позже" «Дата оплаты Меньше или равно …»

1.2. Для параметров, без указания которых запрос системы компоновки данных не выполнится или его выполнение не имеет смысла, следует в настройках взвести флажок «Запрещать незаполненные значения» и установить режим использования «Всегда».
1.3. Обязательные для заполнения параметры должны заполняться наиболее вероятными значениями.
Например, период "Этот месяц" для отчета "Выручка и себестоимость продаж".

2. Быстрые пользовательские настройки

2.1. Рекомендуется делать не более 5-7 быстрых настроек.
Правильно:



2.2. В состав быстрых пользовательских настроек следует включать только частотные настройки:

  • Параметры отчета (обязательные и необязательные). Это нужно потому, что контекстное меню отчета не позволяет пользователю "на лету" применять параметры.


Правильно – все параметры включены в быстрые настройки:


Неправильно – параметр "Данные по продажам" не включен в быстрые настройки:

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

Правильно:

Неправильно:

2.3. Если в отчете несколько элементов, например, гистограмма и список, то в быстрых настройках рекомендуется предусмотреть возможность их отключения.
2.4. В быстрые настройки контекстных отчетов не следует включать отборы по полям, по которым устанавливается отбор через параметры в командах вызова отчета.

3. Обычные пользовательские настройки

3.1. Для настроек, которые являются нечастотными, лучше устанавливать режим редактирования "Обычный".

3.2. В состав обычных пользовательские настройки следует включать:

Отборы по реквизитам объектов анализа, которые по умолчанию не выводятся в отчет, если таковые требуются
Например, "Обособленное подразделение (филиал)" - реквизит поля "Организация" Отборы по числовым показателям отчета, если таковые требуются
Например, "Сумма задолженности Больше …" Настройки выбранных полей ("Выбранные поля") Настройки условного оформления ("Условное оформление")


Например, в настройках отчета "Выручка и себестоимость продаж" зеленым выделены быстрые настройки. Остальные настройки – обычные.

Имеется платформа 8.3.18.1334, остальное не так уж важно будет.
Создана форма, на неё помещен динамический список (имя ему в реквизитах формы - "Список"). Список работает, данные имеет, здесь всё как надо.
На форму так же помещается отбор настроек компоновщика настроек. Именно отбор настроек - не фиксированных настроек, не пользовательских настроек. Так как отбор пользовательских настроек пока не догнал как вынести на форму. А отбор фиксированных настроек используется в другом месте для жёсткого ограничения и потому его нельзя показывать ни в коем случае.

Отбор работает, всё отлично. Проблема начинается дальше(
У списка на форме есть такое свойство, как "Группа пользовательских настроек". Туда самостоятельно платформенно закидываются отборы из нашей таблички отборов на форме. Отлично добавляются, отлично изменяются.

И вот есть в этом всём одна большая проблема. При изменении отбора в табличке всё ништяк, в этой группе пользовательских настроек всё изменяется (отловленно программно изменение таблицы и обновление настроек). Но вот когда изменяют отбор из этих пользовательских настроек в его группе, то изменения в самих настройках в табличке не происходит и случается дублирование отборов и как бы всё не очень хорошо начинает отображаться. Без ошибок, но список становится пустой иногда, потому что если, допустим, установить отбор на того же автора дважды, то естественно, что двух авторов не бывает)

Есть какие-то мысли, как подхватить изменение пользовательских настроек не в таблице, а в этой группе пользовательских настроек? Процедура списка "ПриОбновленииСоставаПользовательскихНастроекНаСервере" не отрабатывает(
Вытащить обычный отбор не вариант, потому что, во-первых, отображает фиксированные настройки, а во-вторых, не помещает в эту группу пользовательских настроек новые отборы.

Во вложениях небольшие скрины.
По порядку (не нашёлся как в текст встроить эти вложения):
1 - отбор на форме в конфигураторе;
2 - Группа для пользовательских настроек (сразу под таблицей настроек)
3 - как выглядит форма под пользователем с открытыми настройками
4 - добавили отбор по автору, включили его в пользовательские настройки, он появился в группе пользовательских настроек сам
5 - изменили отбор в пользовательских настройках, но он не изменился в отборе в таблице (что и нужно сделать)

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


Используя главный инструмент разработчика - а именно метод научного тыка, я определил, что вид сравнения не отображается, если он соответствует виду "Равно". Исправление этой прекрасной находки специалистов по юзабилити из 1С, казалось бы, находится на расстоянии вытянутой руки: вот и заветная галочка, доступная из настроек формы:


Казалось бы, дело за малым, перехватить момент, когда отборы попадают на форму, да пройтись по всем элементам группы пользовательских настроек и проставить видимость.

Итак, первым делом нужно усвоить, что те отборы, которые мы используем через стандартную команду настройки списка, имеют отношение не к самой форме, а к динамическому списку, расположенному на ней, и являются ни чем иным, как пользовательскими настройками.

Если смотреть свойства динамического списка через палитру, можно найти две зацепки для решения нашей задачи:

1) Во-первых, это свойство "Группа пользовательских настроек". В данном свойстве указывается группа формы, которая выступит родителем для всех добавляемых элементов с отображением отборов.



2) Во-вторых, это событие списка "ПриОбновленииСоставаПользовательскихНастроекНаСервере".


Именно сюда вы попадёте если будете грешить после нажатия кнопки "Завершить редактирование" в форме настройки списка. При создании процедуры у неё есть лишь один параметр - использовать стандартную обработку или нет. При стандартной обработке будет вызван метод расширения формы динамического списка (т.е. элемента) СоздатьЭлементыФормыПользовательскихНастроек, который формирует все поля отборов на форме. На этом моменте у нас есть два выбора: или сформировать все поля через Элементы.Список.СоздатьЭлементыФормыПользовательскихНастроек(), а потом проставить видимость элементов, или взять дело целиком в свои руки и отрисовать поля самим. Я выбрал второй вариант, хотя, думаю, вы сможете реализовать и первый, зная, что откуда растёт. В любом случае не забудьте, что стандартная обработка должна быть выключена!

Рассмотрим программное создание полей на примере рабочего кода:

Как видите, алгоритм не очень сложен, дольше всего я провозился с путём к данным с настройками - первый массив, в который мы попадаем (который жёстко прописан в пути) содержит информацию по отборам, а последующие массивы уже информацию ко конкретным настройкам отбора.

В итоге мы имеем стройный ряд настроек, который можно поменять в любой момент:

Читайте также: