При разработке отчетов на Системе Компоновки Данных (СКД) в 1С:Предприятии мы часто сталкиваемся с необходимостью тонкой настройки их внешнего вида, включая заголовки полей в шапке. Однако бывают ситуации, когда, несмотря на все наши усилия в конфигураторе, эти настройки не применяются. Давайте подробно разберем, почему так происходит и как исправить эту распространенную проблему, а также затронем особенности работы с вычисляемыми полями и ресурсами.
Представьте ситуацию: вы разрабатываете отчет и хотите, чтобы в шапке отчета вместо полного имени поля, такого как ФизЛицо.Фамилия, отображалось просто Фамилия. Вы заходите в конфигуратор, настраиваете выбранные поля, указываете нужный заголовок, но при формировании отчета в режиме «1С:Предприятие» видите старое, полное название. Это вызывает недоумение, ведь кажется, что все сделано правильно.
Мы видим, что попытки изменить заголовок поля, например, на закладке Выбранные поля, не дают ожидаемого результата. Отчет продолжает выводить системное имя поля, игнорируя заданное нами короткое и понятное наименование. Это создает путаницу и мешает создать удобный для пользователя интерфейс отчета.
Как показывает практика, очень часто корень проблемы кроется в сохраненных пользовательских вариантах отчета. Пользователь в режиме «1С:Предприятие» может самостоятельно настроить отчет под свои нужды (изменить порядок колонок, добавить отборы, сменить заголовки) и сохранить эти настройки как свой вариант отчета. Когда такой вариант сохранен, он имеет приоритет над настройками, сделанными в конфигураторе.
Рассмотрим, что произошло в нашем случае. Один пользователь пытался изменить заголовок, и у него ничего не получалось. Но когда мы зашли в систему под другим пользователем, у которого не было сохраненных вариантов отчета для данного отчета, все настройки заголовков, сделанные в конфигураторе, прекрасно применились! Это однозначно указывает на то, что проблема заключается именно в сохраненном пользовательском варианте, который перекрывает изменения, сделанные разработчиком.
Для решения проблемы с некорректным отображением заголовков полей нам необходимо удалить мешающие пользовательские варианты отчета. Разберем по шагам, как это сделать в режиме «1С:Предприятие».
Важно: Если вы столкнулись с проблемой, когда даже после удаления пользовательских вариантов или изменения настроек в конфигураторе изменения не применяются, возможно, причина в кэше настроек. Иногда помогает временное переименование варианта в конфигураторе (например, с «Основной» на «Основной2»), чтобы сбросить кэш, а затем возврат к исходному имени.
Система компоновки данных предоставляет нам множество гибких инструментов для управления заголовками и внешним видом отчетов. Давайте рассмотрим их подробнее:
Настройка заголовков на закладке «Выбранные поля» (Конфигуратор и режим «1С:Предприятие»). Это наиболее очевидный способ. В конструкторе СКД, на закладке Выбранные поля, вы можете выбрать нужное поле и в колонке Заголовок вручную ввести желаемый текст. Аналогично, в режиме «1С:Предприятие», через меню «Еще» → «Изменить вариант» на закладке Поля можно вызвать контекстное меню для поля и выбрать «Установить заголовок».
Альтернативные заголовки для мультиязычных конфигураций. Если ваша конфигурация поддерживает несколько языков, вы можете задать альтернативный вариант заголовка для каждого из них, обеспечивая локализацию отчетов.
Настройка заголовков на вкладке «Наборы данных». В конструкторе СКД, на вкладке Наборы данных, для каждого поля набора данных можно отключить опцию Автозаголовок и вручную ввести необходимый текст заголовка. Здесь же можно задать оформление для всего поля, например, изменить шрифт или цвет фона, что повлияет на внешний вид заголовка и данных в колонке.
Группировка полей. Для более сложной организации полей в шапке отчета мы можем добавить группировочное поле и поместить в него требуемые поля. Это позволяет создавать многоуровневые заголовки. Вложенность таких группировок не ограничена. Свойство Расположение группировочного поля (например, «Вместе с детальными записями», «Только в заголовках») влияет на вид группировки в шапке.
Получение полей в запросе. Это один из наиболее надежных и правильных подходов. Вместо того чтобы полагаться на настройки СКД для переименования полей, лучше всего задавать псевдонимы непосредственно в тексте запроса. Например, вместо того чтобы выбирать Проживание.ФизЛицо.Фамилия, мы можем написать в запросе: Проживание.ФизЛицо.Фамилия КАК Фамилия. Таким образом, поле уже будет называться Фамилия на уровне набора данных, и СКД будет использовать это имя по умолчанию. Это минимизирует риски перекрытия настроек пользовательскими вариантами и делает отчет более предсказуемым.
После успешного решения проблемы с заголовками, часто возникает следующий вопрос: как работать с вычисляемыми полями, по которым нужно получить итоги? Представим, что у нас есть вычисляемое поле, которое корректно выводится в отчет как обычная колонка. Однако, когда мы пытаемся добавить его на закладку Ресурсы и установить выражение, например, Сумма(...), чтобы посчитать итог, эта колонка неожиданно пропадает из отчета.
Давайте проанализируем эту ситуацию. Когда вычисляемое поле добавляется в ресурсы, оно перестает быть обычной колонкой с детальными записями и становится ресурсом. Ресурсы в СКД ведут себя иначе: они предназначены для агрегации данных и часто выводятся не в каждой строке отчета, а на пересечениях группировок или только в итоговых строках.
Создание вычисляемого поля. Прежде всего, убедимся, что вычисляемое поле создано корректно на закладке Вычисляемые поля. Укажем для него Выражение и Тип значения.
Добавление в ресурсы. Чтобы по вычисляемому полю можно было посчитать итоги, его необходимо добавить в список ресурсов на закладке Ресурсы конструктора схемы компоновки данных.
Определение выражения для агрегации. Для каждого поля-ресурса необходимо указать Выражение – формулу для расчета итога. Например, если наше вычисляемое поле называется КоличествоДней, то выражение для ресурса может быть Сумма(КоличествоДней). Важно понимать, что выражение должно быть корректной агрегатной функцией.
Указание группировок для расчета. В свойстве Рассчитывать по... для ресурса мы можем указать, для каких группировок будет рассчитываться этот ресурс. Если это свойство не заполнено, выражение будет использоваться для всех группировок и общих итогов.
Особенности вывода ресурсов. Как правило, ресурсы выводятся в СКД на пересечениях строк и колонок в кросс-таблицах или в итоговых строках группировок. Если в отчете нет соответствующих группировок или настроек для вывода ресурсов, колонка с вычисляемым полем, преобразованным в ресурс, может исчезнуть. Чтобы ресурс появился в отчете, нужно убедиться, что он добавлен в Выбранные поля для соответствующих группировок или общих итогов, и что выбранный вид отчета (например, «Таблица», «Кросс-таблица») поддерживает вывод ресурсов в желаемом формате.
Причины отсутствия вычисляемого поля в отчете (когда оно ресурс):
Выбранные поля.Вычисляемые поля.Обработка пустых значений. Если вычисляемое поле может быть пустым или не иметь числового значения (например, если оно возвращает строку или Неопределено), это может влиять на расчет итогов. Агрегатные функции, такие как Сумма, работают с числовыми значениями и могут игнорировать нечисловые. Если необходимо посчитать, например, количество непустых значений, используйте функции Количество или КоличествоРазличных. Для полей, которые могут быть и цифрой, и пустым, можно использовать выражение вида ЕСТЬNULL(ВашеПоле, 0), чтобы гарантировать числовое значение для агрегации.
Понимание того, как СКД обрабатывает ресурсы, является ключевым для успешного получения итогов по вычисляемым полям. Мы должны не только добавить поле в ресурсы, но и убедиться, что оно корректно отображается в настройках вывода отчета.
Чтобы глубже понять, как пользовательские настройки влияют на отчет, давайте рассмотрим различные виды настроек в СКД:
«Настройки»: Это основной вариант отчета, который может быть задан по умолчанию в конфигураторе или сохранен в режиме «1С:Предприятие» как основной. Он определяет базовую структуру и поведение отчета.
«ПользовательскиеНастройки»: Это список настроек, которыми пользователь может управлять в режиме «1С:Предприятие». Они применяются дополнительно к основному варианту отчета. Именно эти настройки часто являются причиной «неповиновения» отчета, когда они перекрывают изменения, сделанные разработчиком в конфигураторе.
«ФиксированныеНастройки»: Это дополнительные настройки, которые задаются программно и которыми пользователь не может управлять. Они имеют самый высокий приоритет и не могут быть изменены пользователем.
Мы уже рассмотрели, как удалить ненужный вариант через интерфейс пользователя. Программно варианты можно удалить методом ВариантыОтчетов.УдалитьВариантОтчета(), что может быть полезно при централизованном управлении пользовательскими настройками.
Иногда, особенно при использовании «Библиотеки стандартных подсистем» (БСП), варианты отчета, настроенные в конфигураторе, могут быть не видны в пользовательском режиме. Это происходит, если не заполнено описание варианта отчета в соответствующем глобальном модуле или есть проблемы с правами доступа.
Для создания более наглядных и информативных отчетов СКД предоставляет мощный механизм условного оформления. Мы можем применять его не только к данным, но и к заголовкам полей, чтобы выделить важную информацию или улучшить читаемость.
Применение к областям отчета. Условное оформление может применяться к отчету в целом (влияя на заголовки отчета и общие параметры), к конкретной таблице или диаграмме, или к отдельной группировке. Например, мы можем изменить цвет текста или фона, шрифт, выравнивание заголовка.
Наследование оформления. Важно помнить, что условное оформление, заданное для родительской группировки, не распространяется автоматически на дочерние. Для каждой области оформления необходимо настраивать отдельно.
Оформление заголовка с параметрами. Если заголовок отчета содержит параметры (например, период), условное оформление можно применять непосредственно к этим параметрам, чтобы изменить их внешний вид, например, сделать их жирными или другого цвета.
Чтобы применить условное оформление к заголовкам, необходимо подняться на уровень Таблица или Отчет в настройках СКД на закладке Настройки (в разделе Условное оформление) и там определить правила. Это позволит нам динамически изменять вид заголовков в зависимости от определенных условий.
Мы выяснили, что наиболее надежный способ обеспечить корректное отображение заголовков и избежать конфликтов с пользовательскими настройками — это получать вложенные поля непосредственно в запросе СКД. Например, вместо того чтобы выбирать Проживание.ФизЛицо.КК, Проживание.ФизЛицо.Фамилия, Проживание.ФизЛицо.Имя и затем переименовывать их в настройках, гораздо эффективнее сразу в запросе задать им нужные псевдонимы:
ВЫБРАТЬ
Проживание.ФизЛицо.КК КАК КодКлиента,
Проживание.ФизЛицо.Фамилия КАК Фамилия,
Проживание.ФизЛицо.Имя КАК Имя
ИЗ
Документ.Проживание КАК Проживание
Этот подход имеет несколько преимуществ:
Надежность и предсказуемость. Заголовки полей будут определяться запросом и не будут зависеть от пользовательских настроек или кэша.
Автоматическое преобразование запроса СКД. СКД может оптимизировать первичный запрос, удаляя неиспользуемые поля. Если поле необходимо, но оно не используется в явном виде в настройках отчета, мы можем пометить его как Обязательное в наборе данных.
Локализация заголовков. Если вы используете псевдонимы, для их локализации в многоязычных конфигурациях необходимо задавать синонимы при разработке, а не полагаться на автоматически сгенерированный заголовок.
Параметры подстановки. Для заголовков и параметров допустимо использовать параметры подстановки через функцию СтрШаблон. Это позволяет динамически формировать заголовки, которые затем можно заменить в обработчике ПриКомпоновкеРезультата модуля отчета.
Также важно помнить, что в СКД недоступна секция ИТОГИ языка запросов 1С. Все агрегации и расчеты итогов должны выполняться средствами самой СКД через механизм ресурсов.
Мы подробно рассмотрели, как устранить проблему с неменяющимися заголовками в шапке отчета СКД, когда виной тому являются сохраненные пользовательские варианты. Мы также проанализировали особенности работы с вычисляемыми полями как ресурсами и дали рекомендации по настройке итогов. Надеемся, что эти знания помогут вам создавать более эффективные и удобные отчеты в 1С:Предприятии.