При разработке отчетов на базе Схемы компоновки данных (СКД) в платформе «1С:Предприятие 8.3» разработчики часто отказываются от создания индивидуальных форм. Использование стандартных общих форм платформы или Библиотеки стандартных подсистем (БСП) значительно ускоряет разработку и обеспечивает унификацию интерфейса. Однако при таком подходе возникает классическая трудность: изменение привычных свойств метаданных (таких как Имя или Синоним отчета в дереве конфигурации) не приводит к изменению его названия на экране пользователя.
В этой статье мы подробно разберем, почему так происходит, и рассмотрим все существующие способы изменения названия и заголовка отчета на СКД, у которого нет собственной формы.
Когда мы открываем отчет, у которого отсутствует собственная форма, платформа «1С:Предприятие» генерирует форму автоматически либо использует механизмы БСП. В этот момент система обращается не к синониму самого объекта метаданных «Отчет», а к настройкам конкретного варианта отчета, заложенного в схеме компоновки данных. Именно имя варианта выводится в заголовке открытого окна и на панелях отчетов.
Проанализируем пошагово все варианты решения этой задачи в зависимости от условий работы вашей конфигурации.
Если вам необходимо изменить название, которое отображается в заголовке формы отчета и в списках вариантов, выполните следующие действия в конфигураторе:
ОсновнаяСхемаКомпоновкиДанных).Основной).Этот способ напрямую управляет тем, под каким именем вариант отчета регистрируется в системе и как он подписывается при открытии стандартной формы.
Очень часто разработчики сталкиваются с ситуацией: в конфигураторе название изменено, конфигурация обновлена, но у пользователя в режиме «1С:Предприятие» отчет все равно открывается со старым заголовком. Выясним причину этого поведения.
Дело в том, что платформа 1С сохраняет («кэширует») персональные настройки вариантов отчетов для каждого пользователя индивидуально. Если пользователь хотя бы один раз открывал этот отчет ранее, система запомнила старые настройки (включая старое представление варианта).
Чтобы новое наименование применилось для конкретного пользователя, необходимо сбросить его настройки к первоначальным. Выполните с ним следующие действия в режиме «1С:Предприятие»:
В современных типовых конфигурациях (таких как ERP, Комплексная автоматизация, Управление торговлей, Бухгалтерия предприятия и др.) за вывод отчетов отвечает подсистема БСП «Варианты отчетов». БСП хранит информацию обо всех отчетах в специальном справочнике. Изменение схемы в конфигураторе не всегда автоматически обновляет этот справочник у существующих пользователей.
Разберем, как изменить название отчета напрямую в пользовательском режиме без внесения изменений в конфигуратор:
Варианты отчетов (или Панели отчетов в зависимости от версии БСП).Если вам требуется жестко прописать правила интеграции отчета в БСП на уровне программного кода конфигурации, используйте общий модуль ВариантыОтчетовПереопределяемый. В процедуре НастроитьВариантыОтчетов вы можете задать свойства отчета программно:
Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
// Пример настройки описания встроенного отчета
РезультатНастройки = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.МойОтчетСКД);
РезультатНастройки.ОпределитьНастройкиВариантов = Истина;
КонецПроцедуры
Необходимо четко различать имя варианта отчета (которое пишется в заголовке окна программы) и печатный заголовок (который выводится непосредственно в шапке результирующего табличного документа над таблицей данных). Чтобы изменить именно печатный заголовок внутри самого отчета:
Что делать, если заголовок отчета должен формироваться динамически в зависимости от условий выполнения (например, содержать текущую дату, имя пользователя или выбранную организацию), а формы у отчета по-прежнему нет? В этом случае мы можем применить программную установку параметров вывода в модуле объекта отчета.
Рассмотрим пример реализации. Откройте Модуль объекта вашего отчета и переопределите обработчик события ПриКомпоновкеРезультата:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// 1. Получаем текущие настройки компоновщика
ТекущиеНастройки = КомпоновщикНастроек.ПолучитьНастройки();
// 2. Формируем динамический текст заголовка
ТекстЗаголовка = "Отчет по продажам за " + Формат(ТекущаяДата(), "ДФ='MMMM yyyy ""г.""'");
// 3. Находим параметр вывода "Заголовок" и устанавливаем его значение
ПараметрЗаголовок = ТекущиеНастройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Title"));
Если ПараметрЗаголовок <> Неопределено Тогда
ПараметрЗаголовок.Значение = ТекстЗаголовка;
ПараметрЗаголовок.Использование = Истина;
КонецЕсли;
// 4. Загружаем измененные настройки обратно в компоновщик
КомпоновщикНастроек.ЗагрузитьНастройки(ТекущиеНастройки);
КонецПроцедуры
Благодаря этому коду при каждом формировании отчета система будет автоматически рассчитывать актуальное название и выводить его в шапку табличного документа без необходимости создания диалоговых форм.
Если ваш отчет СКД не встроен в конфигурацию, а подключается как внешний через механизм БСП «Дополнительные отчеты и обработки», его регистрация имеет свою специфику.
Для изменения отображаемого имени внешнего отчета вам потребуется отредактировать функцию регистрации в модуле объекта отчета:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОПанелиАдминистрирования();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
ПараметрыРегистрации.Наименование = "Продажи и списание товаров (Новое название)";
// Определение команд
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Продажи и списание товаров (Новое название)'");
НоваяКоманда.Идентификатор = "ПродажиИСписаниеТоваров";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипЗапускаОткрытиеФормы();
Возврат ПараметрыРегистрации;
КонецФункции
Внимание! После того как вы изменили код функции СведенияОВнешнейОбработке во внешнем файле отчета, простого перезапуска отчета в режиме предприятия будет недостаточно. Вам необходимо выполнить обновление регистрации в справочнике:
Используя предложенные методики, вы сможете гибко управлять именами ваших отчетов на СКД в любых рабочих сценариях платформы 1С:Предприятие 8.3.