Новый отчёт в расширении конфигурации: от создания до выдачи пользователям

· 10 мин

Содержание

Чтобы добавить отчёт в расширение 1С, откройте Конфигуратор, выберите Конфигурация → Расширения конфигурации, создайте или откройте расширение и в его дереве метаданных на ветке «Отчеты» нажмите «Добавить». Дальше — схема компоновки данных, место в подсистеме, права через роль и обновление конфигурации базы данных расширения. Основная конфигурация при этом остаётся на поддержке и не снимается с замка.

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

Всё ниже относится к платформе 8.3 (расширения появились в 8.3.6, полноценная работа с отчётами — в релизах 8.3.10 и новее) и одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на управляемых формах.

1. Подготовка: база, права и само расширение

Что нужно до начала

  • 🗄️ Копия базы для разработки. Отчёт не меняет данные, но обновление конфигурации базы данных расширения и отладку удобнее делать не в рабочей базе.
  • 🔑 Права администратора в информационной базе: без них не откроется Конфигуратор и не загрузится расширение в пользовательском режиме.
  • 🧩 Режим совместимости. У расширения есть свойство «Режим совместимости». Оно не может быть новее режима совместимости основной конфигурации. Если сделаете расширение на новой платформе с «Не использовать», в базе со старым режимом оно не подключится.

Расширение или внешний отчёт

Если сомневаетесь, нужен ли вообще отчёт в расширении, сравните три варианта:

ВариантГде живёт отчётОбновление типовойКому подходит
Отчёт в расширенииВ базе, в разделе меню рядом с типовымиНе мешает, конфигурация остаётся на поддержкеОтчёт нужен постоянно и многим пользователям
Внешний отчёт .erfВ файле или в справочнике дополнительных отчётовНе мешаетРазовая выгрузка, проверка гипотезы, обмен с коллегой
Отчёт в основной конфигурацииВ самой конфигурацииНужно снимать с поддержки и сравнивать при каждом обновленииТолько для собственной, не типовой конфигурации

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

Создаём расширение

  1. В Конфигураторе откройте Конфигурация → Расширения конфигурации.
  2. Нажмите «Добавить». Откроется окно свойств нового расширения.
  3. Заполните Имя (например, ОтчетыКомпании) и Префикс (например, ок_). Префикс автоматически подставится в имена всех новых объектов и избавит от конфликтов с будущими релизами типовой.
  4. В поле Назначение выберите «Дополнение». Для отчёта подойдёт и «Адаптация», но «Дополнение» — правильный выбор, если позже захотите добавить в то же расширение свой регистр или реквизит.
  5. Нажмите «ОК» и откройте дерево расширения командой «Открыть конфигурацию».

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

2. Создание отчёта в дереве метаданных расширения

В дереве расширения найдите ветку «Отчеты», щёлкните правой кнопкой и выберите «Добавить». Имя получит префикс: ок_ПродажиПоМенеджерам. Задайте Синоним — именно его пользователь увидит в меню.

Основная схема компоновки данных

  1. На вкладке «Основные» окна отчёта нажмите кнопку открытия Основной схемы компоновки данных.
  2. Согласитесь создать новую схему. Откроется конструктор СКД.
  3. Добавьте набор данных «Запрос» и откройте конструктор запроса.

Пример запроса для БП 3.0 — кредитовый оборот по контрагентам за период из регистра бухгалтерии. Счёт выручки передаётся параметром, поэтому его не нужно вписывать в текст:

ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
    ХозрасчетныйОбороты.СуммаОборотКт КАК Выручка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &НачалоПериода,
            &КонецПериода,
            ,
            Счет В ИЕРАРХИИ (&СчетВыручки),
            ,
            ,
            ,
            ) КАК ХозрасчетныйОбороты

Параметр СчетВыручки появится на вкладке «Параметры» схемы — задайте ему значение 90.01 из плана счетов. Справочник «Контрагенты» и регистр «Хозрасчетный» при этом заимствовать не нужно.

Ресурсы, параметры и варианты

