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

Обновлено: 06.07.2024

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

//Процедура устанавливает значения параметров в запросе.

Процедура УстановитьПараметрКомпоновк и ( Имя , Значение )

КомпоновщикНастроек . Настройки . ПараметрыДанных . Элементы . Найти ( Имя ) ;

Если НЕ ( КомпоновкаДанныхПараметр = Неопределено ) Тогда

Процедура УстановтьОтборПоПолюКомпоновки ( Имя , Значение , ВидСравнения )

Для Каждого ЭлементОтбора Из КомпоновщикНастроек . Настройки . Отбор . Элементы Цикл

Если ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( Имя ) И ЭлементОтбора . ВидСравнения = ВидСравнения Тогда

КомпоновщикНастроек . Настройки . Отбор . Элементы . Удалить ( ЭлементОтбора ) ;

ЭлементОтбора = КомпоновщикНастроек . Настройки . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ) ) ;

ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( Имя ) ;

// Процедура добавляет или удаляет набор данных из схемы компоновки данных

// Схема - СхемаКомпоновкиДанных, схема, в которой нужно добавить(удалить) набор данных

// СхемаИсточник - СхемаКомпоновкиДанных, схема из которой копируется набор данных

// НаборДанныхРодитель - НаборДанныхОбъединениеСхемыКомпоновкиДанных

Процедура ДобавитьУдалитьНаборДанных ( Схема , СхемаИсточник , ИмяНабора , Добавить , НаборДанныхРодитель )

НаборДанных = НайтиНаборДанных ( Схема . НаборыДанных , ИмяНабора ) ;

НаборДанныхИсточник = НайтиНаборДанных ( СхемаИсточник . НаборыДанных , ИмяНабора ) ;

НаборДанных = НаборДанныхРодитель . Элементы . Добавить ( Тип ( "НаборДанныхЗапросСхемыКомпоновкиДанных" ) ) ;

НаборДанных . ИсточникДанных = НаборДанныхИсточник . ИсточникДанных ;

НаборДанныхРодитель . Элементы . Удалить ( НаборДанных ) ;

Если ТипЗнч ( НаборДанных ) = Тип ( "НаборДанныхОбъединениеСхемыКомпоновкиДанных" ) Тогда

Результат = НайтиНаборДанных ( НаборДанных . Элементы , Имя ) ;

Функция НайтиГруппировку ( Структура , Имя , ВидГруппировк и = "Поле" )

Если ТипЗнч ( Элемент ) = Тип ( "ТаблицаКомпоновкиДанных" ) Тогда

Результат = НайтиГруппировку ( Элемент . Колонки , Имя ) ;

ИначеЕсли ТипЗнч ( Элемент ) = Тип ( "ГруппировкаТаблицыКомпоновкиДанных" ) Тогда

Для Каждого Поле Из Элемент . ПоляГруппировки . Элементы Цикл

Если Поле . Поле = Новый ПолеКомпоновкиДанных ( Имя ) Тогда

Результат = НайтиГруппировку ( Элемент . Структура , Имя ) ;

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

// ДоступныеПоляГруппировок - КомпоновщикНастроек.ДоступныеПоляГруппировок

Если ТипЗнч ( Элемент ) = Тип ( "ТаблицаКомпоновкиДанных" ) Тогда

ИначеЕсли ТипЗнч ( Элемент ) = Тип ( "ГруппировкаТаблицыКомпоновкиДанных" ) Тогда

Для Каждого Поле Из Элемент . ПоляГруппировки . Элементы Цикл

Для Каждого ЭлементОтбора 1 Из Элемент . Отбор . Элементы Цикл

Если ЭлементОтбора 1 . Представление = "Отбор по непустому" Тогда

ЭлементОтбора = Элемент . Отбор . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ) ) ;

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

Параметр = Элемент . ПараметрыВывода . НайтиЗначениеПараметра ( Новый ПараметрКомпоновкиДанных ( "FilterOutput" ) ) ;

Параметр . Значение = ТипВыводаТекстаКомпоновкиДанных . НеВыводить ;

// Процедура добавляет значения интервалов в пользовательское поле

// ПолеИнтервалы - ПользовательскоеПолеВыборКомпоновкиДанных

// Интервал - Строка содержащия границы интервалов: 30,60,90

Процедура УстановитьПользовательскоеПолеИнтервал ( ПолеИнтервалы , Интервал )

