Как подключить внешний отчет к документу в 1С:ERP, если его нет в списке размещения?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При работе с системой 1С:ERP пользователи часто сталкиваются с необходимостью подключения внешних отчетов для получения специфической аналитики или форм. Однако иногда мы можем обнаружить, что нужного нам документа, например, «Начисления по кредитам и депозитам», просто нет в списке доступных для размещения внешнего отчета. В подобных ситуациях часто выручает готовая Ведомость расчетов по кредитам, займам и депозитам для УТ 11, КА 2, ЕРП 2. Давайте разберемся, почему это происходит и как мы можем решить эту задачу.

Почему документа нет в списке размещения?

Когда мы пытаемся подключить внешний отчет к определенному документу, например, «Начисления по кредитам и депозитам» в 1С:ERP, и обнаруживаем, что этого документа нет в списке размещения, причина обычно кроется в архитектуре конфигурации. Разработчик конфигурации (вендор) не предусмотрел прямую возможность подключения дополнительных отчетов или обработок к данному типу документа в стандартном функционале. Это означает, что для таких документов система не предоставляет стандартных точек расширения, через которые можно было бы зарегистрировать внешний отчет.

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

Способы подключения внешнего отчета к недоступному документу

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

1. Использование расширений конфигурации

Расширения конфигурации – это мощный и рекомендуемый инструмент для модификации типовых конфигураций 1С без снятия их с поддержки. Например, с их помощью можно реализовать дополнительные реквизиты табличных частей объекта. Мы можем добавлять новую функциональность или изменять существующую, не затрагивая основной код системы. Это особенно важно для обеспечения легкого и беспроблемного обновления конфигурации в будущем.

Принцип работы расширений
  1. Мы создаем отдельный объект – расширение, которое "накладывается" поверх основной конфигурации.
  2. Внутри расширения мы можем добавлять или изменять объекты конфигурации, включая формы, команды и даже метаданные.
  3. Для решения нашей задачи мы можем добавить в расширение необходимый функционал, который позволит зарегистрировать наш внешний отчет для документа «Начисления по кредитам и депозитам», а также реализовать привилегированные отчеты для ускорения работы.

Подробные шаги для работы с расширениями

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

  1. Создание расширения: Сначала мы создаем новое расширение в режиме конфигуратора. Мы открываем конфигуратор, выбираем "Конфигурация" -> "Расширения конфигурации" -> "Добавить".
  2. Добавление нужного документа в расширение: Мы добавляем документ «Начисления по кредитам и депозитам» в расширение. Для этого в окне расширения мы находим документ в основной конфигурации, щелкаем по нему правой кнопкой мыши и выбираем "Добавить в расширение". Важно: мы добавляем его не для изменения его структуры, а для добавления новых команд или форм.
  3. Создание общей команды или формы для вызова отчета: В расширении мы можем создать новую общую команду или добавить ее в форму документа. Эта команда будет отвечать за вызов нашего внешнего отчета.
    • Если мы добавляем команду в форму документа, мы можем добавить ее, например, в группу "Печать" или создать новую группу. В свойствах команды мы указываем обработчик, который будет запускать внешний отчет.
    • Если мы хотим более гибкое решение, мы можем создать общую команду, которая будет доступна из командного интерфейса или через другой механизм.
  4. Интеграция с подсистемой "Дополнительные отчеты и обработки": Чтобы наш внешний отчет корректно отображался и управлялся, мы должны интегрировать его с подсистемой "Дополнительные отчеты и обработки". Это можно сделать, например, путем создания собственной формы для выбора и запуска отчета, которая будет работать с зарегистрированными в этой подсистеме внешними отчетами. Или, что проще, при создании команды в расширении, мы можем напрямую вызывать менеджер внешних отчетов для нужного документа.
  5. Программный вызов внешнего отчета: В обработчике нашей команды или в специальной функции, мы будем программно вызывать наш внешний отчет. Для этого нам понадобится использовать стандартные функции работы с внешними отчетами и обработками.

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

