К статье
Практический материал

Отчеты и Аналитика · 12 мин

Как добавить пользовательское поле в отчет 1С 8.3

Пошаговая инструкция: как добавить пользовательское поле в отчет 1С 8.3 через СКД без изменения конфигурации, с выражениями, настройкой и проверкой результата.

Многие типовые отчеты в 1С 8.3 построены на системе компоновки данных (СКД), а значит, позволяют добавлять собственные вычисляемые колонки без доработки конфигурации и без привлечения программиста. Такие колонки называются пользовательскими полями: они рассчитываются по формуле на основе уже имеющихся в отчете данных — сумм, количеств, дат, реквизитов.

Типичные задачи, которые решает пользовательское поле: вычислить процент наценки от суммы продажи, вывести признак «Просрочено/В срок» по дате оплаты, склеить фамилию и инициалы сотрудника, посчитать разницу между планом и фактом. Всё это делается прямо в режиме «Предприятие», в окне настроек отчета.

Механизм доступен не во всех отчетах. Если отчет написан программно (через макет или запрос с выводом в табличный документ вручную), кнопки расширенных настроек в нем не будет, и добавить поле штатно не получится. Ниже разберем, как определить тип отчета, как создать поле на выражении и на условии, какие ограничения есть у языка выражений СКД и как проверить результат.

Определяем, поддерживает ли отчет пользовательские поля

Прежде чем искать нужную кнопку, убедитесь, что отчет построен на СКД. Откройте отчет и нажмите «Настройки» или кнопку с изображением шестеренки. Если в появившемся окне есть вкладки «Отборы», «Сортировка», «Группировка», «Пользовательские поля» — отчет на компоновке данных, и всё получится.

Если вместо этого открывается простая форма с парой полей периода и кнопкой «Сформировать», отчет запрограммирован вручную. В таком случае добавить колонку без доработки конфигурации нельзя — потребуется либо внешняя обработка, либо изменение модуля отчета разработчиком.

Еще один признак: в типовых конфигурациях (Бухгалтерия 3.0, Управление торговлей 11, ERP) практически все аналитические отчеты — на СКД, а вот некоторые печатные формы и регистры сведений выводятся программно. Карточка счета, оборотно-сальдовая ведомость, анализ продаж, ведомость по товарам — поддерживают пользовательские поля.

В настройках есть вкладка «Пользовательские поля»Отчет на СКД

Можно добавлять поля штатно, без доработок

Кнопка «Еще» → «Изменить вариант отчета» активнаОтчет на СКД

Расширенные настройки доступны, работаем через конструктор настроек

Только период и кнопка «Сформировать»Программный отчет

Пользовательские поля недоступны, нужна доработка

Открываем расширенные настройки отчета

В большинстве типовых отчетов окно настроек по умолчанию показывается в упрощенном виде — там пользовательских полей нет. Нужно переключиться в расширенный режим. Для этого откройте настройки и найдите переключатель «Расширенные» / «Быстрые» внизу окна либо выберите команду «Еще» → «Изменить вариант отчета».

В расширенном режиме слева отображается структура отчета (группировки, таблицы, диаграммы), а справа — закладки настроек: «Отборы», «Порядок», «Условное оформление», «Пользовательские поля» и другие. Именно на закладке «Пользовательские поля» и выполняется вся работа.

Обратите внимание: изменения применяются к текущему варианту отчета. Если отчет имеет несколько вариантов (например, «Продажи по менеджерам» и «Продажи по номенклатуре»), поле нужно добавлять в каждый вариант отдельно либо сохранить настроенный вариант под новым именем.

Создаем пользовательское поле выбора

СКД предлагает два типа пользовательских полей. Первый — поле выбора: оно принимает одно из нескольких значений в зависимости от условий. Классический пример — колонка «Статус долга», где по дате оплаты выводится «Просрочено», «Срок наступает» или «Оплачено».

Чтобы создать такое поле, нажмите «Добавить» → «Новое поле выбора». В открывшейся форме задайте заголовок поля, затем добавьте варианты: для каждого варианта укажите отбор (условие) и значение, которое должно выводиться. Например: условие «Дней просрочки > 0», значение «Просрочено»; условие «Дней просрочки = 0», значение «Сегодня»; иначе — «В срок».