ТекИнтервал = СокрЛП ( СтрПолучитьСтроку ( Стр , Счетчик ) ) ;

Вариант = ПолеИнтервалы . Варианты . Элементы . Добавить ( ) ;

Вариант . Значение = "От " + ПредИнтервал + " до " + ТекИнтервал ;

Вариант . Представление = "От " + ПредИнтервал + " до " + ТекИнтервал ;

Группа = Вариант . Отбор . Элементы . Добавить ( Тип ( "ГруппаЭлементовОтбораКомпоновкиДанных" ) ) ;

Группа . ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных . Группа И;

ЭлементОтбора = Группа . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ) ) ;

ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "ДнейПросрочки" ) ;

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

ЭлементОтбора . ПравоеЗначение = Число ( ПредИнтервал ) ;

ЭлементОтбора = Группа . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ) ) ;

ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "ДнейПросрочки" ) ;

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

Вариант = ПолеИнтервалы . Варианты . Элементы . Добавить ( ) ;

Группа = Вариант . Отбор . Элементы . Добавить ( Тип ( "ГруппаЭлементовОтбораКомпоновкиДанных" ) ) ;

Группа . ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных . Группа И;

ЭлементОтбора = Группа . Элементы . Добавить ( Тип ( "ЭлементОтбораКомпоновкиДанных" ) ) ;

ЭлементОтбора . ЛевоеЗначение = Новый ПолеКомпоновкиДанных ( "ДнейПросрочки" ) ;

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

ЭлементОтбора . ПравоеЗначение = Число ( ПредИнтервал ) ;

Похожее

Добавить комментарий Отменить ответ

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

Мы используем файлы cookie и подобные технологии, чтобы обеспечить пользователям максимальное удобство при использовании нашего веб-сайта (посредством персонализации, средств аналитики и повышения производительности). ПринимаюОтказазаться Подробнее

Privacy Overview

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

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

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


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

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

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


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


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


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

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




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

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

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

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

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


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


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




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


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

В данной статье поговорим про пользовательские настройки.

Что же это такое, зачем они нужны и чем отличаются от настроек варианта?

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

Настройки варианта отчета

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

Состав пользовательских настроек

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

Работа с отчетами в пользовательском режиме

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

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

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

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

Формы отчетов

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

  • Форма отчета – основная форма для вывода отчета и быстрых пользовательских настроек,
  • Форма настроек отчета – форма для редактирования пользовательских настроек,
  • Форма вариантов отчета – форма для редактирования вариантов отчета в пользовательском режиме.

Например, в демонстрационной конфигурации (Управляемое приложение), формы для отчетов не указаны. Сгенерированная автоматически форма отчета выглядят так:

Форма отчета типовая

После кнопки «Сформировать» расположена кнопка открытия списка доступных вариантов отчетов.

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

Под этими кнопками расположен раздел «быстрых» пользовательских настроек, о которых мы будем говорить позже.

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

Пункт меню «Установить стандартные настройки» позволяет вернуться к изначально заданным настройкам варианта отчета.

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

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

В типовых конфигурациях семейства ЕРП, существуют общие предопределенные формы для самого отчета и настроек, заданные на уровне конфигурации в целом:

Типовые формы, заданные на уровне конфигурации

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

Переход от редактирования пользовательских настроек к настройкам варианта

Также, в выпадающем списке по кнопке «Еще» формы отчета, можно выполнить работу с вариантами отчетов и с сохраненными пользовательскими настройками.

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

Определение состава пользовательских настроек

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

Определение состава на уровне структуры

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

Включение разделов в пользовательские настройки

Доступны для включения следующие разделы:

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

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

Такая настройка соответствует простой структуре, где в первую группировку по списку входит следующая и так далее:

Настройка группировок в пользовательском режиме

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

Теперь, что касается быстрого доступа.

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

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

В параметре «Режим редактирования» можно указать один из выше указанных вариантов, и это будет отражено на расположении настроек.

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

Включение разделов в пользовательские настройки - для группировки

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

Определение состава на уровне отдельных элементов

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

  • Отборы,
  • Условное оформление,
  • Другие настройки.

Так же как и для разделов целиком, можно включать в пользовательские настройки отдельные элементы для всего отчета в целом и для конкретных группировок. Для выполнения этих действий используется кнопка или одноименный пункт контекстного меню «Свойство элемента пользовательских настроек»:

