1с добавить отчет в подсистему
Статья входит в цикл «Первые шаги в разработке на 1С». В ней мы продолжаем знакомиться с управляемым интерфейсом «Такси» и приступаем непосредственно к его конфигурированию.
Как известно, разработка интерфейса информационной базы начинается с создания структуры его меню, ведь насколько удобным и логичным оно будет, настолько понятным пользователю будет вся система в целом.
Прочитав статью, вы узнаете:
- Какую роль в формировании структуры меню играет подсистема?
- Как сформировать разделы меню 1-го и 2-го уровня?
- Как настроить состав команд, отображаемых в разделах меню?
- Для чего нужен редактор Командного интерфейса и как с ним работать?
- Как настроить Командный интерфейс основного раздела?
Применимость
В статье рассматривается интерфейс «Такси» конфигурации, разработанной на платформе 1C 8.3.4.496. Информация актуальна для текущих релизов платформы.
Подсистемы. Настройка интерфейса с помощью подсистем
Подсистемы относят к общим объектам. Они обеспечивают возможность классификации объектов конфигурации по Подсистемам.
Для указания принадлежности объекта к подсистемам в Окне редактирования объекта существует соответствующая закладка, на которой флагами отмечается, к каким подсистемам относится объект.
В дальнейшем можно выстроить фильтр дерева объектов по Подсистемам.
При этом имеется возможность управления: включать для выбранных Подсистем объекты подчиненных Подсистем и родительских Подсистем или нет.
Классификация объектов по Подсистемам создает удобство при создании Ролей.
Для объекта Роль можно определить соответствующие права и указать, что данную Роль можно построить только по тем объектам, которые входят в выбранные Подсистемы.
Похожим образом Подсистемы используются при создании Интерфейсов. Интерфейсы нужны только в том случае, если конфигурация запускается в режиме Обычного приложения.
Классификация объектов по Подсистемам используется также при объединении конфигураций. Т.е. можно объединять объекты, отфильтрованные по Подсистемам.
Важное предназначение Подсистем состоит в том, что от них строится командный интерфейс конфигурации в режиме Управляемое приложение. Подсистемы первого уровня определяют Панель разделов.
Для существующих Подсистем можно определять вложенные (подчиненные). Данные Подсистемы будут образовывать группы Панели навигации.
Не рекомендуется создавать подсистемы с уровнем вложенности больше двух, так как в противном случае интерфейс будет сложно читаемым.
Когда мы классифицируем объект по Подсистемам, возможно включить объект только во вложенную Подсистему, возможно в Подсистему первого уровня, возможно и в ту и в другую.
В последнем случае объект будет отображаться дважды: и внутри вложенной Подсистемы и отдельно в Панели навигации. В большинстве случаев это не совсем правильно.
В принципе, Подсистемы являются не обязательным объектом. Т.е. конфигурация, разработанная на Платформе 8.3, вполне сможет работать без каких-либо Подсистем.
Но в этом случае Панели разделов вообще не будет, все будет отображаться на Рабочем столе. Очень простые конфигурации с малым набором объектов смогут работать и без Подсистем.
Но если в конфигурации достаточно много Документов, Справочников и Регистров, использование Подсистем существенно облегчает работу пользователя.
Отметить, что некоторый объект конфигурации принадлежит какой-либо Подсистеме можно тремя способами.
Во-первых, это можно сделать в Окне редактирования объекта на закладке Подсистемы. Данный вариант мы уже рассматривали.
Во-вторых, можно использовать Окно редактирования самой Подсистемы. На закладке Состав можно указать объекты, входящие в данную Подсистему.
И наконец, для объектов конфигурации через контекстное меню можно вызвать специальное диалоговое окно, которое называется Дополнительно.
Данное окно также позволяет для объекта отмечать принадлежность к Подсистемам. Это окно используется в том случае, если мы хотим сразу поработать с несколькими объектами.
При перемещении курсора по объектам дерева конфигурации в окне Дополнительно высвечивается соответствующая информация по подсистемам.
При создании объекта конфигурации по умолчанию Платформа 8.3 не проставляет привязку объекта ни к какой подсистеме.
Т.е. разработчик должен сам зайти на эту закладку и проставить соответствующие галочки.
Если разработчик этого не выполнит, то система определит отсутствие принадлежности к Подсистемам как ошибку.
Но ошибка не является критичной, поэтому с этим можно согласиться.
Фактически система справочно сообщает о том, что, возможно, Вы забыли включить новые объекты в Подсистемы. В этом случае объекты не будут отображаться в командном интерфейсе.
К таким объектам пользователь может обратиться только через Главное меню, используя команду Все функции.
Естественно, чтобы объект возможно было открыть, необходимо, чтобы пользователю были предоставлены соответствующие права.
Существует ряд случаев, когда разработчикам удобнее включать добавленные в типовую конфигурацию объекты в свою отдельную подсистему.
Для Подсистем в Окне редактирования можно снять флаг Включать в командный интерфейс.
При этом Подсистемы не будут отображаться в командном интерфейсе. Если нет ни одной Подсистемы, которая должна быть включена в командный интерфейс, то для новых объектов Платформа 8.3 не проверяет принадлежность к какой-либо подсистеме.
Для того, чтобы настроить состав команд, которые включаются в соответствующий раздел, определяемый подсистемой, существует специальный редактор.
Данный редактор можно вызвать из окна редактирования Подсистемы нажатием на кнопку Командный интерфейс (на закладке Основные).
Можно для каждой Подсистемы вызвать данный редактор. Из редактора имеется возможность управлять открытием списков в Панели навигации, доступностью команд в Панели действий.
По умолчанию флажки для команд по созданию элементов Справочников и Документов сняты, но их можно проставить. В Панели действий можно также открывать отчеты.
Элементы в редакторе можно перемещать. При этом из Панели навигации в Панель действий и в обратном направлении перемещение невозможно. Перемещать элементы можно либо внутри Панели навигации, либо внутри Панели действий.
Существуют колонка общей видимости и колонки видимости по ролям. Для каждой роли, определенной в конфигурации, будет своя колонка. То значение, которое установлено в колонке общей видимости, является значением по умолчанию для видимости по ролям.
Видимость по ролям может принимать три значения: либо для данной роли элемент будет невидимым (1); либо будет виден всегда, не зависимо от того, какой флаг выставлен в колонке видимости (2); либо флаг видимости по роли будет наследоваться от флага общей видимости (3).
Если пользователю назначены две роли и для одной их них указан флажок, а для другой нет, то будет работать стандартное правило системы 1С:Предприятие 8 – действие пользователю разрешено, если оно разрешено в одной из ролей.
Иногда бывает необходимо сразу менять командный интерфейс в нескольких Подсистемах. В платформе 1C:Предприятие 8 существует сервисный инструмент, который позволяет редактировать командный интерфейс сразу нескольких Подсистем.
Данный инструмент вызывается из контекстного меню корневого узла ветки Подсистемы.
В открывшемся окне можно быстро перемещаться по Подсистемам и редактировать командные интерфейсы. Кроме того, в данном окне можно редактировать состав Подсистемы. Также можно перемещать объекты в Панели навигации и Панели действий.
Кроме того, можно даже изменить подчиненность Подсистемы. Для этого есть специальная кнопка Переместить подсистему.
Чтобы настроить командный интерфейс Основного раздела также используется редактор командного интерфейса.
Вызывается он уже не для Подсистем, а через контекстное меню корневого узла конфигурации, пункт Открыть командный интерфейс основного раздела.
В открывшемся окне мы можем указывать: какие Справочники, Документы и другие объекты входят в данный командный интерфейс. Также можно включать их видимость и управлять видимостью по ролям.
Следует иметь в виду, что при удалении Подсистем Платформа, к сожалению, не проверяет: входит ли в данную подсистему хоть один объект или не входит.
На этом завершим наше знакомство с настройкой структуры меню информационной базы. В следующей статье мы продолжим наше знакомство с Управляемым интерфейсом и рассмотрим, какие возможности предоставляет платформа «1С:Предприятие 8» для работы со списками.
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Комментарии / обсуждение (4):
Все хорошо.
Можно еще в начале добавить про то, что можно свои добавленные в типовую конфигурацию объекты включать в отдельную свою подсистему.
И пару снимков – много объектов метаданных без фильтра по подсистемам и объекты только своей подсистемы.
Спасибо, про то, что можно добавленные в типовую конфигурацию объекты включать в отдельную свою подсистему добавим. Замечание интересное. Пример (снимок) фрагмента дерева объектов с фильтром по двум подсистемам (Закупки и Деньги) приведен. Полное дерево объектов (без фильтра по подсистемам) займет много места, понятно, что оно будет значительно больше, а увидеть его в конфигурации совсем не сложно. Мы стремимся не делать рисунки очень большими и вытянутыми по длине. Наоборот, стараемся показать некий фрагмент, из которого виден смысл.
Статья и полезная и достаточно подробная!
Но все-же есть несколько замечаний:
1.Первый абзац неплохо-бы немного переформулировать, объяснять для чего нужна подсистема через саму подсистему не самый понятный метод, для тех кто не знает что такое подсистема.
2.Не совсем верно утверждение “Классификация объектов по Подсистемам используется также для создания Ролей.”, тут скорее не “используется”, а “может” или “удобно” или так “часто используется”. Кроме того можно ещё заострить внимание что Роли и Подсистемы как прямоугольная матрица (одни из них строки – другие столбцы), т.е. акцентировать внимание на том, что это независимые объекты.
то отчет можно добавить через стандартный механизм добавления внешних отчетов и обработок, но в карточке номенклатуры он отображается не сбоку (в виде меню), а сверху, под кнопкой "Отчеты" или "Дополнительные отчеты". По крайней мере, конфигурацию с поддержки снимать не придется.
А далее как в типовых, например в ERP2.0 в подсистеме "Зарплата" в "См. также" обработка "ПодготовкаРегламентированныхОтчетов" подключена через Общую Команду. Настраиваете видимость команды в нужной подсистеме, а внутри модуля команды прописываете то, что написано в ИТС по ссылке, что я дал. Если речь идет о внешних отчетах подключенных средствами БСП, то вероятно есть возможность вызвать и такую обработку методами БСП. Тогда вопрос останется только в том, возможно ли "на лету" создать общую команду в нужной подсистеме во время открытия конфигурации.
Есть внешний отчет, и конфигурация розница 2.1 на поддержке, снимать не хочу. Нужно еще один отчет расположить рядом с отчетом "анализ движений" как на скрине, на форме справочника "номенклатура". подключить его как внешний отчет не составляет труда а вот как его именно в справочник воткнуть не предполагаю вот и спрашиваю. Если внешний отчет подключить к конфигурации он же встает в подсистему которую можно указать но там не возможно выбрать справочник.
(3) seva1405, можно было бы расширение создать с нужной командой. Но конфа должна быть без режима совместимости.
(3) seva1405, если память меня не подводит, то снятие с поддержки и просто разлочить объект конфигурации - разные вещи. Обычно доработки конфигурации, которые делают фирмы франчайзи как раз и редактируют конфигурацию заказчика путем добавления своих объектов и создания копий типовых объектов. При этом с поддержки конфигурация не снимается и обновления не затрагивают новые объекты, которых не было в типовой. Вариант задействовать расширения конфигурации интересный, но что-то я нигде не видел восторженных отзывов об этом глючном загадочном механизме.
(7) PerlAmutor, Так как бы в этом весь и смыл не включая возможность редактирования доработать конфигурацию. Если как вы говорите просто разлочить объект то понемногу набирается и набирается в итоге при обновлении уже не помнишь что и где редактировал даже если комментариев понаставить и конфа не хочет обновляться выдавая исключительную ситуацию.
Не понял о каком глючном механизме вы говорите, большая часть доработок идет через внешние обработки и отчеты по крайней мере я стараюсь этого придерживаться т.к. при внедрении конфигурации новому заказчику не нужно все заново переписывать а можно добавить уже когда то написанные обработки.
(8) seva1405, я имею ввиду именно "Расширение конфигурации" (иконка с кусочком пазла). Мой вопрос Вам не понравится, но я его задам. Если приемлемого способа добавить обработку в раздел "См. также" Вы не найдете, рассматриваете ли вариант использования классической кнопки "Дополнительные отчеты", куда можно поместить Вашу обработку?
(13) seva1405, так я об этом и говорю, параметр "назначение" посмотри внимательно:
Кстати настройка в приложении почему-то у меня не работает вообще.
Возможно в параметрах регистрации отчета необходимо указать, что он не глобальный, а принадлежит справочнику "Номенклатура"? Попробую поиграться завтра
то отчет можно добавить через стандартный механизм добавления внешних отчетов и обработок, но в карточке номенклатуры он отображается не сбоку (в виде меню), а сверху, под кнопкой "Отчеты" или "Дополнительные отчеты". По крайней мере, конфигурацию с поддержки снимать не придется.
Речь пойдет об отчетах, созданных на базе СКД (на всякий случай пишу, если еще остались люди, которые делают отчеты не на СКД).
Добавить отчет в типовую конфигурацию 1С, построенную на базе БСП, можно одним из следующих способов:
Добавляемый отчет может быть:
Вроде все должно быть просто и интуитивно понятно, но есть нюансы, и в каждом случае добавление происходит по разному. В общем, разработчики БСП и других типовых продуктов не дают соскучиться J .
Варианты отчетов
Прежде чем приступить к описанию добавления отчетов, хочется сказать несколько слов о вариантах.
Варианты отчетов - это встроенный механизм СКД, который позволяет создавать для отчета произвольное количество предопределенных и пользовательских вариантов. По своей сути варианты – это отдельные отчеты, созданные на базе одной и той же системы компоновки данных.
Существует отдельная подсистема БСП, для управления вариантами отчетов, которая встроена во все типовые конфигурации. Подсистема предоставляет общее хранилище вариантов, общие формы для вывода и настройки отчетов, механизмы для отображения отчетов – формирование специальных панелей для каждого раздела системы. Пользователь может управлять настройками предопределенных вариантов отчетов, создавать и настраивать собственные варианты в режиме 1С Предприятие. Также подсистема позволяет создавать контекстные отчеты, привязанные к определенным объектам метаданных.
Для каждого отчета существует основной предопределенный вариант. В дальнейшем, говоря об отчете, я буду подразумевать именно его основной вариант.
Общая сравнительная таблица:
Тип добавления
В основную конфигурацию
В расширение конфигурации
В качестве внешнего отчета
Обновление вспомогательных данных (идентификаторы объектов)
Обновление вспомогательных данных (варианты отчетов)
Предопределенные настройки вариантов
Общий модуль: ВариантыОтчетовПереопределяемый
Модуль менеджера отчета
Возможность добавление обработчиков событий формы
Указывается в общем модуле: ВариантыОтчетовПереопределяемый
Указывается в модуле менеджера отчета:
ПриОпределенииНастроек
Доступна по умолчанию
Описание назначения для контекстного отчета
Модуль менеджера отчета, модуль менеджера объекта назначения
Модуль менеджера отчета
Модель объекта отчета
Описание основного варианта (по умолчанию)
Свойство отчета «Пояснение»
Добавление пользовательских вариантов отчета
Добавление нового отчета в основную конфигурацию
Рассмотрим добавление отчета в основную конфигурацию. В более старых конфигурациях типа УТ 10.3, УПП все было предельно просто. Добавляешь отчет, выводишь его в меню интерфейса или на панели быстрого доступа, и все работает.
В новых все несколько сложнее, и есть свои нюансы.
Для того, чтобы отчет выводился в основном окне раздела в группе «Отчеты», достаточно просто включить отчет в необходимую подсистему.
Однако, в этом случае, отчет не будет виден на специальной панели отчетов, которую предоставляет БСП. Панель открывается при переходе по ссылке «Отчеты по » из каждого раздела системы:
Отчеты выводятся с разбивкой по подгруппам согласно иерархии подсистем, и имеют описания. Причем , могут быть выведены несколько вариантов одного и того же отчета. Если просто добавить отчет в конфигурацию и включить в нужную подсистему, отчет не будет виден в указанной панели. Отчет будет доступен только в группе «Отчеты» основного окна раздела. Кстати, не так давно, он бы даже не работал, пока не будут обновлены идентификаторы объектов метаданных.
Обновить идентификаторы можно одним из трех способов:
- Запустить 1С Предприятие в режиме обновления ИБ, задав параметр запуска: «ЗапуститьОбновлениеИнформационнойБазы»:
- Увеличить номер версии конфигурации.
- Воспользоваться обработкой из состава БСП: «Обновление вспомогательных данных»
В текущих версиях, идентификаторы обновляются при запуске 1С в пользовательском режиме автоматически . Наконец-то разработчики сделали это, слава богам!
Однако, для того, чтобы отчет, добавленный в основную конфигурацию появился на панели отчетов, все же необходимо обновить вспомогательные данные вручную, выбрав пункт «Варианты отчетов»:
После выполнения этих действия, отчет будет добавлен в специальные справочники: «Варианты отчетов» и «Предопределенные варианты отчетов», и его основной вариант будет виден в панелях отчетов согласно указанной подсистемы.
Конечно, все дальнейшие настройки, такие как добавление описания, вывод отчета или других его вариантов в другие подразделы или панели отчетов, можно выполнить непосредственно в пользовательском режиме, перейдя по ссылке «Все отчеты»:
Но, более правильно указать основные (предопределенные) настройки в конфигурации. Тем более, что некоторые виды настроек, например видимость варианта отчета в зависимости от функциональных опций, нельзя настроить в пользовательском режиме.
Настройки вариантов отчетов задаются в процедуре общего модуля: «ВариантыОтчетовПереопределяемый >> НастроитьВариантыОтчетов». Здесь описаны все типовые отчеты и их варианты. Все настройки необходимо создавать для двух объектов: «Описание отчета» и «Описание варианта», которые можно получить из общего списка настроек, переданных в процедуру:
Объект «ОписаниеОтчета» имеет следующие свойства:
Включен - если свойство имеет значение «ложь», отчет не регистрируется в справочнике «Варианты отчетов».
ОпределитьНастройкиФормы – свойство определяет наличие в модуле объекта отчета экспортной процедуры « ОпределитьНастройкиФормы ». В данной процедуре указывается наличие дополнительных обработчиков для событий модуля формы отчета, которые также должны присутствовать в модуле объекта отчета:
Объект «ОписаниеВарианта» имеет следующие свойства:
Описание - Описание варианта отчета, которое выводится на панели отчетов.
ВидимостьПоУмолчанию - если свойство имеет значение «ложь», вариант не виден по умолчанию в панели отчетов, но в справочнике «Варианты отчетов» он регистрируется.
Размещение – настройка размещения отчета. По умолчанию, коллекция содержит все подсистемы, выбранные для отчета. Можно добавить новые подсистемы для размещения или удалить существующие. Дополнительно, можно указать важность размещения: «Важный» или «СмТакже»:
ФункциональныеОпции – подключенные к команде вывода варианта отчета функциональные опции:
НастройкиДляПоиска – дополнительные сведения для поиска варианта отчета
Для вступления настроек в силу, требуется обновить вспомогательные данные, выбрав пункт «Варианты отчетов».
В пользовательском режиме, можно переопределить эти настройки для текущего пользователя или всех пользователей системы. Тем не менее, всегда остается возможность вернуться к предопределенным настройкам, заданным в конфигурации:
Добавление нового отчета в расширение конфигурации
На первый взгляд, добавление отчета в расширении не должно отличаться от его добавления в основную конфигурацию, но это не так.
Во-первых, для того, чтобы отчет был виден на панели отчетов, не нужно выполнять обновление вспомогательных данных. Необходимая информация в справочники: «Варианты отчетов» и «Предопределенные варианты отчетов» добавляется автоматически, при начале работы системы. Я думаю логика разработчиков следующая: расширение может подключить обычный пользователь в режиме 1С Предприятия. И он не должен знать о необходимости обновлении вспомогательных данных.
Для отчетов, добавленных в расширениях, также существует возможность описания предопределенных настроек: описание, подсистемы, функциональные опции. Однако, эти настройки выполняются не в переопределяемом общем модуле, а непосредственно в модуле менеджера отчета:
Все настройки аналогичны тем, которые выполнялись для отчетов основной конфигурации. Отличие только в том, что объект «НастройкиОтчета» уже передан в процедуру в качестве параметра.
Для применения созданных настроек обязательно должен быть установлен параметр «НастроитьВариантыОтчета» в экспортной процедуре модуля менеджера отчета «ПриОпределенииНастроек»:
Если флаг установлен, предопределенные настройки обновляются автоматически, без необходимости обновления вспомогательных данных.
В этой же процедуре указывается наличие дополнительных обработчиков событий модуля формы отчета:
На заметку. Для отчетов созданных в расширениях, есть возможность указания описания для основного варианта без использования менеджера отчета. Для задания описания «по умолчанию» используется свойство отчета «Пояснение»:
Добавление контекстного отчета в основную конфигурацию или в расширение
Алгоритм добавления контекстных отчетов одинаков для отчетов созданных в основной конфигурации и для отчетов, созданных в расширениях.
В обоих случаях, необходимо определить экспортную процедуру «ПриОпределенииНастроек» в модуле менеджера отчета, и указать объекты назначения:
Сами команды необходимо описать в отдельной процедуре:
Основные свойства команды:
Представление – наименование команды в интерфейсе объекта назначения,
КлючВарианта – идентификатор варианта отчета компоновки данных, который требуется запустить.
Дополнительные свойства команды:
Важность - группы в подменю «Отчеты», в которой следует вывести команду открытия отчета. Доступные значения: "Важное", "Обычное" и "СмТакже".
Порядок - п орядок размещения отчета по отношению к другим отчетам.
СочетаниеКлавиш - с очетание клавиш для быстрого открытия отчета (тип «СочетаниеКлавиш».
ВидимостьВФормах - и спользуется для указания перечня форм, в которых требуется выводить отчет. По умолчанию, отчет выводится во всех формах объекта, подключенных к БСП.
ФункциональныеОпции - имена функциональных опций, определяющих видимость команды открытия отчета в форме.
УсловияВидимости – дополнительные условия, о пределяющие видимость команды отчета (массив). Для добавления новых условий рекомендуется использовать процедуру общего модуля «ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено)».
Параметр «Реквизит» - это имя реквизита объекта назначения.
ДополнительныеПараметры – можно указать дополнительные параметры, и потом их обработать в переопределенном обработчике события модуля формы отчета «ПриСозданииНаСервере».
Ссылка на объект назначения передается в контекстный отчет в качестве параметра формы «ПараметрКоманды» . Для указания отбора по переданному значению, необходимо переопределить событие модуля формы отчета «ПриСозданииНаСервере», и добавить значение параметра в структуру «ФормаПараметры.Отбор»:
При необходимости можно обработать данные, переданные в свойстве команды «ДополнительныеПараметры»:
Примечание. Описывать команды для вывода контекстных отчетов можно не только в модуле менеджера самого отчета, но и в модуле менеджера объекта назначения, в экспортной процедуре «ДобавитьКомандыОтчетов». В этом случае, команда должны иметь дополнительный обязательный параметр «Менеджер», в котором необходимо указать полное имя менеджера отчета. Контекстные отчеты в типовых конфигурациях описаны именно таким способом.
Добавление отчетов с помощью механизма внешних отчетов и обработок
Процесс добавления общих и контекстных отчетов с использованием механизма дополнительных отчетов и обработок подробно описан во многих статьях, например в этой .
Я не думаю, что у кого-то возникают сложности при добавлении отчетов таким способом. Отмечу лишь, что в данном случае не нужно обновлять вспомогательные данные. Также, нет возможности указания предопределенных настроек для вариантов отчета. Все настройки вариантов указываются в пользовательском режиме, прямо в форме элемента дополнительного отчета:
Возможность добавления в модуль объекта обработчиков событий формы отчета доступна по умолчанию.
Если я ошибаюсь, и существуют вопросы и непонятные моменты в работе механизма дополнительных отчетов и обработок, пишите в комментариях, и я напишу отдельную статью на эту тему.
Дополнительно хочу отметить, что варианты отчетов, созданные в пользовательском режиме настраиваются одинаково для любого из способов добавления основного отчета.
На этом все, спасибо за внимание, и за то, что читаете мои статьи J .
Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С
Подсистема в 1С 8.3 — объект древа метаданных, который отвечает за построение командного интерфейса конфигурации.
Подсистемы в 1С 8.2
Ниже в статье речь пойдет о подсистемах начиная с версии 8.2.
Дело в том, что в версии 8.1 (как и для обычного приложения 8.2) тоже были подсистемы, но они служили совершенно для других целей, скорее, для разработчика, чем для пользователя. С помощью подсистем в 8.1 обычно разделяли разный функционал. Также подсистемы помогали при объединении разных конфигураций 1С — можно было указать, какую систему переносить.
Подсистемы 1С и интерфейс для программиста
В версиях 8.3 и 8.2 подсистемы — это основной инструмент построения командного интерфейса пользователя. Объекты метаданных «Подсистемы» имеют иерархическую структуру, чтобы настроить «подменю» в интерфейсе, необходимо добавить подчиненную подсистемы:
Свойства и настройки
Рассмотрим настройки и свойства подсистем в конфигураторе:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Включать в командный интерфейс — если Вы забыли установить этот флаг, подсистема не будет отображаться в интерфейсе.
Кнопка Командный интерфейс открывает панель настройки интерфейса, где можно настроить интерфейсы в зависимости от роли текущего пользователя:
Картинка — картинка, назначенная для подсистемы, отображается в режиме предприятия. Можно выбрать стандартную картинку, а можно добавить свою, предварительно создав её как объект конфигурации Картинка:
На вкладке Функциональные опции указывается список функциональных опций, в которых используется данная подсистема.
Вкладка Состав определяет набор объектов метаданных, участвующих в данной подсистеме.
На вкладке Прочее можно описать справку к подсистеме и указать настройку Включать в содержание справки — включать ли данный раздел справки в общую справочную информацию по конфигурации.
Если не отображается отчет или обработка в управляемом интерфейсе
Эта проблема очень часто возникает у начинающих разработчиков — вроде отчет или обработка была добавлена в состав подсистемы, а её не видно.
Первая причина этого может в том, что у объекта не задана управляемая форма.
Вторая причина — на вкладке Команды объекта установлена галка «Использовать стандартные команды». Связано это с тем, что для открытия обработки может быть описана как своя процедура, так и использована стандартная:
Почему не отражается новая подсистема в интерфейсе 1С?
Возможно, просто Вы забыли указать галочку «Включить в командный интерфейс»:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Любите делать отчеты для типовых конфигураций? Вы мастер СКД и отчет с вложенными схемами компоновки и собственным макетом для Вас тоже обычное дело? А может быть программное формирование схемы компоновки для Вас тоже норма? Или Вы новичок и только начинаете постигать сакральные знания СКД? Не важно!
Сегодня мы будем говорить о другом. О подсистеме "Варианты отчетов" из БСП, которую можно встретить практически во всех типовых конфигурациях. Вероятно, многие зададутся вопросом: "О чем тут вообще можно говорить?". Что ж, постараюсь Вас удивить!
Как она устроена
От одной версии БСП к другой, подсистема "Варианты отчетов" становилась все функциональней и интересней. Почти все мы ее используем в своих отчетах и можем даже об этом не подозревать. Сегодня мы поговорим о некоторых нюансах ее работы на примере версии БСП 3.0. Информация в большей части справедлива и для других версия библиотеки.
Прежде чем перейти к особенностям, дадим краткое описание принципа работы подсистемы. В составе метаданных она содержит не мало объектов для реализации всего функционала. Те, что нас интересуют, это:
- Общая форма "Форма отчета".
- Справочник "Варианты отчетов".
- Хранилище настроек "Хранилище вариантов отчетов".
- Общие модули с именем "ВариантыОтчетов*" и "Отчеты*".
- И некоторые настройки корня конфигурации.
Весь смысл подсистемы сводится к тому, что все варианты отчетов, адаптированных для использования в БСП, сохраняются в справочнике "Варианты отчетов" через переопределение основных событий хранилища "Хранилище вариантов отчетов":
- Автор
- Тип отчета
- Пользовательские настройки
- Ключ
- Представление варианта
- Различные настройки видимости
- Описание
- И многое другое.
Все еще непонятно? Сделаем небольшой пример, но отчет будет внешним! Вы когда-нибудь разрабатывали отчеты для ERP? Так вот, на ней и продемонстрируем как подсистема работает. Отчет будет отображать количество элементов номенклатуры в разрезе видов номенклатуры. Обязательно добавим в модуль объекта функции описания внешних отчетов и обработок для БСП, а также программное формирование отчета.
Что там внутри у отчета
Ничего необычного. В модуле объекта добавлено описание внешнего отчета для БСП, а также программное формирование отчета в событии "ПриКомпоновкеРезультата".
Код модуля объекта
В схеме компоновки запрос тоже тривиальный.
Запрос схемы компоновки
Для наглядности мы добавим в настройках отчета два одинаковых варианта, но с разными названиями.
Больше никаких настроек и функций не добавляем (ни форм отчетов, ни задание доп. настроек в свойствах отчета и др.). В режиме 1С:Предприятие отчет выглядит предсказуемо.
Как выглядит отчет в пользовательском режиме
Полный исходный код примера можно найти в соответствующем репозитории на GitHub.
Чтобы подсистема "Варианты отчетов" была задействована для нашего продвинутого отчета, прикрепим его в справочник "Дополнительные отчеты и обработки". Не зря же мы делали описание внешнего отчета в модуле объекта.
Прикрепляем отчет в дополнительные отчеты и обработки
Здесь тоже всем известная процедура — добавляем отчет из файла и выбираем размещение в подсистемах.
Так как это отчет и он совместим с подсистемой вариантов отчетов, то в настройках доступна вкладка "Варианты отчетов". Пока мы не запишем элемент — она недоступна.
После записи система позволит отобразить список вариантов.
Эти варианты были сформированы из настроек схемы компоновки отчета.
Но что это за варианты и где они в системе хранятся?
Под спойлером выше были показаны два варианта отчета, которые БСП сформировала автоматически. Они были получены из настроек вариантов схемы компоновки. В системе они сохраняются в виде элементов справочника "Варианты отчетов", в том самом справочнике, о котором мы уже говорили.
В корне конфигурации ERP (как минимум с версии 2.2) для свойства "Хранилище вариантов отчетов" установлен объект метаданных "ХранилищаВариантов.ХранилищеВариантовОтчетов". То есть, стандартное хранилище для сохранения настроек отчетов не используется. При этом в стандартных событиях этого хранилища переопределены события загрузки и сохранения настроек, в которых алгоритмы используют уже справочник "Варианты отчетов". Таким образом, подсистема перевела весь функционал по работе с вариантами отчетов на собственный справочник.
При этом, если варианты предопределены в схеме компоновки, то сами настройки в справочнике не сохраняются. Это и понятно — зачем их сохранять, если они есть в самой компоновке данных. Однако, если пользователь сохранит свой вариант, то настройки компоновки будут записаны в реквизит "Настройки" этого справочника (в виде хранилища значений).
Еще одной важной частью подсистемы является общая форма "ФормаОтчета", которая предоставляет расширенный функционал работы с отчетами. Если в объекте отчета (внешнем или встроенном в конфигурацию) нет явно заданной формы, то будет использоваться именно она. Достигается это за счет установки основных форм в корне конфигурации.
Кроме основной формы отчета, подсистема также содержит формы для настроек и выбора варианта, но в нашем случае эту часть подсистемы мы не будем рассматривать. Вот так выглядит форма отчета из подсистемы БСП.
И, кстати, Вы заметили, что мы переопределили событие "ПриКомпоновкеДанных" отчета и сделали полностью программное формирование. При этом отчет также формируется в фоновом режиме. В обычном случае, если сделать программное формирование отчета, то он блокирует основной интерфейс при выполнении.
Таким образом, подсистема "Варианты отчетов" позволяет разрабатывать и управлять отчетами эффективно за счет дополнительного функционала:
- Варианты отчетов и их настройки хранятся в справочнике "Варианты отчетов", что позволяет ими гибко управлять (видимость, права доступа, администрирование настроек) и хранить дополнительную информацию для них.
- Стандартизированные формы отчета и настроек создают единый интерфейс для работы с отчетами со стандартным набором функций, а также выстраивают удобную работу с "тяжелыми" отчетами за счет формирования в фоне любых произвольных отчетов за счет использования подсистемы "Длительные операции".
Пример был сделан для внешнего отчета, но встроить его в конфигурацию не составит труда. Фактически нужно еще меньше действий, но потребуется обновление конфигурации.
Пример встраивания отчета в конфигурацию
Для встраивания отчета в конфигурацию с подсистемой "Варианты отчетов" достаточно сделать несколько простых шагов.
1. Добавить отчет непосредственно в конфигурацию
Вставляем внешний отчет из файла.
И получаем тот же самый отчет, но уже в составе конфигурации. Для наглядности добавил к имени постфикс "Встроенный". То же самое сделал для вариантов отчета в настройке схемы компоновки данных.
Теперь перейдем к настройкам.
2. Установить подсистему для него
Выбираем подсистему "Закупки" для работы отчета.
Именно к этой подсистеме отчет будет привязан.
3. Создать описание отчета
В общем модуле "ВариантыОтчетовПереопределяемый" в процедуре "НастроитьВариантыОтчетов" добавим описание обоих вариантов нашего отчета:
С помощью опции "ВидимостьПоУмолчанию" мы включили отображение отчета в панели отчетов для всех его вариантов. По умолчанию видимость включается только для первого основного варианта.
Ура, ура, ура! Отчет теперь виден в пользовательском интерфейсе.
И даже работает! Было не сложно 🙂
Дополнительно можно настраивать различные параметры (права доступа, отображение в панелях отчетов и многое другое), но сейчас на этом не останавливаемся. Более подробная информация есть на ИТС, в демобазах БСП и в других статьях на Инфостарт.
Конечно, все "внутренности" подсистемы мы не рассматриваем, но основная часть теперь должна быть понятна. А теперь поговорим о типичной ситуации в разработке отчетов, с которой приходится часто сталкиваться.
Обычная ситуация
Вроде все просто и никаких проблем не ожидается. Но давайте сделаем те же самые действия на другой конфигурации, например на Бухгалтерии КОРП 3.0.67.70 (не самая новая версия, но подойдет). Добавим как внешний отчет, так и внутренний.
Внешний отчет удалось добавить, а также настроить расположение в подсистеме "Продажи" и даже запустить. Вроде бы все работает, но на самом деле не так как надо:
- Для отчета недоступны варианты отчетов. Их нет не только в интерфейсе элемента внешнего отчета, но и в справочнике "Варианты отчетов" новых элементов не добавилось.
- Отчет использует общую форму отчетов подсистемы, но не весь функционал. Например, фоновое выполнение отчета недоступно.
Встроить отчет в конфигурацию мы смогли (добавлен элемент отчета, настроена подсистема и добавлен код описания вариантов в общий переопределяемый модуль). Запускаем с ключом обновления БСП и …
Думаю, по описанию ошибки Вы уже догадались что же произошло.
Примечание: в новых версиях БСП при добавлении отчета без указания хранилища вариантов отчетов появляется предупреждение:
Свойство отчета "Хранилище вариантов" не заполнено.
Сохранение (выбор) вариантов отчета будет работать в ограниченном режиме.
Обратитесь к разработчику дополнительного (внешнего) отчета.
Поэтому теперь ошибиться с настройками еще сложнее. Если, конечно, не игнорировать данное предупреждение…
Вы будете неприятно удивлены результату — отчеты не только не сформировали элементы справочника "Варианты отчетов", так еще и не выполняются в фоновом режиме, а также не отображаются в панели отчетов. А попытка встроить отчет в конфигурацию вообще приводит к ошибке при запуске базы с ключом обновления БСП.
Только форма отчета типовая, но остальное работает не как ожидалось. В чем же дело?
Что здесь не так и как быть
Ответ достаточно прост. Помните, в кратком описании принципа работы подсистемы говорилось, что она использует собственное хранилище вариантов отчетов, которое переопределяет работу с настройками на справочник "Варианты отчетов". В ERP это хранилище используется по умолчанию, так как оно установлено в качестве основного хранилища вариантов в настройках корня конфигурации. Сравните эти настройки с бухгалтерией.
Разница в настройках ERP и БУХ
В ERP хранилище вариантов отчетов по умолчанию установлено, а в Бухгалтерии нет.
Нет хранилища вариантов — нет и хранения настроек в справочнике "Варианты отчетов", и нет доступа ко всем функциям подсистемы.
То есть, в бухгалтерии в качестве хранилища вариантов отчета по умолчанию используется не хранилище вариантов из БСП, а стандартное хранилище настроек. Именно поэтому отчеты и не смогли использовать возможности подсистемы "Варианты отчетов".
Просто, потому что в свойствах отчета достаточно явно указать хранилище вариантов отчетов.
Явное указание хранилища вариантов отчета
Для встроенного в конфигурацию отчета это делается здесь.
Для внешнего отчета это уже не так интуитивно понятно.
Теперь отчеты подходят для работы с подсистемой.
Но есть небольшая (а может и большая) сложность — если отчет был уже ранее добавлен и пользователи сохраняли свои варианты, то после таких манипуляций все настройки будут потеряны.
Для корректного исправления ситуации лучше всего изменения хранилища вариантов выполнять следующим образом.
В первую очередь, нужно проверить — есть ли для отчета нестандартные (созданные пользователями) варианты отчетов, хранящиеся в стандартном хранилище настроек отчетов. Если их нет — отлично! Просто обновите отчет.
Если же пользовательские варианты уже есть, то установка нового хранилища вариантов сделает эти настройки недоступными для использования. Вас может ожидать шквал заявок от сотрудников 🙂
Чтобы этого избежать, можно конвертировать настройки стандартного хранилища вариантов в элементы справочника "Варианты отчетов". Пример такого скрипта ниже.
Это не законченный вариант, т.к. практика показывает, что конвертация вариантов отчетов сильно отличается от конфигурации, набора существующих вариантов, прав доступа и многого другого. Но принцип работы должен быть понятен.
В демобазах БСП Вы можете найти обработку "ПереносВариантовОтчетов", которая также позволяет конвертировать варианты. Она не имеет гибких настроек и используется при внедрении подсистемы вариантов отчета. Для точечной конвертации она не подойдет, но для изучения работы подсистемы подходит идеально.
Итого, при использовании подсистемы вариантов отчетов нужно обязательно проверять используется ли хранилище вариантов отчетов из БСП в отчете. Для использования полного функционала подсистемы его обязательно нужно включать. Если в конфигурации подсистема внедрена частично, то в отчетах (внешних и встроенных) необходимо указывать хранилище вариантов явно.
При исправлении хранилища вариантов у отчета все старые настройки пользователей могут быть потеряны, поэтому изменение хранилища настроек должно происходить осторожно.
Немного нюансов
При использовании подсистемы "Варианты отчетов" может возникнуть интересная ситуация в процессе разработки. Допустим, у вас есть внешний отчет (пусть будет тот самый отчет для ERP из примера выше). Он уже был добавлен в дополнительные отчеты и обработки и некоторое время использовался.
Теперь появилась необходимость изменить настройки отчета. Вы изменяете их в конфигураторе, сохраняете отчет, открываете в пользовательском режиме для проверки и … барабанная дробь … при открытии настройки не изменились.
Подобная ситуация может также быть, если Вы изменили настройки компоновки вариантов в конфигураторе, обновили информационную базу, но при открытии отчета снова никаких изменений не увидите.
Причина также проста — настройки хранятся в справочнике "Варианты отчетов". При внесении изменений в конфигураторе настройки в самом справочнике, конечно же, не обновляются. Поэтому в отчете и не видно изменений.
- Для внешних отчетов:
- Обновить внешний отчет в справочнике "Дополнительные отчеты и обработки", после чего настройки предопределенных вариантов обновятся.
- На тестовом окружении изменить имя отчета, добавив например цифру. В итоге созданные настройки в справочнике не будут использоваться.
- Для встроенных отчетов:
- После применения изменений конфигурации запустить обновление информационной базы со специальным ключом запуска БСП.
- Отдельно запустить обновление данных вариантов отчета с помощью скрипта.
Дополнительной сложностью могут служить пользовательские варианты отчетов, которые автоматически не обновятся при внесении изменений в сам отчет. Тут придется продумывать варианты решения:
- Выпустить полностью новую версию отчета с новыми вариантами, которая не будет поддерживать существующие пользовательские варианты.
- Очистить все пользовательские варианты для измененного отчета.
- Написать обработку, которая исправит настройки существующих вариантов отчетов пользователей
Варианты решения выбирать только Вам. В остальном, особых проблем и нюансов нет. Подсистема стоит того, чтобы ее использовать и не изобретать велосипеды.
Вот и все
Теперь Вы знаете немного магии из мира БСП, хотя уверен, что для многих это не стало открытием. Надеюсь, что информация будет полезна и сэкономит время в случаях, когда от разработчиков можно услышать:
- Платформа создала кэш настроек отчета, сейчас его почищу. Хм, а не помогает. Компьютер перезапущу!
- Я напишу свой механизм управления вариантами отчетов. Тот, что в БСП, глючит сильно.
- Я делаю отчеты с помощью обработок, что еще за БСП.
И да, всех проблем с отчетами можно было бы избежать, если изучить официальную документацию.
Читайте также: