1с скд обновить пользовательские настройки

Обновлено: 03.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. В состав обычных пользовательские настройки следует включать:

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


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


При программном заполнении параметров отчета СКД часто возникает ситуация, когда нужно программно установить параметры отчета или добавить отборы.

Проблема возникает в том, что не всегда эти параметры или отборы отображаются на форме так, как нам бы хотелось.

В общем случае, для того, чтобы открыть отчет с заполненными параметрами используется следующая конструкция:

В данной статье описаны примеры того, как нужно заполнять параметры СКД, чтобы они отображались на форме так, как нужно, а именно Настройки и ПользовательскиеНастройки компоновщика данных.

1.1. Установка пользовательских параметров СКД

Для установки значения параметра обычно используется такая конструкция:

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

Для того, чтобы пользователь видел значение параметра на форме нужно добавить следующую конструкцию:

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

1.2. Установка пользовательских отборов СКД

1.2.1. Пример открытия отчета с фиксированным отбором

В общем случае для того, чтобы открыть отчет с отбором можно использовать следующие конструкции

В данном случае форма откроется с отбором, но отбор не будет доступен для редактирования.

1.2.2. Пример открытия отчета с пользовательским отбором

Для того, чтобы отбор появился на форме и был доступен как в быстры отборах, так и на вкладке "отбор", нужно использовать следующую конструкцию:

В данном случае ненужно заполнять отбор обычных настроек компоновщика (так как в таком случае элементы формы будут задублированы), нужно взять из настроек идентификатор пользовательских настроек и по нему найти их.

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

Если пользовательские отборы нужно объединить в группу отборов ("И", "Или", "Не"), тогда нужно сначала добавить группу пользовательского отбора:

У группы отборов есть свойство "Элементы", чтобы элемент отбора был подчинен данной группе (находился в этой группе) Отбор нужно добавлять именно в эту группу.

Таким образом полный код открытия отчета с пользовательским отбором, которые будет видно в быстрых настройках формы будет следующим:

В результате будет открыта форма отчета с установленным пользовательским отбором.

1.2.3. Пример открытия отчета с пользовательским отбором (форма отчета из БСП)

Указанные выше способ не дает желаемого результата в конфигурациях, где используется не типовая форма отчета, а форма из БСП (Тестирование проводилось на конфигурации 1С:Комплексная автоматизация 2 (2.4.12.64)).

Чтобы описанный подход работал для отчетов, которые используют форму из БСП нужно изменить код открытия отчета следующим образом:

Обратите внимание, что в данном коде заполняются обычные настройки компоновки а не пользовательские, но указывается ИдентификаторПользовательскойНастройки, при этом платформа создаст связанный элемент пользовательского отбора в КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

по-моему, в СП и любой типовой в общем модуле по СКД примеров гораздо больше.

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

(1) Вы не поверите. Нету там ничего. В своё время решал похожую задачу, отладчик замучал (но решил).

Samson-lim; user1520693; Mechanik21; neo-ti; atdonya; orfos; arancar; Созинов; user811769; Светлый ум; svilsa; bulpi; CyberCerber; Unk92; + 14 – Ответить (1) А вы загляните и скиньте примеры методов, которые делают тоже самое..

(7) откройте общий модуль ОбщегоНазначенияКлиентСервер изучайте примеры, а если проискать по общим модулям "Отбор", то можно еще найти примеры.

А в примерах автора топика я не увидел, что есть хоть намек на иерархии, а в настойках иерархия сплошь и рядом.


Я так полагаю, что речь идет о группах отборов "И", "Или", "Не".
Если так, то я учел ваш комментарий и дописал статью. Как раз сегодня решил такую задачку, только там сделал не через пользовательские настройки,а просто через настройки.
Во всех примерах добавления не было одной строки:
ЭлементОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор();
И из-за неё потерял кучу времени, так как без этого не будут работать отборы.

Опять ИТС и БСП перепечатывают.

(4)Я не претендовал на то, что это статья уникальна в своем роде. На ИТС по вашей ссылке описан один из методов БСП, если хотите, то в данной статье просто показано, как это работает внутри.

П.С. Если не интересно, то можно всегда пройти мимо =)

ЭлементОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор();

Спасибо большое за подсказку - тоже потерял кучу времени на этом.