2. Подключение внешнего отчета как внешней печатной формы

Второй эффективный способ – это рассматривать наш внешний отчет как внешнюю печатную форму документа. Механизм внешних печатных форм очень схож с механизмом внешних отчетов и также управляется подсистемой "Дополнительные отчеты и обработки". Этот подход позволяет нам настроить вывод данных из документа в определенном формате, который фактически и является отчетом.

Отличия и сходства с внешним отчетом

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

  1. Общий механизм управления: Оба типа объектов регистрируются и управляются через подсистему "Дополнительные отчеты и обработки".
  2. Структура файла: Файл внешней печатной формы (расширение .epf) по своей структуре мало отличается от файла внешнего отчета.
  3. Цель: Внешняя печатная форма предназначена для печати текущего документа (или набора документов) с использованием его данных. Если ваш "отчет" основывается на данных одного или нескольких конкретных документов, то реализация его как печатной формы будет вполне логичной.

Шаги для создания внешней печатной формы

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

  1. В Конфигураторе: Мы создаем новый внешний файл обработки, в котором указываем вид объекта "Внешняя печатная форма". Это делается через меню "Файл" -> "Новый..." -> "Внешняя обработка" и затем устанавливаем соответствующий вид.
  2. Определение совместимости: В метаданных внешней печатной формы мы указываем, для какого документа она предназначена – в нашем случае, для «Начисления по кредитам и депозитам». Это делается через экспортную функцию СведенияОВнешнейОбработке, которую мы рассмотрим чуть позже.
  3. Реализация логики вывода: В модуле объекта внешней печатной формы мы реализуем логику получения данных из документа и их форматирования для вывода. Это может быть табличный документ, который будет выглядеть как отчет.
  4. Регистрация в пользовательском режиме: После сохранения файла .epf мы регистрируем его в режиме "Предприятие" через раздел "НСИ и администрирование" -> "Печатные формы, отчеты и обработки" -> "Дополнительные отчеты и обработки". Здесь мы добавляем наш файл и указываем, что это печатная форма для документа "Начисления по кредитам и депозитам".

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

