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

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

Как в отчет 1С добавить вычисляемое поле

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

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

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

Ниже разобраны все три подхода с точными действиями, условиями выбора, проверкой результата и типичными ошибками. Инструкции ориентированы на управляемые формы (1С:Предприятие 8.3), но логика СКД одинакова для большинства типовых решений: ERP, УТ, Бухгалтерия, ЗУП.

Какой способ добавления вычисляемого поля выбрать

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

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

Сравнение способов

Пользовательское поле

Быстро, без конфигуратора, только в своем варианте отчета. Ограничение: слабо работает с итогами и не доступно другим пользователям без копирования варианта.

Вычисляемое поле в СКД

Полноценное поле: итоги, отборы, сортировка, у всех пользователей. Ограничение: нужен конфигуратор и обновление конфигурации.

Ресурс с выражением

Нужен, когда итог считается по формуле, а не суммой строк (например, процент от итога). Ограничение: требует понимания агрегатных функций СКД.

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

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

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

Поле «Выражение итоговых записей» определяет, что показывать в строках итогов. Если оставить его пустым, в итогах колонка будет пустой. Для аддитивных величин укажите агрегат, например Сумма(Цена Количество). Для процентов и коэффициентов формула итога обычно повторяет логику детальной строки, но от итоговых значений: Сумма(Прибыль) / Сумма(Продажи) 100.

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

Порядок действий в режиме предприятия
  1. 1
    Откройте отчет и перейдите в настройки варианта
  2. 2
    На вкладке «Пользовательские поля» выберите «Новое поле-выражение»
  3. 3
    Введите заголовок и формулу детальных записей, выбирая поля из списка
  4. 4
    Заполните выражение итоговых записей, если нужны итоги
  5. 5
    Добавьте поле в выбранные поля структуры и сформируйте отчет
  6. 6
    Проверьте значения на 2–3 строках вручную

Вычисляемое поле в схеме компоновки данных

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

Заполните три ключевых свойства. «Путь к данным» — техническое имя поля без пробелов, по которому к нему обращаются в настройках, например СуммаСНДС. «Выражение» — формула на языке выражений СКД, например Сумма * 1.2 или РазностьДат(ДатаОтгрузки, ТекущаяДата(), \"День\"). «Заголовок» — отображаемое имя колонки. Также задайте тип значения, чтобы корректно работали формат, итоги и отборы.

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

Расчет итогов через ресурсы отчета

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

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

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

Типовые формулы и примеры выражений

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

Работа с датами: функция РазностьДат для возраста документа или просрочки, ДобавитьКДате для сдвига периодов. Условная логика: конструкция Выбор позволяет выводить текстовые категории, например «Просрочен» / «В срок» по условию на количество дней. Строковые операции: конкатенация через + для склейки представлений.

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

Проверка результата и типичные ошибки

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

Если поле не видно в настройках, убедитесь, что оно добавлено в выбранные поля именно той группировки, которая выводится, и что в свойствах поля не снят флаг доступности. Если значения пустые — чаще всего имя поля в выражении не совпадает с путем к данным, или поле-источник не выбирается запросом на текущем уровне. Если итоги не сходятся — проверяйте выражение ресурса и колонку «Рассчитывать по».

Типичные ошибки
01
Имя поля набрано вручную с опечаткой — выражение не вычисляется, колонка пустая. Всегда выбирайте поля из списка доступных.
02
Деление без проверки нуля — ошибка выполнения отчета или пустые строки. Оборачивайте деление в Выбор с проверкой знаменателя.
03
Итог процента посчитан как среднее строк — итоговое значение искажено. Итог должен считаться от сумм: Сумма(Числитель) / Сумма(Знаменатель).
04
Поле добавлено в вычисляемые, но не добавлено в ресурсы — в группировках и общем итоге колонка пустая.
05
NULL в одном из операндов обнуляет всю формулу — используйте ЕстьNULL для полей, которые могут быть не заполнены.
Контрольные точки

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

Детальные строки
Норма

Значения совпадают с ручным расчетом по формуле на 2–3 строках

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

Пусто, нули или значения не соответствуют формуле

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

Итог равен сумме (или формуле от итогов) строк группы

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

Итог пустой или равен среднему/последней строке

Строки с пустыми исходными данными
Норма

Поле показывает 0 или осмысленное значение по ЕстьNULL

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

Ошибка выполнения или пропуск строки

Отбор и сортировка по полю
Норма

Отбор и сортировка работают, если поле в СКД

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

Поле недоступно для отбора — оно добавлено только как пользовательское

Ограничения и когда нужен разработчик

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

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

Итог

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

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

Частые вопросы

Почему мое вычисляемое поле не видно в списке полей отчета?

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

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

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

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

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

Отчет падает с ошибкой после добавления формулы с делением. Что делать?

Причина — деление на ноль или NULL в знаменателе. Оберните выражение в конструкцию Выбор: «Выбор Когда ЕстьNULL(Знаменатель, 0) = 0 Тогда 0 Иначе Числитель / Знаменатель Конец». Это устраняет обе причины сразу.

Сохранится ли вычисляемое поле при обновлении конфигурации?

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

Можно ли в формуле использовать данные, которых нет в отчете?

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