Это про какую конфу, вид клиента? Где этот код расположен? в форме / в модуле, сервер / клиент, обычное приложение / управляемое? Конфа с БСП / без БСП?

где можно применить эти советы?

(5) В самом начале есть пример кода, который открывает отчет СКД с параметрами.

Все чего там не хватает это

Отчет = Отчеты.муОтчет.СоздатьОбъект();
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;

В другие примерах речь как раз идет о том, как заполнить компоновщик настроек, чтобы отборы были такими, какими ожидает их видеть пользователь.

Вернемся к вашим вопросам.
1. "Это про какую конфу". Это про любую конфу, т.к. речь идет о механизмах платформы 1с 8.3
2. "Вид клиента". Естественно, что объект вы создаете на сервере, а открываете отчет на клиенте (у данной статьи нет цели рассказывать про клиент серверную архитектуру)
3. "Где этот код расположен". В месте, где вам нужно открыть отчет =)
4. "обычное приложение / управляемое?". Управляемое приложение
5. "Конфа с БСП / без БСП". Без разницы, это не функционал БСП.

П.С. По-моему часть ваших вопросов только ради вопросов.

П.С. По-моему часть ваших вопросов только ради вопросов.

неее, просто мне задача такая часто попадается, и поэтому очень интересно, т.к. каждый раз как в первый раз трачу кучу времени в отладчике, чтобы понять, куда программно вставить значение, чтобы все красиво было. С nой попытки я нахожу куда сунуть настройки, чтобы работало, а с nХ2 - чтобы и отображалось корректно. И везде все решается по разному.

Например сейчас я ковыряюсь в старушке УПП, в которой кучка отчетов на СКД. И надо открывать эти отчеты с уже установленными настройками. Это обычные формы и там пользовательские настройки храняться и отображаются совсем другими механизмами, там для каждого варианта есть элемент справочника, где в хранилище значений лежат настройки и не только СКДшные. Там пользовательские настройки реализованы отдельно от того, что есть в платформе.

Ранее еб***ся с УТ 11.4. Там вроде СКД и УФ, но не совсем, т.к. есть БСП и общая формаОтчета с кучей кода в своем модуле и мне было очень грустно его читать, чтобы открыть отчет в котором на форме все красиво.

Из Вашего ответа я понял, что в УТ 11 я смогу протестить этот код и если все получиться "намотать на ус"

В данной статье мы рассмотрим какие виды настроек 1C СКД существуют. Разберем как создаются элементы пользовательских настроек на форме и узнаем где хранятся настройки отчетов в СКД.

Виды настроек

У каждого отчета созданного с помощью СКД есть реквизит КомпоновщикНастроек, который в свою очередь содержит различные варианты настроек, показанные на картинке:


  • Настройки – это настройки варианта отчета. Настройки, заданные по умолчанию или в конфигураторе или в режиме предприятия (при создании / изменении варианта отчета в режиме предприятия). Управлять данными настройками пользователь может через работу с вариантом отчета (Изменить вариант, Добавить вариант)
  • ПользовательскиеНастройки – это список настроек из первого пункта, которыми может управлять пользователь. Особенность пользовательских настроек заключается в том, что они не изменяют вариант отчета, а применяются дополнительно («сверху») к ним. Любая пользовательская настройка связана с настройкой в варианте отчета, к которой она применяется. Эта связь с настройкой варианта отчета осуществляется через поле ИдентификаторПользовательскойНастройки. Управлять данными настройками пользователь может из формы отчета – элементы быстрых настроек доступны в форме самого отчета, элементы обычных настроек доступны через кнопку «Настройки» в отдельной форме настроек
ФиксированныеНастройки – дополнительные настройки, которые применяются дополнительно к настройками из пункта 1. Управлять этими настройками пользователь не может. Обычно (а может и всегда) это настройки, которые задаются программно – например, при передаче отбора (или других настроек) при запуске отчета с помощью метода ОткрытьФорму.

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

Когда вы создаете новый отчет на СКД и добавляете в нем форму, то система 1C спрашивает нужно ли подключить СКД в создаваемую форму:


Если этот флаг установлен, то у формы создаются 2 реквизита, создается группа для пользовательских настроек, командная панель :