Порядок вариантов имеет значение: СКД проверяет условия сверху вниз и берет первое подходящее. Поэтому более частные условия ставьте выше общих. Если ни одно условие не сработало и вариант «иначе» не задан, поле останется пустым.

Порядок действий для поля выбора
  1. 1
    Откройте отчет и перейдите в расширенные настройки
  2. 2
    На закладке «Пользовательские поля» нажмите «Добавить» → «Новое поле выбора»
  3. 3
    Укажите заголовок поля и добавьте варианты: условие + значение
  4. 4
    Нажмите «ОК» и перетащите новое поле в список выбранных полей на закладке «Поля»
  5. 5
    Нажмите «Закрыть и сформировать» и проверьте результат в таблице

Создаем поле-выражение для расчетов

Второй тип — поле-выражение (ресурс-выражение): значение вычисляется по формуле на языке выражений СКД. Именно оно нужно для расчетов: процентов, разниц, произведений, конкатенации строк.

Нажмите «Добавить» → «Новое поле-выражение». В форме есть два поля ввода: «Детальные записи» и «Итоговые записи». В первом укажите формулу для обычных строк отчета, например: СуммаПродажи - Себестоимость. Во втором — формулу для итогов. Это принципиальный момент: если оставить итоговое выражение пустым, в итогах по группировкам колонка будет пустой.

Для итогов обычно используют агрегатные функции. Например, для маржи корректно написать Сумма(СуммаПродажи) - Сумма(Себестоимость), а для процента наценки в итогах — Выбор Когда Сумма(Себестоимость) = 0 Тогда 0 Иначе (Сумма(СуммаПродажи) - Сумма(Себестоимость)) / Сумма(Себестоимость) * 100 Конец. Проверка деления на ноль обязательна, иначе отчет завершится с ошибкой.

1c
// Процент наценки (итоговые записи)
Выбор
  Когда Сумма(Себестоимость) = 0
    Тогда 0
  Иначе (Сумма(СуммаПродажи) - Сумма(Себестоимость)) / Сумма(Себестоимость) * 100
Конец

Язык выражений СКД ограничен: в нем нет обращений к произвольным функциям конфигурации, нельзя выполнить запрос или обратиться к данным, которых нет в наборе отчета. Доступны арифметические операции, конструкция «Выбор…Когда…Тогда…Иначе…Конец», агрегаты (Сумма, Минимум, Максимум, Количество, Среднее), функции работы со строками и датами в ограниченном составе.

Добавляем поле в структуру и настраиваем оформление

Создание поля на закладке «Пользовательские поля» само по себе не выводит колонку в отчет. Поле нужно добавить в выбранные поля: перейдите на закладку «Поля» (или «Выбранные поля») и перетащите новое поле из списка доступных в список выбранных, расположив его в нужном порядке относительно других колонок.

Если отчет содержит несколько группировок, убедитесь, что поле добавлено на нужный уровень: либо в общие выбранные поля отчета (тогда оно появится везде), либо в поля конкретной группировки. Частая ситуация — поле видно в детальных строках, но пропадает в свернутых группах: это значит, что оно добавлено только на нижний уровень структуры.

Для числовых полей полезно задать формат: на закладке «Условное оформление» или через «Оформление» поля укажите форматную строку, например «ЧДЦ=2» для двух знаков после запятой. Для поля выбора со статусами удобно настроить цветовое выделение: красный для «Просрочено», зеленый для «Оплачено» — это делается обычным условным оформлением по значению вашего нового поля.

Если формула сложная, сначала проверьте её на упрощенном варианте: выведите в поле просто одно из исходных полей, убедитесь, что колонка появилась и заполнена, а затем усложняйте выражение шаг за шагом. Так проще локализовать синтаксическую ошибку.
ПЗ
Практическое замечание

Сохраняем настройки и проверяем результат

После формирования отчета с новой колонкой сохраните вариант, чтобы не настраивать заново: «Еще» → «Сохранить вариант отчета» (или «Сохранить настройки» в старых интерфейсах). Задайте понятное имя, например «Продажи с наценкой». Вариант можно сделать доступным другим пользователям, если у вас есть соответствующие права, — при сохранении отметьте, для кого он предназначен.

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