Вызов свойств элемента пользовательских настроек

В открывшимся окна можно указать режим редактирования и представление настройки:

Указание свойств элемента пользовательских настроек

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

Например: если это отбор, не будет возможности выбрать вид сравнения. Если это условное оформление, не будет возможности выбрать условие оформления и поля, к которым оно будет применено.

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

Кнопка Подробно, дополнительное представление

Обратите внимание: это представление не является представлением, которое описано выше, и у него другое назначение!

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

Как было описано в предыдущей статье про настройки вариантов, на закладке «Отборы» можно создать группы отборов, для объединения различных отборов по логическому И, ИЛИ и НЕ. Такие группы целиком, также можно включить в пользовательские настройки. Можно задать для группы оба представления, описанные выше.

Просмотреть все пользовательские настройки можно по кнопке «Предварительный просмотр пользовательских настроек» в окне структуры настроек:

Предварительный просмотр пользовательских настроек

Произвольное добавление настроек на форму отчета

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

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

Настройка формы отчета

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

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

Если таким образом добавляются отборы, у таблицы будет присутствовать свойство «РежимОтображения». Оно влияет на то, какие отборы будут попадать в данную таблицу. Если «Режим отображения = Быстрый доступ», в таблицу попадут только те отборы, для которых в свойствах пользовательских настроек указано значение «Быстрый доступ».

Функциональные опции и настройки отчетов

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

Также ФО учитываются в настройках варианта отчета в режиме 1С-предприятие и в пользовательских настройках. Недоступные поля нельзя выбрать в настройках. А если ФО отключает объект целиком, в настройках варианта и в пользовательских настройках в пользовательском режиме нельзя будет выбрать не одно поле отключенного объекта.

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

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

Установка параметра ФО

После установки такого параметра (по умолчанию в схеме или в пользовательском режиме), СКД будет определять видимость полей, привязанных к параметризуемым ФО.

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

В следующих статьях будут рассмотрены:

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

Для ознакомления с предыдущими статьями можно перейти по ссылкам:

Если статья Вам понравилась, ставьте плюс. Успехов в работе и хорошего настроения!

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

Пример программного заполнения настроек построю на основе отчёта по оборотному регистру накопления Продажи с измерениями: Контрагент, Номенклатура и ресурсами: Количество и Сумма.

Создание отчёта и настройка схемы компоновки данных.

Итак. Создаём новый отчёт. Открываем схему компоновки данных и добавляем новый набор данных запрос. В окне запроса пишем следующий запрос:

РегистрНакопления.Продажи.Обороты(, , Авто , ) КАК ПродажиОбороты

На закладке «Ресурсы» указываем в качестве ресурсов поля КоличествоОборот и СуммаОборот.

На закладке «Параметры» добавим новый параметр «Период» типа СтандартныйПериод. Для параметра «НачалоПериода» в качестве выражения укажем следующее значение: &Период.ДатаНачала, для параметра «КонецПериода» - &Период.ДатаОкончания. Таким образом, мы избавим себя от приведения даты окончания к концу дня и установки каждого параметра в отдельности. Настройку структуры отчёта мы не делаем. Она будет сформирована программно.

На этом настройка схемы компоновки закончена. Переходим к настройке интерфейса.

Настройка пользовательского интерфейса.

Вначале создадим реквизиты отчёта. Они понадобятся нам при создании интерфейса и дальнейшей программной обработке указанных пользователем настроек. Добавляем реквизит Период – тип СтандартныйПериод, Количество – тип Булево, Сумма – тип Булево. Данные реквизиты будут отвечать за переданный параметр Период и за вывод ресурсов отчёта КоличествоОборот и СуммаОборот соответственно. Также нам потребуется табличная часть Группировки с реквизитами Поле – тип Строка и ТипГруппировки – тип Строка. Табличная часть будет отвечать за выбранные группировки при формировании отчёта.

Необходимые реквизиты созданы, теперь создаём форму отчёта.