Результат отчета помещается на форму, в свойствах формы настраивается связь с добавленными реквизитами и элементами:


При создании формы настроек, которая вызывается из основной формы отчета по кнопке «Настройки» добавляется только элемент – группа пользовательских настроек и также производится настройка соответствующего свойства формы.

Далее в этой группе система будет создавать (по умолчанию в 2 колонки) элементы пользовательских настроек:




Вы можете отключить стандартное создание пользовательских настроек, очистив свойство, отвечающее за группу пользовательских настроек. И затем с помощью метода «СоздатьЭлементыФормыПользовательскихНастроек» создать эти элементы в другой группе. Функция позволяет создать элементы настроек в произвольном количестве колонок. Пример работы можно посмотреть в отчете «ОСВ по счету».

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

Хранение настроек

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

По умолчанию настройка вариантов отчетов и пользовательские настройки отчетов хранятся в хранилище системных настроек. И доступны они соответственно через объекты глобального контекста ХранилищеВариантовОтчетов и ХранилищеПользовательскихНастроекОтчетов. В конфигурации можно настроить размещение настроек в отдельных хранилищах:


Эти же хранилища можно настроить отдельно для каждого отчета:


С помощью этой обработки можно посмотреть как хранятся настройки:




Хранение настроек для отчетов на СКД может быть также организовано с помощью специальных средств. В типовых конфигурациях 1C для этого применяется подсистема библиотеки стандартных подсистемы (БСП) «Варианты отчетов».

Параметры могут использоваться практически в любом месте запроса и выполнять самые различные функции.

Параметры обозначаются знаком & после которого следует имя параметра.

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

При построении запроса конструктором на вкладке “Условия” если не стоит галочка “Произвольное”, то конструктор считает что в правом значении параметр и он записывается без символа &.


Таким образом этот блок настраивается в конструкторе.

Если значение параметра не задано, то построение СКД будет невозможно и будет выдана ошибка, поэтому такие параметры называют “обязательными” или “жесткими”.

Выбрать.

Этот блок располагается в запросе типа выборка данных пакета запросов СКД в первом запросе объединения между перечнем полей и “ИЗ” и заключается в фигурные скобки.


Таким образом этот блок настраивается в конструкторе.

При автоматическом заполнении полей набора данных, для не включенных в блок расширения “ВЫБРАТЬ”, добавляются все поля списка выборки и их дочерние поля. Они становятся доступными для выбора, упорядочивания, группировки, отбора. Также добавляются поля, которые упомянуты в параметре “Условия” виртуальных таблиц как доступные для отбора.

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

Блок расширения “ГДЕ” может быть расположен после или вместо обычного блока “ГДЕ” в любом запросе, подзапросе, запросах объединения и заключается в фигурные скобки. Для присвоения отбору псевдонима используется конструкция “КАК”. Псевдоним нужно использовать чтобы отбор производился конструкцией расширения языка запросов, но не происходил автоматически по наименованию поля.

Если автозаполнение полей набора отключено, поля из этого блока попадают в перечень полей набора доступными только для отбора, использование дочерних полей зависит от наличия конструкции “.*”.

Если автозаполнение включено, и это поле включено в блок расширения “ВЫБРАТЬ” тогда настройки обоих блоков объединяются. Если не включено в “ВЫБРАТЬ” то поля попадают доступными для вывода, группировки, отбора и упорядочивания.


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

Также в блоке “ГДЕ” вместо параметра может быть произвольное выражение с использованием конструкции ВЫБОР или параметров со страницы “Параметры” СКД. Правда в последнем случае вид сравнения необходимо указывать конкретно.

Нужно с осторожностью использовать вид сравнения МЕЖДУ поскольку:

Если параметры НачалоПериода и КонецПериода не будут заданы, то система получит документы за весь период.

Если параметры НачалоПериода и КонецПериода будут заданы, то система получит документы за указанный период.

Если какой-то один из параметров не будет задан, то система выдаст ошибку.

Один из вариантов решения это разбить МЕЖДУ на два условия чтобы система не выдавала ошибку в случае одного незаполненного параметра.

Это же замечание относится к любым выражением с использованием нескольких параметров.

Параметры виртуальных таблиц.