Контрольные точки

Как проверить результат

Значения в детальных строках
Норма

Совпадают с ручным расчетом по формуле

Тревожный признак

Пустые ячейки или расхождения — ошибка в выражении детальных записей

Итоги по группировкам
Норма

Итоги посчитаны и согласованы с детальными строками

Тревожный признак

Итоги пустые — не заполнено выражение для итоговых записей

Формирование за другой период
Норма

Поле заполняется корректно на любых данных

Тревожный признак

Ошибка деления на ноль или пустые значения — нет проверок в формуле

Типичные ошибки и ограничения механизма

Самая частая ошибка — оставить пустым выражение для итоговых записей. Колонка в строках заполнена, а в итогах пусто, и пользователь считает, что механизм «не работает». Второе место занимает деление на ноль: если в знаменателе поле, которое может быть нулевым или пустым, оборачивайте расчет в конструкцию «Выбор…Когда».

Важное ограничение: пользовательское поле оперирует только теми полями, которые есть в наборе данных отчета. Если нужного реквизита нет в списке доступных полей (например, вы хотите вывести ставку НДС номенклатуры, а её в запросе отчета нет), добавить её через пользовательское поле нельзя — потребуется доработка схемы компоновки программистом.

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

Типичные ошибки
01
Пустое итоговое выражение — поле заполнено в строках, но пусто в итогах по группировкам
02
Деление без проверки нуля — отчет падает с ошибкой при формировании
03
Поле создано, но не добавлено в выбранные поля — колонка не появляется в отчете
04
Изменения не сохранены в варианте — после закрытия отчета настройка теряется
05
Попытка использовать в формуле поле, которого нет в наборе данных отчета

Когда пользовательского поля недостаточно

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

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

Маршрут решения

Как выбрать действие

Нужна колонка с расчетом на основе полей, уже видимых в доступных полях отчетаИспользуйте пользовательское поле-выражение — конфигурацию менять не нужно
Нужно вывести разные значения по условиям (статусы, категории)Используйте пользовательское поле выбора с набором условий
Нужного реквизита нет среди доступных полей отчетаПользовательское поле не поможет — нужна доработка схемы компоновки или внешний отчет
Отчет не содержит расширенных настроекОтчет программный — обратитесь к разработчику для добавления колонки в код

Часто задаваемые вопросы

Почему моё пользовательское поле не отображается в отчете?

Чаще всего поле создано на закладке «Пользовательские поля», но не добавлено в выбранные поля. Откройте закладку «Поля», найдите ваше поле в списке доступных и перетащите его в список выбранных. Также проверьте, что поле добавлено на тот уровень группировки, который вы просматриваете.

Можно ли использовать пользовательское поле в отборах и сортировке?

Да. После создания поле становится доступным на закладках «Отборы» и «Сортировка» наряду с обычными полями. Например, можно отобрать только строки со статусом «Просрочено» или отсортировать по рассчитанному проценту наценки. Учтите, что отбор по вычисляемому полю выполняется после расчета, что может замедлять формирование.

Почему в итогах колонка пустая, хотя в строках значения есть?

В форме поля-выражения не заполнено поле «Итоговые записи». СКД не суммирует детальные значения автоматически — для итогов нужно отдельное выражение, обычно с агрегатными функциями: Сумма(), Среднее() и т.п. Заполните его, и итоги появятся.

Как сделать пользовательское поле доступным другим сотрудникам?

Сохраните настроенный вариант отчета через «Еще» → «Сохранить вариант отчета» и при сохранении укажите, что вариант доступен другим пользователям (для этого нужны соответствующие права). Коллеги увидят вариант в списке вариантов отчета и смогут использовать его без повторной настройки.

Можно ли в формуле обратиться к функции из общего модуля конфигурации?

Нет. Язык выражений СКД изолирован: доступны только встроенные операторы, агрегатные функции и ограниченный набор функций работы со строками, числами и датами. Для произвольной логики нужно добавлять вычисляемое поле в схему компоновки в конфигураторе или использовать внешний отчет.

Итог

Что важно запомнить

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