Новый отчёт в расширении конфигурации: от создания до выдачи пользователям
Содержание
Чтобы добавить отчёт в расширение 1С, откройте Конфигуратор, выберите Конфигурация → Расширения конфигурации, создайте или откройте расширение и в его дереве метаданных на ветке «Отчеты» нажмите «Добавить». Дальше — схема компоновки данных, место в подсистеме, права через роль и обновление конфигурации
базы данных расширения. Основная конфигурация при этом остаётся на поддержке и не снимается с замка.
Частое заблуждение: «чтобы отчёт в расширении видел справочники и регистры типовой, их все надо заимствовать». Нет. В тексте запроса можно обращаться к любым объектам основной конфигурации по имени, без заимствования. Заимствовать нужно только то, что вы меняете или на что ссылаетесь как на тип: подсистему, роль, общий модуль.
Всё ниже относится к платформе 8.3 (расширения появились в 8.3.6, полноценная работа с отчётами — в релизах 8.3.10 и новее) и одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на управляемых формах.
1. Подготовка: база, права и само расширение
Что нужно до начала
- 🗄️ Копия базы для разработки. Отчёт не меняет данные, но обновление конфигурации базы данных расширения и отладку удобнее делать не в рабочей базе.
- 🔑 Права администратора в информационной базе: без них не откроется Конфигуратор и не загрузится расширение в пользовательском режиме.
- 🧩 Режим совместимости. У расширения есть свойство «Режим совместимости». Оно не может быть новее режима совместимости основной конфигурации. Если сделаете расширение на новой платформе с «Не использовать», в базе со старым режимом оно не подключится.
Расширение или внешний отчёт
Если сомневаетесь, нужен ли вообще отчёт в расширении, сравните три варианта:
| Вариант | Где живёт отчёт | Обновление типовой | Кому подходит |
|---|---|---|---|
| Отчёт в расширении | В базе, в разделе меню рядом с типовыми | Не мешает, конфигурация остаётся на поддержке | Отчёт нужен постоянно и многим пользователям |
Внешний отчёт .erf | В файле или в справочнике дополнительных отчётов | Не мешает | Разовая выгрузка, проверка гипотезы, обмен с коллегой |
| Отчёт в основной конфигурации | В самой конфигурации | Нужно снимать с поддержки и сравнивать при каждом обновлении | Только для собственной, не типовой конфигурации |
Для типовой конфигурации на поддержке выбор почти всегда между первыми двумя строками. Расширение выигрывает, когда отчёт должен стоять в разделе и управляться ролями.
Создаём расширение
- В Конфигураторе откройте
Конфигурация → Расширения конфигурации. - Нажмите «Добавить». Откроется окно свойств нового расширения.
- Заполните Имя (например,
ОтчетыКомпании) и Префикс (например,ок_). Префикс автоматически подставится в имена всех новых объектов и избавит от конфликтов с будущими релизами типовой. - В поле Назначение выберите «Дополнение». Для отчёта подойдёт и «Адаптация», но «Дополнение» — правильный выбор, если позже захотите добавить в то же расширение свой регистр или реквизит.
- Нажмите «ОК» и откройте дерево расширения командой «Открыть конфигурацию».
Одно расширение — одна смысловая группа доработок. Отчёты для бухгалтерии и для склада лучше держать в разных расширениях: так их проще отключать и передавать по отдельности.
2. Создание отчёта в дереве метаданных расширения
В дереве расширения найдите ветку «Отчеты», щёлкните правой кнопкой и выберите «Добавить». Имя получит префикс: ок_ПродажиПоМенеджерам. Задайте Синоним — именно его пользователь увидит в меню.
Основная схема компоновки данных
- На вкладке «Основные» окна отчёта нажмите кнопку открытия Основной схемы компоновки данных.
- Согласитесь создать новую схему. Откроется конструктор СКД.
- Добавьте набор данных «Запрос» и откройте конструктор запроса.
Пример запроса для БП 3.0 — кредитовый оборот по контрагентам за период из регистра бухгалтерии. Счёт выручки передаётся параметром, поэтому его не нужно вписывать в текст:
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
ХозрасчетныйОбороты.СуммаОборотКт КАК Выручка
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(
&НачалоПериода,
&КонецПериода,
,
Счет В ИЕРАРХИИ (&СчетВыручки),
,
,
,
) КАК ХозрасчетныйОбороты
Параметр СчетВыручки появится на вкладке «Параметры» схемы — задайте ему значение 90.01 из плана счетов. Справочник «Контрагенты» и регистр «Хозрасчетный» при этом заимствовать не нужно.
Ресурсы, параметры и варианты
После запроса настройте схему:
- 📊 Ресурсы. На вкладке «Ресурсы» отметьте
Выручка— по ней будут итоги. - 📅 Параметры. На вкладке «Параметры» платформа сама добавит
НачалоПериодаиКонецПериода. Удобнее завести один параметрПериодс типомСтандартныйПериод, а в двух исходных указать выражения&Период.ДатаНачалаи&Период.ДатаОкончания. - 🧱 Вариант. На вкладке «Настройки» создайте вариант: группировка по
Контрагент, детальные записи, сортировка по убываниюВыручка. - 👁️ Быстрые настройки. Для параметра
Периодвключите «Включать в пользовательские настройки» и режим «Быстрый доступ» — поле периода появится прямо в шапке отчёта.
Нужна ли своя форма
Чаще всего нет. В типовых конфигурациях на БСП в свойствах основной конфигурации задана общая форма отчёта, и она подхватывается для отчёта из расширения автоматически: те же кнопки «Сформировать», «Настройки», выбор варианта. Свою форму создавайте, только если нужен нестандартный интерфейс.
3. Как вывести отчёт из расширения в интерфейс пользователя
Отчёт создан, но пользователь его не увидит, пока вы не решите две задачи: где он появится и кому разрешён.
Размещение в разделе
- В дереве основной конфигурации (окно «Конфигурация», не расширение) найдите подсистему, в которой должен стоять отчёт, например
ПродажиилиОтчеты. - Правой кнопкой — «Добавить в расширение». Подсистема появится в расширении как заимствованная.
- Откройте свойства своего отчёта, вкладку «Подсистемы», и отметьте заимствованную подсистему.
Альтернатива — открыть заимствованную подсистему и на вкладке «Состав» отметить отчёт. Результат одинаковый.
Права на отчёт
Здесь застревают чаще всего. Есть два пути.
| Способ | Как делается | Когда выбирать |
|---|---|---|
| Своя роль в расширении | Создать роль ок_ИспользованиеОтчетов, дать права «Просмотр» и «Использование» на отчёт | Отчёт нужен не всем; в БСП роль потом включают в профиль групп доступа |
| Заимствованная роль | Заимствовать роль основной конфигурации и отметить права на новый отчёт | Отчёт должен быть у всех, у кого уже есть эта роль |
В заимствованной роли можно назначать права только на объекты самого расширения. Права на типовые объекты через неё не поменяются, и это правильно.
Если в своей роли дали только «Просмотр», но не «Использование», отчёт появится в списке, но не откроется — платформа сообщит о нарушении прав доступа.
В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) свою роль удобнее раздавать через Администрирование → Настройки пользователей и прав → Профили групп доступа: роль расширения отображается в списке ролей профиля после подключения расширения в базе.
Команда в панели раздела
Если подсистема заимствована и отчёт в неё включён, команда открытия отчёта сама появится в панели раздела. Перенести её в нужную группу или сделать видимой по умолчанию можно в «Командном интерфейсе» заимствованной подсистемы. Там же настраивается видимость команды для ролей.
4. Отладка отчёта расширения перед выдачей
Расширение сохраняется в базе отдельно от основной конфигурации, и у него своя кнопка обновления.
- Нажмите
F7или выберите в меню окна расширения «Обновить конфигурацию базы данных». Обновляется только расширение; основная конфигурация не затрагивается. - Запустите отладку
F5. Пользователь, под которым откроется 1С:Предприятие, должен иметь роль с правами на отчёт. - Откройте раздел, найдите команду отчёта, задайте период и нажмите «Сформировать».
Что проверить в первую очередь
- 🔍 Пустой результат. Откройте консоль запросов или конструктор СКД и выполните запрос с теми же параметрами. Чаще всего ошибка в условии или в незаполненном параметре периода.
- ➗ Задвоение сумм. Значит, в запросе лишнее соединение. В оборотных регистрах это бывает при соединении с таблицей, где на одну запись приходится несколько строк.
- 🐢 Медленное формирование. Проверьте, что отбор по периоду и счетам стоит в параметрах виртуальной таблицы, а не в секции
ГДЕ.
Точки останова в модуле
Если в модуле объекта отчёта есть код, например в обработчике ПриКомпоновкеРезультата, ставьте в нём точки останова как обычно. Отладчик видит модули расширения наравне с основными.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Если пользователь не задал период, берём текущий месяц
Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если Параметр <> Неопределено И Не ЗначениеЗаполнено(Параметр.Значение) Тогда
Параметр.Значение = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц);
Параметр.Использование = Истина;
КонецЕсли;
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет, , ДанныеРасшифровки, Истина);
ДокументРезультат.Очистить();
Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Вывод.УстановитьДокумент(ДокументРезультат);
Вывод.Вывести(Процессор);
КонецПроцедуры
Здесь стандартная обработка отключена, и отчёт компонуется вручную: так подставленный период гарантированно попадает в результат. Имя макета ОсновнаяСхемаКомпоновкиДанных — то, что платформа даёт схеме по умолчанию; если вы его меняли, подставьте своё.
5. Публикация расширения с отчётом и его обновление
Перенос в рабочую базу
- В Конфигураторе отладочной базы откройте
Конфигурация → Расширения конфигурации. - Выделите расширение, откройте меню «Конфигурация» в окне его дерева и выберите «Сохранить в файл». Получится файл
.cfe. - В рабочей базе в пользовательском режиме откройте
Администрирование → Печатные формы, отчеты и обработки → Расширения. - Нажмите «Добавить из файла» и укажите
.cfe. - Проверьте флажки в списке: «Активно» включено, «Безопасный режим» — по необходимости (см. ниже).
- Перезапустите программу. Расширение применяется к сеансу при запуске, поэтому уже открытые сеансы новый отчёт не увидят.
Подключение расширения не обрывает сеансы, но изменения подхватываются только после перезапуска у каждого пользователя. Предупредите коллег заранее.
Можно загрузить .cfe и через Конфигуратор рабочей базы: в окне расширений выбрать «Загрузить из файла», затем обновить конфигурацию
базы данных расширения. Это два отдельных шага: загрузка сама по себе изменения не применяет.
Безопасный режим и защита от опасных действий
По умолчанию расширение, загруженное в пользовательском режиме, работает в безопасном режиме. Для отчёта на одном запросе этого достаточно. Если в модуле отчёта есть обращения к файлам, COM-объектам или внешним ресурсам, безопасный режим их заблокирует. Снимайте флажок только для расширений, код которых вы проверили сами.
Обновление отчёта
Поменяли запрос или вариант — выгрузите новый .cfe и загрузите его поверх. В пользовательском режиме выделите расширение в списке и замените его новым файлом командой обновления в командной панели списка; в Конфигураторе — снова «Загрузить из файла» и обновление конфигурации базы данных. Пользовательские настройки отчёта обычно сохраняются, а сохранённые варианты могут перестать открываться, если вы удалили поле, которое в них использовалось.
Когда обновилась основная конфигурация
После обновления типовой расширение может перестать применяться, если заимствованная подсистема или роль изменилась или исчезла. Проверить это можно в Конфигураторе: в окне расширений есть команда проверки применимости. Если причина в заимствованном объекте, откройте его в дереве расширения, обновите из основной конфигурации через контекстное меню, обновите конфигурацию базы данных расширения и выгрузите новый .cfe.
6. Частые ошибки при добавлении отчёта в расширение
Ещё одна ловушка — смена имени отчёта после того, как пользователи сохранили варианты и разместили его на начальной странице. Новое имя — это для платформы новый объект: все сохранённые настройки и ссылки потеряются. Имя закладывайте сразу, править можно только синоним.