Отчеты и Аналитика · 12 мин
Как добавить пользовательское поле в отчет 1С 8.3
Пошаговая инструкция: как добавить пользовательское поле в отчет 1С 8.3 через СКД без изменения конфигурации, с выражениями, настройкой и проверкой результата.
Многие типовые отчеты в 1С 8.3 построены на системе компоновки данных (СКД), а значит, позволяют добавлять собственные вычисляемые колонки без доработки конфигурации и без привлечения программиста. Такие колонки называются пользовательскими полями: они рассчитываются по формуле на основе уже имеющихся в отчете данных — сумм, количеств, дат, реквизитов.
Типичные задачи, которые решает пользовательское поле: вычислить процент наценки от суммы продажи, вывести признак «Просрочено/В срок» по дате оплаты, склеить фамилию и инициалы сотрудника, посчитать разницу между планом и фактом. Всё это делается прямо в режиме «Предприятие», в окне настроек отчета.
Механизм доступен не во всех отчетах. Если отчет написан программно (через макет или запрос с выводом в табличный документ вручную), кнопки расширенных настроек в нем не будет, и добавить поле штатно не получится. Ниже разберем, как определить тип отчета, как создать поле на выражении и на условии, какие ограничения есть у языка выражений СКД и как проверить результат.
Определяем, поддерживает ли отчет пользовательские поля
Прежде чем искать нужную кнопку, убедитесь, что отчет построен на СКД. Откройте отчет и нажмите «Настройки» или кнопку с изображением шестеренки. Если в появившемся окне есть вкладки «Отборы», «Сортировка», «Группировка», «Пользовательские поля» — отчет на компоновке данных, и всё получится.
Если вместо этого открывается простая форма с парой полей периода и кнопкой «Сформировать», отчет запрограммирован вручную. В таком случае добавить колонку без доработки конфигурации нельзя — потребуется либо внешняя обработка, либо изменение модуля отчета разработчиком.
Еще один признак: в типовых конфигурациях (Бухгалтерия 3.0, Управление торговлей 11, ERP) практически все аналитические отчеты — на СКД, а вот некоторые печатные формы и регистры сведений выводятся программно. Карточка счета, оборотно-сальдовая ведомость, анализ продаж, ведомость по товарам — поддерживают пользовательские поля.
Можно добавлять поля штатно, без доработок
Расширенные настройки доступны, работаем через конструктор настроек
Пользовательские поля недоступны, нужна доработка
Открываем расширенные настройки отчета
В большинстве типовых отчетов окно настроек по умолчанию показывается в упрощенном виде — там пользовательских полей нет. Нужно переключиться в расширенный режим. Для этого откройте настройки и найдите переключатель «Расширенные» / «Быстрые» внизу окна либо выберите команду «Еще» → «Изменить вариант отчета».
В расширенном режиме слева отображается структура отчета (группировки, таблицы, диаграммы), а справа — закладки настроек: «Отборы», «Порядок», «Условное оформление», «Пользовательские поля» и другие. Именно на закладке «Пользовательские поля» и выполняется вся работа.
Обратите внимание: изменения применяются к текущему варианту отчета. Если отчет имеет несколько вариантов (например, «Продажи по менеджерам» и «Продажи по номенклатуре»), поле нужно добавлять в каждый вариант отдельно либо сохранить настроенный вариант под новым именем.
Создаем пользовательское поле выбора
СКД предлагает два типа пользовательских полей. Первый — поле выбора: оно принимает одно из нескольких значений в зависимости от условий. Классический пример — колонка «Статус долга», где по дате оплаты выводится «Просрочено», «Срок наступает» или «Оплачено».
Чтобы создать такое поле, нажмите «Добавить» → «Новое поле выбора». В открывшейся форме задайте заголовок поля, затем добавьте варианты: для каждого варианта укажите отбор (условие) и значение, которое должно выводиться. Например: условие «Дней просрочки > 0», значение «Просрочено»; условие «Дней просрочки = 0», значение «Сегодня»; иначе — «В срок».
Порядок вариантов имеет значение: СКД проверяет условия сверху вниз и берет первое подходящее. Поэтому более частные условия ставьте выше общих. Если ни одно условие не сработало и вариант «иначе» не задан, поле останется пустым.
- 1Откройте отчет и перейдите в расширенные настройки
- 2На закладке «Пользовательские поля» нажмите «Добавить» → «Новое поле выбора»
- 3Укажите заголовок поля и добавьте варианты: условие + значение
- 4Нажмите «ОК» и перетащите новое поле в список выбранных полей на закладке «Поля»
- 5Нажмите «Закрыть и сформировать» и проверьте результат в таблице
Создаем поле-выражение для расчетов
Второй тип — поле-выражение (ресурс-выражение): значение вычисляется по формуле на языке выражений СКД. Именно оно нужно для расчетов: процентов, разниц, произведений, конкатенации строк.
Нажмите «Добавить» → «Новое поле-выражение». В форме есть два поля ввода: «Детальные записи» и «Итоговые записи». В первом укажите формулу для обычных строк отчета, например: СуммаПродажи - Себестоимость. Во втором — формулу для итогов. Это принципиальный момент: если оставить итоговое выражение пустым, в итогах по группировкам колонка будет пустой.
Для итогов обычно используют агрегатные функции. Например, для маржи корректно написать Сумма(СуммаПродажи) - Сумма(Себестоимость), а для процента наценки в итогах — Выбор Когда Сумма(Себестоимость) = 0 Тогда 0 Иначе (Сумма(СуммаПродажи) - Сумма(Себестоимость)) / Сумма(Себестоимость) * 100 Конец. Проверка деления на ноль обязательна, иначе отчет завершится с ошибкой.
// Процент наценки (итоговые записи)
Выбор
Когда Сумма(Себестоимость) = 0
Тогда 0
Иначе (Сумма(СуммаПродажи) - Сумма(Себестоимость)) / Сумма(Себестоимость) * 100
КонецЯзык выражений СКД ограничен: в нем нет обращений к произвольным функциям конфигурации, нельзя выполнить запрос или обратиться к данным, которых нет в наборе отчета. Доступны арифметические операции, конструкция «Выбор…Когда…Тогда…Иначе…Конец», агрегаты (Сумма, Минимум, Максимум, Количество, Среднее), функции работы со строками и датами в ограниченном составе.
Добавляем поле в структуру и настраиваем оформление
Создание поля на закладке «Пользовательские поля» само по себе не выводит колонку в отчет. Поле нужно добавить в выбранные поля: перейдите на закладку «Поля» (или «Выбранные поля») и перетащите новое поле из списка доступных в список выбранных, расположив его в нужном порядке относительно других колонок.
Если отчет содержит несколько группировок, убедитесь, что поле добавлено на нужный уровень: либо в общие выбранные поля отчета (тогда оно появится везде), либо в поля конкретной группировки. Частая ситуация — поле видно в детальных строках, но пропадает в свернутых группах: это значит, что оно добавлено только на нижний уровень структуры.
Для числовых полей полезно задать формат: на закладке «Условное оформление» или через «Оформление» поля укажите форматную строку, например «ЧДЦ=2» для двух знаков после запятой. Для поля выбора со статусами удобно настроить цветовое выделение: красный для «Просрочено», зеленый для «Оплачено» — это делается обычным условным оформлением по значению вашего нового поля.
Если формула сложная, сначала проверьте её на упрощенном варианте: выведите в поле просто одно из исходных полей, убедитесь, что колонка появилась и заполнена, а затем усложняйте выражение шаг за шагом. Так проще локализовать синтаксическую ошибку.
Сохраняем настройки и проверяем результат
После формирования отчета с новой колонкой сохраните вариант, чтобы не настраивать заново: «Еще» → «Сохранить вариант отчета» (или «Сохранить настройки» в старых интерфейсах). Задайте понятное имя, например «Продажи с наценкой». Вариант можно сделать доступным другим пользователям, если у вас есть соответствующие права, — при сохранении отметьте, для кого он предназначен.
Проверку результата выполняйте по нескольким признакам. Во-первых, сверьте пару значений вручную: возьмите строку, посчитайте формулу на калькуляторе и сравните с выведенным значением. Во-вторых, проверьте итоги по группировкам и общий итог — именно там чаще всего ошибки из-за пустого итогового выражения. В-третьих, сформируйте отчет за другой период, чтобы убедиться, что поле не зависит от конкретных данных.
Как проверить результат
Совпадают с ручным расчетом по формуле
Пустые ячейки или расхождения — ошибка в выражении детальных записей
Итоги посчитаны и согласованы с детальными строками
Итоги пустые — не заполнено выражение для итоговых записей
Поле заполняется корректно на любых данных
Ошибка деления на ноль или пустые значения — нет проверок в формуле
Типичные ошибки и ограничения механизма
Самая частая ошибка — оставить пустым выражение для итоговых записей. Колонка в строках заполнена, а в итогах пусто, и пользователь считает, что механизм «не работает». Второе место занимает деление на ноль: если в знаменателе поле, которое может быть нулевым или пустым, оборачивайте расчет в конструкцию «Выбор…Когда».
Важное ограничение: пользовательское поле оперирует только теми полями, которые есть в наборе данных отчета. Если нужного реквизита нет в списке доступных полей (например, вы хотите вывести ставку НДС номенклатуры, а её в запросе отчета нет), добавить её через пользовательское поле нельзя — потребуется доработка схемы компоновки программистом.
Ещё одно ограничение — производительность. Сложные выражения с вложенными условиями на больших объемах данных выполняются при формировании каждой строки. Если отчет и так формируется медленно, тяжелая формула усугубит ситуацию. В таких случаях расчет правильнее переносить на уровень запроса схемы компоновки.
Когда пользовательского поля недостаточно
Пользовательские поля решают задачи вычислений на готовых данных, но не заменяют доработку отчета. Если нужно добавить в отчет данные из других регистров, построить сложную иерархию, изменить сам запрос набора данных или вывести поле, которого нет в схеме, — потребуется работа в конфигураторе со схемой компоновки данных или создание внешнего отчета.
Промежуточный вариант — доработка схемы через «Изменить вариант» недоступна, но в некоторых конфигурациях есть механизм расширений, позволяющий добавить вычисляемое поле в схему без изменения типового отчета. Это уже задача для разработчика, однако она сохраняет отчет в поддержке и не ломает обновления.
Как выбрать действие
Часто задаваемые вопросы
Почему моё пользовательское поле не отображается в отчете?
Чаще всего поле создано на закладке «Пользовательские поля», но не добавлено в выбранные поля. Откройте закладку «Поля», найдите ваше поле в списке доступных и перетащите его в список выбранных. Также проверьте, что поле добавлено на тот уровень группировки, который вы просматриваете.
Можно ли использовать пользовательское поле в отборах и сортировке?
Да. После создания поле становится доступным на закладках «Отборы» и «Сортировка» наряду с обычными полями. Например, можно отобрать только строки со статусом «Просрочено» или отсортировать по рассчитанному проценту наценки. Учтите, что отбор по вычисляемому полю выполняется после расчета, что может замедлять формирование.
Почему в итогах колонка пустая, хотя в строках значения есть?
В форме поля-выражения не заполнено поле «Итоговые записи». СКД не суммирует детальные значения автоматически — для итогов нужно отдельное выражение, обычно с агрегатными функциями: Сумма(), Среднее() и т.п. Заполните его, и итоги появятся.
Как сделать пользовательское поле доступным другим сотрудникам?
Сохраните настроенный вариант отчета через «Еще» → «Сохранить вариант отчета» и при сохранении укажите, что вариант доступен другим пользователям (для этого нужны соответствующие права). Коллеги увидят вариант в списке вариантов отчета и смогут использовать его без повторной настройки.
Можно ли в формуле обратиться к функции из общего модуля конфигурации?
Нет. Язык выражений СКД изолирован: доступны только встроенные операторы, агрегатные функции и ограниченный набор функций работы со строками, числами и датами. Для произвольной логики нужно добавлять вычисляемое поле в схему компоновки в конфигураторе или использовать внешний отчет.
Что важно запомнить
Пользовательские поля добавляются в любой отчет на СКД через расширенные настройки, без изменения конфигурации. Поле выбора — для условных значений, поле-выражение — для расчетов; для итогов заполняйте отдельное выражение с агрегатами и защитой от деления на ноль. Созданное поле обязательно добавьте в выбранные поля и сохраните вариант отчета.