Общие шаги для подключения любых внешних отчетов и обработок в 1С:ERP

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

  1. Включение функциональной опции:

    Прежде всего, мы должны убедиться, что функциональная опция "Дополнительные отчеты и обработки" активирована в нашей конфигурации. Мы можем сделать это, перейдя в раздел "НСИ и администрирование" -> "Администрирование" -> "Печатные формы, отчеты и обработки". Здесь мы находим и устанавливаем флажок напротив соответствующей опции. Без этого шага мы не сможем вообще работать с внешними файлами.

  2. Добавление из файла:

    После активации опции мы можем добавить наш внешний отчет или обработку в систему. Мы переходим в "НСИ и администрирование" -> "Дополнительные отчеты и обработки", нажимаем кнопку "Создать" или "Добавить из файла" и выбираем наш файл (с расширением .erf для отчетов, .epf для печатных форм или .epf/.erf для обработок). Система проанализирует файл и предложит его зарегистрировать.

  3. Регистрация и размещение:

    Загруженный файл необходимо зарегистрировать в системе. При регистрации мы указываем, к каким объектам или в каких разделах командного интерфейса будет доступен отчет или обработка. Если нужный документ (например, "Начисления по кредитам и депозитам") отсутствует в списке в этом окне, как в нашем случае, именно здесь потребуется доработка через расширение или реализация как внешней печатной формы. Мы можем вручную привязать его к документу, если реализуем как печатную форму, или использовать программный вызов через расширение.

  4. Функция СведенияОВнешнейОбработке:

    Для успешного подключения любого внешнего отчета или обработки, в модуле объекта внешнего файла обязательно должна присутствовать экспортная функция с именем СведенияОВнешнейОбработке. Эта функция возвращает структуру с метаданными о внешнем объекте, такими как наименование, вид, описание и сведения о совместимости. Без этой функции или при ее некорректной реализации при подключении могут возникнуть ошибки. Мы должны корректно ее реализовать.

    Пример структуры, возвращаемой функцией:

    
    Функция СведенияОВнешнейОбработке() Экспорт
    
        ПараметрыРегистрации = Новый Структура;
        ПараметрыРегистрации.Вставить("Вид",                       "ДополнительныйОтчет"); // Или "ДополнительнаяПечатнаяФорма"
        ПараметрыРегистрации.Вставить("Наименование",              "МойОтчетПоНачислениям");
        ПараметрыРегистрации.Вставить("Версия",                    "1.0");
        ПараметрыРегистрации.Вставить("Информация",                "Отчет по начислениям по кредитам и депозитам.");
        ПараметрыРегистрации.Вставить("БезопасныйРежим",           Истина);
        ПараметрыРегистрации.Вставить("Назначение",                Новый Массив);
    
        // Если это отчет для конкретного документа, добавляем его в Назначение
        // В случае, если документ не поддерживается стандартно, это будет использоваться
        // для определения, к какому документу относится наша ВнешняяПечатнаяФорма.
        // При использовании расширения для вызова отчета, Назначение может быть более общим.
        ПараметрыРегистрации.Назначение.Добавить("Документ.НачисленияПоКредитамИДепозитам"); 
    
        Команды = Новый Массив;
    
        Команда = ПараметрыРегистрации.Вставить("Команды", Команды);
    
        ПараметрыКоманды = Новый Структура;
        ПараметрыКоманды.Вставить("Представление",      "Отчет по начислениям");
        ПараметрыКоманды.Вставить("Идентификатор",      "МойОтчет");
        ПараметрыКоманды.Вставить("Использование",      "ОткрытиеФормы"); // Или "ВызовСерверногоМетода", "ВызовКлиентскогоМетода"
        ПараметрыКоманды.Вставить("ПоказыватьОповещение", Истина);
        Команды.Добавить(ПараметрыКоманды);
    
        Возврат ПараметрыРегистрации;
    
    КонецФункции
    
    // Функция, которая будет вызываться при использовании команды
    Функция ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
        Если ИдентификаторКоманды = "МойОтчет" Тогда
            // Здесь мы можем открыть форму отчета или выполнить другие действия
            // Например, открыть форму отчета, передав ей объекты назначения
            Форма = ПолучитьФорму("Отчет.МойОтчетПоНачислениям.ФормаОтчета");
            Форма.Открыть();
        КонецЕсли;
    КонецФункции
    

    Мы обращаем внимание, что в структуре ПараметрыРегистрации мы указываем Вид, который может быть "ДополнительныйОтчет", "ДополнительнаяОбработка" или "ДополнительнаяПечатнаяФорма". Назначение – это массив строк с полными именами метаданных, к которым применима наша внешняя обработка. Именно этот параметр определяет, в списках каких документов появится наша форма/отчет. Для случая с расширением, мы можем использовать более общее назначение или вообще не указывать, если вызов будет программным.

  5. Настройка прав доступа:

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

Заключение

Таким образом, если документ "Начисления по кредитам и депозитам" или любой другой документ не отображается в списке размещения для внешнего отчета в 1С:ERP, мы знаем, что это не тупик. Мы можем успешно решить эту проблему. Наиболее гибким и рекомендуемым решением является использование расширений конфигурации для добавления этой возможности, что позволяет нам сохранить типовую конфигурацию на поддержке. Альтернативным, но также эффективным способом будет реализация функционала отчета в виде внешней печатной формы, используя уже существующий и хорошо отлаженный механизм. Мы должны всегда помнить о необходимости корректной реализации функции СведенияОВнешнейОбработке и настройки прав доступа для наших пользователей.

← На главную