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