На форме располагаем следующие элементы:

  • Поля ввода для указания периода: ДатаНачала – данные Период.ДатаНачала, Датаокончания - Период.ДатаОкончания, Период – данные Период и кнопку КнопкаВыбораПериода (для кнопки нужно назначить обработчик, открывающий диалог указания периода. Программный код можно посмотреть в прикреплённом внешнем отчёте) .
  • Панель с тремя страницами. Первую страницу назовём Отбор и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.Отбор. Вторую страницу назовём УсловноеОформление и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.УсловноеОформление. Третью страницу назовём Сортировка и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.Порядок.
  • Табличное поле Группировки, связанное с табличной частью отчёта «Группировки», и добавляем командную панель с указанием в качестве источника действий табличного поля «Группировки». На командную панель добавляем кнопки «Добавить», «Удалить», «Переместить вверх», «Переместить вниз».
  • 2 флажка ВыводитьКоличество и ВыводитьСумму, связанные с реквизитами отчёта Количество и Сумма соответственно.
  • Поле табличного документа Результат, автоматически созданное при создании формы, оставляем без изменения.

На этом создание пользовательского интерфейса завершено. Переходим к самому интересному – программной части.

Программная работа со схемой компоновки данных.

В первую очередь, необходимо описать какие группировки будут доступны в нашем отчёте. Для этого в модуле объекта создадим экспортные переменные СписокДоступныхПолейГруппировки и СписокДоступныхТиповГруппировки. В теле основной программы заполним их списками значений:

СписокДоступныхПолейГруппировки = Новый СписокЗначений ;

СписокДоступныхПолейГруппировки . Добавить ( "Регистратор" );

СписокДоступныхПолейГруппировки . Добавить ( "Контрагент" );

СписокДоступныхПолейГруппировки . Добавить ( "Номенклатура" );

СписокДоступныхТиповГруппировки = Новый СписокЗначений ;

СписокДоступныхТиповГруппировки . Добавить ( "Иерархия" );

СписокДоступныхТиповГруппировки . Добавить ( "Элементы" );

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

НоваяГруппировка = Группировки . Добавить ();

НоваяГруппировка . Поле = "Регистратор" ;

НоваяГруппировка . ТипГруппировки = "Элементы" ;

НоваяГруппировка . Поле = "Контрагент" ;

НоваяГруппировка . ТипГруппировки = "Элементы" ;

НоваяГруппировка = Группировки . Добавить ();

НоваяГруппировка . Поле = "Номенклатура" ;

НоваяГруппировка . ТипГруппировки = "Элементы" ;

Установим доступные списки выбора для полей группировок :

ЭлементыФормы . Группировки . Колонки . Поле . ЭлементУправления . СписокВыбора = СписокДоступныхПолейГруппировки ;

ЭлементыФормы . Группировки . Колонки . ТипГруппировки . ЭлементУправления . СписокВыбора = СписокДоступныхТиповГруппировки ;

Также нам необходимо определить в модуле объекта обработчик ПриКомпоновкеРезультата, в котором будем загружать наши настройки в схему компоновки данных.

// Добавляет колонки (поля ресурсов) в соответствии с флажками на форме

Если Количество И Не НайтиПолеКомпоновки ( "КоличествоОборот" , НастройкиСКД . Выбор . Элементы ) Тогда

ВыбранноеПоле = НастройкиСКД . Выбор . Элементы . Добавить ( Тип ( "ВыбранноеПолеКомпоновкиДанных" ));

ВыбранноеПоле . Использование = Истина ;

ВыбранноеПоле . Заголовок = "Количество" ;

ВыбранноеПоле . Поле = Новый ПолеКомпоновкиДанных ( "КоличествоОборот" );

Если Сумма И Не НайтиПолеКомпоновки ( "СуммаОборот" , НастройкиСКД . Выбор . Элементы ) Тогда

ВыбранноеПоле = НастройкиСКД . Выбор . Элементы . Добавить ( Тип ( "ВыбранноеПолеКомпоновкиДанных" ));

ВыбранноеПоле . Использование = Истина;

ВыбранноеПоле . Заголовок = "Сумма" ;

ВыбранноеПоле . Поле = Новый ПолеКомпоновкиДанных ( "СуммаОборот" );

//Удаляет колонки, соответствующие флажки которых не были отмечены

Пока Счетчик < НастройкиСКД . Выбор . Элементы . Количество () Цикл

ПолеКомпоновкиДанных = НастройкиСКД . Выбор . Элементы [ Счетчик ];

Если ПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( "КоличествоОборот" ) И Не Количество Тогда

