Своя колонка в отчёте 1С: от настройки варианта до кода в СКД
Содержание
Чтобы добавить пользовательское поле в отчет 1С без программиста, откройте отчёт, выберите Ещё → Прочее → Изменить вариант отчета, перейдите на вкладку «Пользовательские поля» и нажмите «Добавить». Дальше выбираете тип поля, пишете формулу и выводите новую колонку в отчёт. Так работают все отчёты на системе компоновки данных (СКД) — а это почти все отчёты БП 3.0, ЗУП 3.1 и УТ 11.
Способов три, и выбор зависит от того, кому нужна колонка. Пользовательское поле в варианте — для себя или отдела, за 5 минут, без Конфигуратора. Вычисляемое поле в схеме СКД — когда колонка нужна всем и навсегда. Добавление кодом — когда формула зависит от условий, которые не задать мышкой.
| Способ | Где делается | Кому видно | Нужны права на Конфигуратор |
|---|---|---|---|
| Пользовательское поле в варианте | Режим 1С:Предприятие | Тем, у кого этот вариант | Нет |
| Вычисляемое поле в схеме СКД | Конфигуратор, расширение | Всем пользователям отчёта | Да |
| Поле, добавленное кодом | Модуль отчёта, расширение | Всем, по условиям из кода | Да |
Подготовка: какие поля уже есть в отчёте
Пользовательское поле строится только из того, что отчёт уже получает из базы. Новую информацию «из воздуха» оно не достаёт. Если в отчёте нет себестоимости, формулу наценки в варианте не собрать.
Проверьте это заранее:
- 📂 Откройте отчёт и переключите вид настроек на расширенный. Переключатель находится в форме настроек отчёта (кнопка «Настройки»).
- 🔍 На вкладке с полями нажмите добавление поля и разверните дерево доступных полей. Это и есть «сырьё» для формулы.
- 🧩 Разверните реквизиты через «плюсик»: у контрагента видны ИНН, вид договора, у номенклатуры — группа, единица, ставка НДС.
Часто пользовательское поле вообще не нужно. Если вы хотите просто увидеть ИНН контрагента или артикул товара — найдите его в дереве полей через реквизиты и добавьте как обычную колонку.
Пользовательское поле нужно, когда значения ещё нет и его надо вычислить: процент, разница, признак, текстовая метка.
Пользовательское поле в отчете 1С в режиме предприятия
Это главный способ для бухгалтера и аналитика. Изменения сохраняются в варианте отчёта и не трогают конфигурацию, поэтому обновления их не сотрут.
Шаг 1. Откройте редактор варианта
- Сформируйте отчёт хотя бы один раз с нужным периодом.
- Выберите
Ещё → Прочее → Изменить вариант отчета. - Откроется форма со вкладками схемы компоновки. Нужна вкладка «Пользовательские поля».
Если команды нет в меню, у вашей роли урезаны права на изменение вариантов. Это решает администратор базы в профилях групп доступа.
Шаг 2. Выберите тип поля
Кнопка «Добавить» предлагает два варианта.
| Тип | Что делает | Пример |
|---|---|---|
| Поле-выражение | Считает значение по формуле из других полей | Наценка = (Выручка − Себестоимость) / Себестоимость × 100 |
| Поле-выбор | Присваивает значение по набору условий с отборами | «Крупный» — если сумма больше 500 000, иначе «Обычный» |
Поле-выбор удобно тем, кто не хочет писать формулы. Каждый вариант значения задаётся отбором, как в обычной настройке отчёта.
Шаг 3. Напишите выражение
У поля-выражения два текста:
- 📄 Выражение детальных записей — как считать значение в каждой строке.
- 📊 Выражение итоговых записей — как считать в группировках и в общем итоге.
Поля в формулу вставляйте из дерева справа двойным щелчком. Редактор сам подставит имя в квадратных скобках, например [Выручка]. Ручной ввод названия — частая причина ошибок.
Пример наценки для детальных записей:
Выбор
Когда [Себестоимость] = 0 Тогда 0
Иначе ([Выручка] - [Себестоимость]) / [Себестоимость] * 100
Конец
И для итоговых записей:
Выбор
Когда Сумма([Себестоимость]) = 0 Тогда 0
Иначе (Сумма([Выручка]) - Сумма([Себестоимость])) / Сумма([Себестоимость]) * 100
Конец
Заполните поле «Заголовок» — так будет называться колонка, например «Наценка, %».
Шаг 4. Выведите поле и сохраните вариант
Созданное поле появится в дереве доступных полей в папке «Пользовательские поля». Добавьте его на вкладке «Выбранные поля» (или в нужную группировку), закройте редактор и сформируйте отчёт.
Чтобы настройка не пропала, сохраните вариант под своим именем. В БП 3.0 и ЗУП 3.1 команда сохранения варианта есть в меню Ещё. Свой вариант можно сделать доступным коллегам при сохранении.
Не перезаписывайте поставляемый вариант. Сохраняйте изменения как новый вариант, иначе при сбросе настроек или обновлении можно потерять и свою колонку, и исходный вид отчёта.
Вычисляемое поле в Конфигураторе: колонка для всех
Если колонка нужна всем пользователям отчёта, её место — в схеме компоновки данных. Тогда она доступна в любом варианте как обычное поле.
Свой или внешний отчёт
- Откройте отчёт в Конфигураторе. Внешний отчёт — через
Файл → Открыть, файл.erf. - Откройте основную схему компоновки данных отчёта.
- Перейдите на вкладку «Вычисляемые поля» и добавьте строку.
- Заполните «Путь к данным» латиницей или кириллицей без пробелов, например
Наценка. - В колонке «Выражение» напишите формулу на языке выражений СКД.
- Задайте «Заголовок».
- Если поле нужно суммировать или считать в итогах, перейдите на вкладку «Ресурсы» и задайте для него выражение итогов.
- На вкладке «Настройки» добавьте поле в выбранные поля основного варианта.
Второй путь — добавить поле прямо в запрос набора данных. Это нужно, когда значение надо взять из базы, а не вычислить из имеющихся колонок. Например, дату последней оплаты из регистра. Тогда откройте конструктор запроса набора данных, добавьте таблицу и поле, а СКД сама предложит его в списке полей.
Типовой отчёт
Не правьте типовую конфигурацию , снятую с поддержки, ради одной колонки. Каждое обновление превратится в ручное сравнение и объединение.
Для типовых отчётов есть два безопасных пути:
- 🧩 Расширение конфигурации . Заимствуйте отчёт и добавьте поле кодом в модуле объекта (пример ниже). Расширения доступны с платформы 8.3.6.
- 📄 Копия во внешний отчёт. Создайте новый внешний отчёт, перенесите в него схему компоновки и модуль типового отчёта и дорабатывайте копию. Минус: копия не получает исправлений из обновлений.
Многие типовые отчёты используют свою логику формирования через подсистему вариантов отчётов. После доработки проверьте не только вывод колонки, но и расшифровку, и сохранение вариантов.
Добавляем поле в отчёт программно
Кодом поле добавляют, когда колонка должна появляться по условию: для одной организации, при определённом параметре или для конкретной роли.
Базовый вариант — обработчик ПриКомпоновкеРезультата в модуле объекта отчёта. Он отключает стандартное формирование, добавляет пользовательское поле-выражение в копию настроек и выводит результат сам.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Пользовательское поле-выражение
Поле = Настройки.ПользовательскиеПоля.Элементы.Добавить(
Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных"));
Поле.Заголовок = "Наценка, %";
Поле.УстановитьВыражениеДетальныхЗаписей(
"Выбор Когда Себестоимость = 0 Тогда 0
|Иначе (Выручка - Себестоимость) / Себестоимость * 100 Конец");
Поле.УстановитьВыражениеИтоговыхЗаписей(
"Выбор Когда Сумма(Себестоимость) = 0 Тогда 0
|Иначе (Сумма(Выручка) - Сумма(Себестоимость)) / Сумма(Себестоимость) * 100 Конец");
// Выводим поле в отчёт
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(Поле.ПутьКДанным);
// Формируем результат
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет, , ДанныеРасшифровки, Истина);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(Процессор);
КонецПроцедуры
Что важно в этом коде:
- 🔹
ВыручкаиСебестоимость— это пути к данным полей из схемы, а не их заголовки. Посмотрите их на вкладке «Наборы данных». - 🔹 Настройки берутся копией через
ПолучитьНастройки(). Сохранённый вариант пользователя не меняется, колонка появляется только в результате. - 🔹 Если в отчёте несколько группировок, поле может понадобиться добавить в выбранные поля конкретной группировки, а не только в общий выбор.
В типовых отчётах СтандартнаяОбработка = Ложь может отключить их собственную логику формирования. Проверяйте доработку на копии базы, а не в рабочей.
Вычисляемые поля с условиями: готовые формулы
Язык выражений СКД похож на язык запросов. Главная конструкция для условий — Выбор Когда … Тогда … Иначе … Конец.
| Задача | Выражение детальных записей |
|---|---|
| Защита от деления на ноль | Выбор Когда [Сумма] = 0 Тогда 0 Иначе [Прибыль] / [Сумма] * 100 Конец |
| Метка по сумме | Выбор Когда [Сумма] > 500000 Тогда "Крупный" Иначе "Обычный" Конец |
| Пустое значение как ноль | ЕстьNULL([Оплачено], 0) |
| Остаток к оплате | ЕстьNULL([Сумма], 0) - ЕстьNULL([Оплачено], 0) |
| Месяц из даты | Месяц([Период]) |
| Количество разных контрагентов в итогах | Количество(Различные [Контрагент]) |
Несколько условий пишутся подряд:
Выбор
Когда [Просрочка] > 90 Тогда "Сомнительный долг"
Когда [Просрочка] > 30 Тогда "Просрочка"
Когда [Просрочка] > 0 Тогда "Внимание"
Иначе "В срок"
Конец
Проверка на числах: при выручке 120 000 и себестоимости 80 000 наценка = (120 000 − 80 000) / 80 000 × 100 = 50%. Если в итоговом выражении сложить проценты строк вместо сумм, при двух строках по 50% и 20% получится 70% — а реальная наценка группы другая. Поэтому проценты в итогах всегда считайте через Сумма() числителя и знаменателя.
Видимость, формат и оформление новой колонки
После добавления колонка часто выглядит «сырой»: 15 знаков после запятой, пустые нули, не на своём месте.
Формат чисел
Откройте вкладку «Условное оформление» в редакторе варианта и добавьте элемент:
- В «Оформлении» выберите параметр «Формат» и задайте его конструктором: например, 2 знака дробной части.
- В строку формата конструктор запишет что-то вроде
ЧДЦ=2. Для пустых нулей добавьтеЧН=—. - В «Оформляемых полях» укажите только вашу колонку, иначе формат применится ко всем полям.
Для текстовых меток можно настроить цвет: отбор [Просрочка] > 90 → цвет текста красный.
Место и видимость
- ↕️ Порядок колонок меняется стрелками на вкладке «Выбранные поля».
- 👁️ Временно скрыть поле — снимите флажок использования у него в выбранных полях. Само пользовательское поле останется в варианте.
- 📁 Сгруппировать колонку с соседними — создайте в выбранных полях группу и перенесите поля в неё.
В вычисляемом поле схемы СКД формат задаётся в колонке «Оформление» на вкладке «Вычисляемые поля». Тогда он одинаков во всех вариантах.
Почему пользовательское поле в отчете не работает
Типичные проблемы собраны ниже: выберите симптом, чтобы увидеть причину.