При работе с системой 1С:ERP пользователи часто сталкиваются с необходимостью подключения внешних отчетов для получения специфической аналитики или форм. Однако иногда мы можем обнаружить, что нужного нам документа, например, «Начисления по кредитам и депозитам», просто нет в списке доступных для размещения внешнего отчета. В подобных ситуациях часто выручает готовая Ведомость расчетов по кредитам, займам и депозитам для УТ 11, КА 2, ЕРП 2. Давайте разберемся, почему это происходит и как мы можем решить эту задачу.
Когда мы пытаемся подключить внешний отчет к определенному документу, например, «Начисления по кредитам и депозитам» в 1С:ERP, и обнаруживаем, что этого документа нет в списке размещения, причина обычно кроется в архитектуре конфигурации. Разработчик конфигурации (вендор) не предусмотрел прямую возможность подключения дополнительных отчетов или обработок к данному типу документа в стандартном функционале. Это означает, что для таких документов система не предоставляет стандартных точек расширения, через которые можно было бы зарегистрировать внешний отчет.
Это не является ошибкой, а скорее особенностью проектирования. Разработчики стремятся оптимизировать производительность и безопасность, а также упростить обновление конфигураций, ограничивая возможности модификации для некоторых объектов. Тем не менее, это не безвыходная ситуация, и существуют эффективные способы обойти это ограничение.
Давайте рассмотрим два основных подхода, которые позволят нам подключить внешний отчет к документу, отсутствующему в стандартном списке размещения: использование расширений конфигурации и подключение отчета как внешней печатной формы.
Расширения конфигурации – это мощный и рекомендуемый инструмент для модификации типовых конфигураций 1С без снятия их с поддержки. Например, с их помощью можно реализовать дополнительные реквизиты табличных частей объекта. Мы можем добавлять новую функциональность или изменять существующую, не затрагивая основной код системы. Это особенно важно для обеспечения легкого и беспроблемного обновления конфигурации в будущем.
Для того чтобы добавить возможность подключения внешнего отчета к документу через расширение, нам потребуется выполнить следующие действия:
Мы видим, что расширения предоставляют гибкий механизм для обхода ограничений типовой конфигурации, позволяя нам добавлять необходимый функционал без ущерба для поддержки.
Второй эффективный способ – это рассматривать наш внешний отчет как внешнюю печатную форму документа. Механизм внешних печатных форм очень схож с механизмом внешних отчетов и также управляется подсистемой "Дополнительные отчеты и обработки". Этот подход позволяет нам настроить вывод данных из документа в определенном формате, который фактически и является отчетом.
Хотя "отчет" и "печатная форма" кажутся разными сущностями, в контексте 1С они часто используют одни и те же механизмы:
Для создания внешней печатной формы, которую мы будем использовать как отчет, нам нужно:
СведенияОВнешнейОбработке, которую мы рассмотрим чуть позже.Мы видим, что этот подход позволяет нам использовать существующий механизм для обхода отсутствия документа в списке размещения для отчетов, переквалифицировав отчет в печатную форму.
Независимо от выбранного метода (расширение или внешняя печатная форма), существуют общие принципы и шаги, которые мы должны выполнить для успешного подключения внешних отчетов и обработок в 1С:ERP.
Прежде всего, мы должны убедиться, что функциональная опция "Дополнительные отчеты и обработки" активирована в нашей конфигурации. Мы можем сделать это, перейдя в раздел "НСИ и администрирование" -> "Администрирование" -> "Печатные формы, отчеты и обработки". Здесь мы находим и устанавливаем флажок напротив соответствующей опции. Без этого шага мы не сможем вообще работать с внешними файлами.
После активации опции мы можем добавить наш внешний отчет или обработку в систему. Мы переходим в "НСИ и администрирование" -> "Дополнительные отчеты и обработки", нажимаем кнопку "Создать" или "Добавить из файла" и выбираем наш файл (с расширением .erf для отчетов, .epf для печатных форм или .epf/.erf для обработок). Система проанализирует файл и предложит его зарегистрировать.
Загруженный файл необходимо зарегистрировать в системе. При регистрации мы указываем, к каким объектам или в каких разделах командного интерфейса будет доступен отчет или обработка. Если нужный документ (например, "Начисления по кредитам и депозитам") отсутствует в списке в этом окне, как в нашем случае, именно здесь потребуется доработка через расширение или реализация как внешней печатной формы. Мы можем вручную привязать его к документу, если реализуем как печатную форму, или использовать программный вызов через расширение.
СведенияОВнешнейОбработке:
Для успешного подключения любого внешнего отчета или обработки, в модуле объекта внешнего файла обязательно должна присутствовать экспортная функция с именем СведенияОВнешнейОбработке. Эта функция возвращает структуру с метаданными о внешнем объекте, такими как наименование, вид, описание и сведения о совместимости. Без этой функции или при ее некорректной реализации при подключении могут возникнуть ошибки. Мы должны корректно ее реализовать.
Пример структуры, возвращаемой функцией:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет"); // Или "ДополнительнаяПечатнаяФорма"
ПараметрыРегистрации.Вставить("Наименование", "МойОтчетПоНачислениям");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Отчет по начислениям по кредитам и депозитам.");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
// Если это отчет для конкретного документа, добавляем его в Назначение
// В случае, если документ не поддерживается стандартно, это будет использоваться
// для определения, к какому документу относится наша ВнешняяПечатнаяФорма.
// При использовании расширения для вызова отчета, Назначение может быть более общим.
ПараметрыРегистрации.Назначение.Добавить("Документ.НачисленияПоКредитамИДепозитам");
Команды = Новый Массив;
Команда = ПараметрыРегистрации.Вставить("Команды", Команды);
ПараметрыКоманды = Новый Структура;
ПараметрыКоманды.Вставить("Представление", "Отчет по начислениям");
ПараметрыКоманды.Вставить("Идентификатор", "МойОтчет");
ПараметрыКоманды.Вставить("Использование", "ОткрытиеФормы"); // Или "ВызовСерверногоМетода", "ВызовКлиентскогоМетода"
ПараметрыКоманды.Вставить("ПоказыватьОповещение", Истина);
Команды.Добавить(ПараметрыКоманды);
Возврат ПараметрыРегистрации;
КонецФункции
// Функция, которая будет вызываться при использовании команды
Функция ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ИдентификаторКоманды = "МойОтчет" Тогда
// Здесь мы можем открыть форму отчета или выполнить другие действия
// Например, открыть форму отчета, передав ей объекты назначения
Форма = ПолучитьФорму("Отчет.МойОтчетПоНачислениям.ФормаОтчета");
Форма.Открыть();
КонецЕсли;
КонецФункции
Мы обращаем внимание, что в структуре ПараметрыРегистрации мы указываем Вид, который может быть "ДополнительныйОтчет", "ДополнительнаяОбработка" или "ДополнительнаяПечатнаяФорма". Назначение – это массив строк с полными именами метаданных, к которым применима наша внешняя обработка. Именно этот параметр определяет, в списках каких документов появится наша форма/отчет. Для случая с расширением, мы можем использовать более общее назначение или вообще не указывать, если вызов будет программным.
Последний, но не менее важный шаг – это настройка прав доступа. Пользователи должны иметь соответствующую роль "Использование дополнительных отчетов и обработок", чтобы иметь доступ к подключенным внешним отчетам. Мы проверяем и, при необходимости, назначаем эту роль пользователям или группам пользователей. Без этой роли пользователи не увидят и не смогут использовать зарегистрированные внешние объекты.
Таким образом, если документ "Начисления по кредитам и депозитам" или любой другой документ не отображается в списке размещения для внешнего отчета в 1С:ERP, мы знаем, что это не тупик. Мы можем успешно решить эту проблему. Наиболее гибким и рекомендуемым решением является использование расширений конфигурации для добавления этой возможности, что позволяет нам сохранить типовую конфигурацию на поддержке. Альтернативным, но также эффективным способом будет реализация функционала отчета в виде внешней печатной формы, используя уже существующий и хорошо отлаженный механизм. Мы должны всегда помнить о необходимости корректной реализации функции СведенияОВнешнейОбработке и настройки прав доступа для наших пользователей.