НастройкиСКД . Выбор . Элементы . Удалить ( ПолеКомпоновкиДанных );

ИначеЕсли ПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( "СуммаОборот" ) И Не Сумма Тогда

НастройкиСКД . Выбор . Элементы . Удалить ( ПолеКомпоновкиДанных );

Счетчик = Счетчик + 1 ;

//заполняем поля группировок в соответствии с настройками в табличной части Группировки

НастройкиСКД . Структура . Очистить ();

Для Каждого Группировка Из Группировки Цикл

ЭлементСтруктуры = ЭлементСтруктуры . Структура . Добавить ( Тип ( "ГруппировкаКомпоновкиДанных" ));

ЭлементГруппировки = ЭлементСтруктуры . ПоляГруппировки . Элементы . Добавить ( Тип ( "ПолеГруппировкиКомпоновкиДанных" ));

ЭлементГруппировки . Использование = Истина;

ЭлементГруппировки . Поле = Новый ПолеКомпоновкиДанных ( Группировка . Поле );

Если СписокДоступныхТиповГруппировки . НайтиПоЗначению ( Группировка . ТипГруппировки )=Неопределено Тогда

ЭлементГруппировки . ТипГруппировки = ТипГруппировкиКомпоновкиДанных . Элементы ;

ЭлементГруппировки . ТипГруппировки = ТипГруппировкиКомпоновкиДанных [ Группировка . ТипГруппировки ];

ПолеСортировки = ЭлементСтруктуры . Порядок . Элементы . Добавить ( Тип ( "АвтоЭлементПорядкаКомпоновкиДанных" ));

ПолеСортировки . Использование = Истина;

ВыбранноеПоле = ЭлементСтруктуры . Выбор . Элементы . Добавить ( Тип ( "АвтоВыбранноеПолеКомпоновкиДанных" ));

ВыбранноеПоле . Использование = Истина;

Далее, устанавливаем значения параметров и загружаем заполненные настройки

Настройки . ПараметрыДанных . УстановитьЗначениеПараметра ( "Период" , Период );

КомпоновщикНастроек . ЗагрузитьНастройки ( Настройки );

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

Функция НайтиПолеКомпоновки ( Имя , Коллекция )

Для Каждого ПолеКомпоновкиДанных Из Коллекция Цикл

Если ПолеКомпоновкиДанных . Поле = Новый ПолеКомпоновкиДанных ( Имя ) Тогда

Готово. Настройки схемы компоновки данных заполнены, и отчёт может быть сформирован.

Для того чтобы при обработке расшифровки поля отбора и группировок заполнились в соответствии с выбранным полем нужно самостоятельно описать обработчик расшифровки. Для этого создадим булевский реквизит отчёта ЭтоРасшифровка. Реквизит будет показывать, формируем мы простой отчёт или расшифровываем. Для табличного поля Результат создаём обработчик РезультатОбработкаРасшифровки. В созданном обработчике пишем

Если ДанныеРасшифровки = Неопределено Тогда Возврат КонецЕсли;

ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных ( ДанныеРасшифровки , Новый ИсточникДоступныхНастроекКомпоновкиДанных ( СхемаКомпоновкиДанных ));

Настройки = ОбработкаРасшифровки . Выполнить ( Расшифровка );

Если Настройки <>Неопределено Тогда

КомпоновщикНастроек . ЗагрузитьНастройки ( Настройки );

ЭлементыФормы . Результат . Очистить ();

СкомпоноватьРезультат ( ЭлементыФормы . Результат , ДанныеРасшифровки );

А в обработчике ПриКомпоновкеРезультата модуля объекта указываем, что заполнять настройки группировок нужно только в том случае, если это не расшифровка. Таким образом, обработчик ПриКомпоновкеРезультата принимает вид:

Процедура ПриКомпоновкеРезультата ( ДокументРезультат , ДанныеРасшифровки , СтандартнаяОбработка )

Если Не ( Количество ИЛИ Сумма ) Тогда

Сообщить ( "Необходимо выбрать хотя бы один показатель!" );

Настройки = КомпоновщикНастроек . ПолучитьНастройки ();

Если НЕ ЭтоРасшифровка Тогда

Настройки . ПараметрыДанных . УстановитьЗначениеПараметра ( "Период" , Период );

КомпоновщикНастроек . ЗагрузитьНастройки ( Настройки );

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

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

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