Как добавить расчетный столбец в отчет СКД, если у нескольких полей одинаковые названия?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе с типовыми отчетами в 1С (например, «Исполнение плана продаж») специалисты часто сталкиваются с ситуацией, когда в структуре отчета присутствуют несколько полей с идентичными заголовками. Например, три колонки называются Сумма, но одна относится к Плану, другая к Факту, а третья к Проценту выполнения. Попытка создать пользовательское поле с формулой Сумма * 1.2 приводит к тому, что система выбирает «не то» поле или выдает ошибку. Разберем подробно, как решить эту задачу несколькими способами: от настроек в режиме пользователя до внесения изменений в схему компоновки данных (СКД).

Понимание разницы между заголовком и путем к данным

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

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

Способ 1: Использование пользовательских полей в режиме «1С:Предприятие»

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

  1. Откроем отчет и перейдем в меню Настройки (или «Еще» — «Прочее» — «Изменить вариант», если кнопка настроек ограничена).
  2. Перейдем на вкладку Пользовательские поля.
  3. Нажмем «Добавить» и выберем Новое поле-выражение.
  4. В поле «Заголовок» укажем понятное имя, например: Сумма Факт с коэффициентом.
  5. В поле «Выражение детальных записей» нам нужно прописать формулу. Если стандартное обращение по имени Сумма не работает или берет не те данные, попробуем указать путь через точку, характерный для этого отчета.

Пример формулы с использованием логического выбора:


ВЫБОР 
    КОГДА Факт.Сумма > 100000 
    ТОГДА Факт.Сумма * 1.1 
    ИНАЧЕ Факт.Сумма * 1.05 
КОНЕЦ

Важный нюанс: Если в режиме предприятия система пишет «Поле не найдено», это означает, что в текущем варианте отчета пути к данным переопределены или скрыты. В этом случае придется перейти к более глубокой настройке.

Способ 2: Редактирование варианта отчета

Иногда доступ к нужным полям можно получить, если изменить структуру самого варианта. Выясним причину, по которой поля называются одинаково. Часто они находятся внутри разных Групп выбранных полей. Рассмотрим алгоритм действий:

  1. В окне «Изменить вариант» найдем вкладку Поля.
  2. Найдем группу «Факт» и наше поле «Сумма».
  3. Попробуем временно установить полю уникальный заголовок (например, «Сумма_Для_Расчета»).
  4. После этого создадим пользовательское поле, обращаясь к этому новому заголовку. 1С часто подхватывает связь именно по внутреннему идентификатору, который обновится при смене заголовка.

Способ 3: Создание вычисляемого поля в конфигураторе (рекомендуемый)

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

Проанализируем шаги:

  1. Сохраним отчет как внешний файл (.erf).
  2. Откроем его в конфигураторе и перейдем на закладку Вычисляемые поля.
  3. Добавим новое поле. Путь к данным назовем СуммаФактДляРасчета, а заголовок — Сумма Факт (расчетная).
  4. В колонке «Выражение» напишем нашу формулу. Здесь мы можем точно выбрать поле из набора данных, например: СуммаОборотФакт * 0.15.
  5. Обязательно перейдем на закладку Ресурсы и добавим наше новое поле туда, чтобы система могла рассчитывать итоги по группам (например, по менеджерам или отделам). Используем выражение: Сумма(СуммаФактДляРасчета).

Решение проблемы с подключением внешнего отчета (ошибка БСП)

При попытке загрузить отредактированный отчет обратно в базу через справочник «Дополнительные отчеты и обработки» часто возникает ошибка: «Метод объекта не обнаружен (СведенияОВнешнейОбработке)». Посмотрим, почему это происходит. Современные конфигурации на базе БСП (ERP, КА, УТ 11) требуют, чтобы внешний файл содержал специальную функцию регистрации.

Разберем, какой код необходимо добавить в Модуль объекта вашего отчета:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
    ПараметрыРегистрации.Наименование = "Исполнение плана продаж (с доп. колонкой)";
    ПараметрыРегистрации.Версия = "1.1";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Открыть отчет";
    НоваяКоманда.Идентификатор = "ОткрытьОтчет";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение = Ложь;
    
    Возврат ПараметрыРегистрации;
КонецФункции

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

Подведение итогов

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

← На главную