После запроса настройте схему:

  • 📊 Ресурсы. На вкладке «Ресурсы» отметьте Выручка — по ней будут итоги.
  • 📅 Параметры. На вкладке «Параметры» платформа сама добавит НачалоПериода и КонецПериода. Удобнее завести один параметр Период с типом СтандартныйПериод, а в двух исходных указать выражения &Период.ДатаНачала и &Период.ДатаОкончания.
  • 🧱 Вариант. На вкладке «Настройки» создайте вариант: группировка по Контрагент, детальные записи, сортировка по убыванию Выручка.
  • 👁️ Быстрые настройки. Для параметра Период включите «Включать в пользовательские настройки» и режим «Быстрый доступ» — поле периода появится прямо в шапке отчёта.

Нужна ли своя форма

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

3. Как вывести отчёт из расширения в интерфейс пользователя

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

Размещение в разделе

  1. В дереве основной конфигурации (окно «Конфигурация», не расширение) найдите подсистему, в которой должен стоять отчёт, например Продажи или Отчеты.
  2. Правой кнопкой — «Добавить в расширение». Подсистема появится в расширении как заимствованная.
  3. Откройте свойства своего отчёта, вкладку «Подсистемы», и отметьте заимствованную подсистему.

Альтернатива — открыть заимствованную подсистему и на вкладке «Состав» отметить отчёт. Результат одинаковый.

Права на отчёт

Здесь застревают чаще всего. Есть два пути.

СпособКак делаетсяКогда выбирать
Своя роль в расширенииСоздать роль ок_ИспользованиеОтчетов, дать права «Просмотр» и «Использование» на отчётОтчёт нужен не всем; в БСП роль потом включают в профиль групп доступа
Заимствованная рольЗаимствовать роль основной конфигурации и отметить права на новый отчётОтчёт должен быть у всех, у кого уже есть эта роль

В заимствованной роли можно назначать права только на объекты самого расширения. Права на типовые объекты через неё не поменяются, и это правильно.

Если в своей роли дали только «Просмотр», но не «Использование», отчёт появится в списке, но не откроется — платформа сообщит о нарушении прав доступа.

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) свою роль удобнее раздавать через Администрирование → Настройки пользователей и прав → Профили групп доступа: роль расширения отображается в списке ролей профиля после подключения расширения в базе.

Команда в панели раздела

Если подсистема заимствована и отчёт в неё включён, команда открытия отчёта сама появится в панели раздела. Перенести её в нужную группу или сделать видимой по умолчанию можно в «Командном интерфейсе» заимствованной подсистемы. Там же настраивается видимость команды для ролей.

4. Отладка отчёта расширения перед выдачей

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

  1. Нажмите F7 или выберите в меню окна расширения «Обновить конфигурацию базы данных». Обновляется только расширение; основная конфигурация не затрагивается.
  2. Запустите отладку F5. Пользователь, под которым откроется 1С:Предприятие, должен иметь роль с правами на отчёт.
  3. Откройте раздел, найдите команду отчёта, задайте период и нажмите «Сформировать».

Что проверить в первую очередь

  • 🔍 Пустой результат. Откройте консоль запросов или конструктор СКД и выполните запрос с теми же параметрами. Чаще всего ошибка в условии или в незаполненном параметре периода.
  • ➗ Задвоение сумм. Значит, в запросе лишнее соединение. В оборотных регистрах это бывает при соединении с таблицей, где на одну запись приходится несколько строк.
  • 🐢 Медленное формирование. Проверьте, что отбор по периоду и счетам стоит в параметрах виртуальной таблицы, а не в секции ГДЕ.

Точки останова в модуле

Если в модуле объекта отчёта есть код, например в обработчике ПриКомпоновкеРезультата, ставьте в нём точки останова как обычно. Отладчик видит модули расширения наравне с основными.

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

    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    // Если пользователь не задал период, берём текущий месяц
    Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
    Если Параметр <> Неопределено И Не ЗначениеЗаполнено(Параметр.Значение) Тогда
        Параметр.Значение = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц);
        Параметр.Использование = Истина;
    КонецЕсли;

    Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);

    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(Макет, , ДанныеРасшифровки, Истина);

    ДокументРезультат.Очистить();
    Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Вывод.УстановитьДокумент(ДокументРезультат);
    Вывод.Вывести(Процессор);