В параметрах виртуальных таблиц в отличие от предыдущих блоков, каждый параметр заключается в фигурные скобки. В полях относящихся к периоду название параметра ставится с &. Пример &ДатаНачала. В поле “Условие” параметры оформляются аналогично блоку “ГДЕ”.

Параметры из полей периода попадают на страницу “Параметры” СКД. Если автозаполнение включено и в поле периода параметр не вписан, параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД.


Таким образом, эти параметры заполняются в конструкторе запроса. Для открытия формы “Параметры виртуальной таблицы” нужно выбрать виртуальную таблицу в списке таблиц и нажать выделенную синим кнопку. Также тут у таблиц есть булевый реквизит “Обязательная” и числовой реквизит “Номер группы”. Если признак обязательности таблицы не установлен, то она будет добавляться в результирующий запрос только в случае, когда хотя бы одно поле из нее задействовано в компоновке. Номер группы заполняется для необязательных таблиц и обозначает группу таблиц, которые будут добавлены в результирующий запрос только, когда из этой группы таблиц задействовано хотя бы одно поле.

В параметрах виртуальных таблиц возможно совместное использование “жестких” параметров запросов и “мягких” параметров компоновки данных.

В этом примере если в настройках установлено значение параметра &НачалоПериода, то будет использоваться его значение. В противном случае в качестве значения параметра виртуальной таблицы будет использоваться значение “жесткого” параметра “&Начало”.

Если автозаполнение включено и в поля периода не вписаны “мягкие” параметры компоновки данных то параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД и текст запроса:

будет соответствовать следующему:

В этом случае “мягкие” параметры также будут иметь приоритет над “жесткими”.


Обзорный вид страницы.


На эту страницу автоматически добавляются все параметры из запроса. Можно добавлять свой параметр в для использования его в вычисляемых полях например.

Строка параметра имеет следующие реквизиты:


Таким же образом можно указать формат числа для численного параметра и длину строки для строкового.

А для того чтобы введенные значения интерпретировались в отчете как начало и конец дня следует в запросе использовать функции НачалоПериода() и КонецПериода() .

Также в примере к реквизиту “Тип” можно было в выражениях использовать функции встроенного языка запросов, особенность применения этих функций в данном месте такова, что строковые параметры функций надо брать в кавычки.

и в запросе можно было бы писать проще поскольку в параметрах уже будет содержаться начало и конец периода:



Даты начала и конца стандартного периода также содержат и время. ДатаНачала имеет время 00:00:00, а ДатаОкончания 23:59:59. Получится что пользователь выберет стандартный период в “Период” а разработчик будет использовать корректные “ПериодНачало” и “ПериодОкончание”.




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

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



Если Режим редактирования установить Быстрый доступ, то параметр появится на форме.


Если у параметра “Период” представление заполнить строкой “ПеРиОд”, то вместо название будет показано содержания поля представление.

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


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


Для этого в созданной форме в конфигураторе вытаскиваем на форму Пользовательские настройки из Компоновщика отчета.


В некоторых случаях параметр не прост, и для его расчета нужен некий алгоритм с циклом или ветвлениями. К примеру если отчет формируем в понедельник то в отчете сравниваются продажи по дням позапрошлой и прошлой недели, а в остальные дни недели сравниваются продажи по дням прошлой и текущей недели. Получается у нас от значения дня недели текущего дня зависит сразу четыре параметра: &НачалоПрошлойНедели, &КонецПрошлойНедели, &НачалоТекущейНедели и &КонецТекущейНедели. А еще нам надо дать возможность пользователю формировать отчет как будто он сформирован вчера или неделю назад. В таком случае мы создаем реквизит формы ТекДата типа Дата. Выводим его на форму. В событии ПриИзменении() пишем.

Таким образом можно программно менять параметры из формы.

Параметры это ключевой инструмент для управления отчетом. Использование параметров дает возможность решить множество прикладных задач, таких как калькуляция на основе информации в базе и значений введенных интерактивно для конкретной калькуляции и многих других. В данной статье рассмотрены практически все относящиеся к параметрам механизмы и особенности. Рамках статьи не рассмотрен блок “Характеристики” Расширения языка запросов для СКД поскольку он не касается параметров. Не рассмотрена настройка параметра “Параметр функциональной опции” поскольку ее описание лучше включить в статью по функциональным опциям.

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