КонецПроцедуры

Здесь стандартная обработка отключена, и отчёт компонуется вручную: так подставленный период гарантированно попадает в результат. Имя макета ОсновнаяСхемаКомпоновкиДанных — то, что платформа даёт схеме по умолчанию; если вы его меняли, подставьте своё.

Отчёт готов к выдаче, если
Выполнено: 0 / 6

5. Публикация расширения с отчётом и его обновление

Перенос в рабочую базу

  1. В Конфигураторе отладочной базы откройте Конфигурация → Расширения конфигурации.
  2. Выделите расширение, откройте меню «Конфигурация» в окне его дерева и выберите «Сохранить в файл». Получится файл .cfe.
  3. В рабочей базе в пользовательском режиме откройте Администрирование → Печатные формы, отчеты и обработки → Расширения.
  4. Нажмите «Добавить из файла» и укажите .cfe.
  5. Проверьте флажки в списке: «Активно» включено, «Безопасный режим» — по необходимости (см. ниже).
  6. Перезапустите программу. Расширение применяется к сеансу при запуске, поэтому уже открытые сеансы новый отчёт не увидят.

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

Можно загрузить .cfe и через Конфигуратор рабочей базы: в окне расширений выбрать «Загрузить из файла», затем обновить конфигурацию базы данных расширения. Это два отдельных шага: загрузка сама по себе изменения не применяет.

Безопасный режим и защита от опасных действий

По умолчанию расширение, загруженное в пользовательском режиме, работает в безопасном режиме. Для отчёта на одном запросе этого достаточно. Если в модуле отчёта есть обращения к файлам, COM-объектам или внешним ресурсам, безопасный режим их заблокирует. Снимайте флажок только для расширений, код которых вы проверили сами.

Обновление отчёта

Поменяли запрос или вариант — выгрузите новый .cfe и загрузите его поверх. В пользовательском режиме выделите расширение в списке и замените его новым файлом командой обновления в командной панели списка; в Конфигураторе — снова «Загрузить из файла» и обновление конфигурации базы данных. Пользовательские настройки отчёта обычно сохраняются, а сохранённые варианты могут перестать открываться, если вы удалили поле, которое в них использовалось.

Когда обновилась основная конфигурация

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

6. Частые ошибки при добавлении отчёта в расширение

Диагностика: выберите симптом

Ещё одна ловушка — смена имени отчёта после того, как пользователи сохранили варианты и разместили его на начальной странице. Новое имя — это для платформы новый объект: все сохранённые настройки и ссылки потеряются. Имя закладывайте сразу, править можно только синоним.

7. Вопросы, которые задают после первого отчёта

Можно ли добавить в расширение уже готовый внешний отчёт .erf?
Напрямую файл не встраивается. Создайте в расширении новый отчёт, скопируйте в него схему компоновки (через сохранение схемы в файл и загрузку) и код модуля. Обычно это занимает несколько минут.
Чем отчёт в расширении лучше внешнего отчёта?
Он стоит в разделе вместе с типовыми, управляется правами через роли и не требует открывать файл. Внешний отчёт проще отдать разово, расширение — правильнее для постоянного использования.
Работает ли расширение с отчётом в 1С:Фреш или облаке?
Да, если сервис разрешает загрузку расширений. В облачных сервисах расширение обычно проходит проверку и всегда работает в безопасном режиме.
Можно ли в одно расширение добавить несколько отчётов?
Да, количество не ограничено. Каждый получает свой префикс, свои права и место в подсистеме.
Нужно ли снимать основную конфигурацию с поддержки?
Нет. В этом главное преимущество расширения: типовая остаётся на замке и обновляется штатно, а отчёт живёт отдельно.