При работе с типовыми отчетами в 1С (например, «Исполнение плана продаж») специалисты часто сталкиваются с ситуацией, когда в структуре отчета присутствуют несколько полей с идентичными заголовками. Например, три колонки называются Сумма, но одна относится к Плану, другая к Факту, а третья к Проценту выполнения. Попытка создать пользовательское поле с формулой Сумма * 1.2 приводит к тому, что система выбирает «не то» поле или выдает ошибку. Разберем подробно, как решить эту задачу несколькими способами: от настроек в режиме пользователя до внесения изменений в схему компоновки данных (СКД).
Прежде всего, проанализируем, почему возникает путаница. В системе компоновки данных у каждого поля есть два важных атрибута: Заголовок (то, что мы видим в шапке отчета) и Путь к данным (уникальный идентификатор поля в программном коде). В типовых отчетах разработчики часто объединяют поля в группы, давая им простые заголовки. Для системы Сумма из группы «Факт» и Сумма из группы «План» — это разные сущности.
Рассмотрим ситуацию на примере отчета «Исполнение плана продаж по менеджерам». Чтобы понять, к какому полю обращаться, нам нужно выяснить его истинный путь к данным. Обычно в таких отчетах пути выглядят следующим образом:
План.Сумма или СуммаПланФакт.Сумма или СуммаФактИсполнениеПлана.СуммаЕсли нам нужно быстро добавить расчетную колонку без изменения конфигурации, воспользуемся механизмом пользовательских полей. Разберем по шагам, как это сделать:
Сумма Факт с коэффициентом.Сумма не работает или берет не те данные, попробуем указать путь через точку, характерный для этого отчета.Пример формулы с использованием логического выбора:
ВЫБОР
КОГДА Факт.Сумма > 100000
ТОГДА Факт.Сумма * 1.1
ИНАЧЕ Факт.Сумма * 1.05
КОНЕЦ
Важный нюанс: Если в режиме предприятия система пишет «Поле не найдено», это означает, что в текущем варианте отчета пути к данным переопределены или скрыты. В этом случае придется перейти к более глубокой настройке.
Иногда доступ к нужным полям можно получить, если изменить структуру самого варианта. Выясним причину, по которой поля называются одинаково. Часто они находятся внутри разных Групп выбранных полей. Рассмотрим алгоритм действий:
Если отчет встроенный и позволяет выгрузку во внешний файл, это самый надежный способ. Мы создадим новое Вычисляемое поле непосредственно в схеме СКД, где у нас будет полный контроль над именами.
Проанализируем шаги:
.erf).СуммаФактДляРасчета, а заголовок — Сумма Факт (расчетная).СуммаОборотФакт * 0.15.Сумма(СуммаФактДляРасчета).При попытке загрузить отредактированный отчет обратно в базу через справочник «Дополнительные отчеты и обработки» часто возникает ошибка: «Метод объекта не обнаружен (СведенияОВнешнейОбработке)». Посмотрим, почему это происходит. Современные конфигурации на базе БСП (ERP, КА, УТ 11) требуют, чтобы внешний файл содержал специальную функцию регистрации.
Разберем, какой код необходимо добавить в Модуль объекта вашего отчета:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
ПараметрыРегистрации.Наименование = "Исполнение плана продаж (с доп. колонкой)";
ПараметрыРегистрации.Версия = "1.1";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Открыть отчет";
НоваяКоманда.Идентификатор = "ОткрытьОтчет";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
После добавления этого кода в модуль объекта и сохранения файла, система успешно распознает отчет и позволит подключить его в список дополнительных обработок. Это избавит пользователей от необходимости каждый раз открывать файл через меню «Файл — Открыть».
Мы рассмотрели три пути решения проблемы с одинаковыми именами полей. Самым гибким является работа через Вычисляемые поля в СКД, так как это гарантирует корректный расчет итогов. Помните, что в сложных типовых отчетах структура полей может быть иерархической, и обращение к полю Сумма без указания родительской группы (например, Факт) может привести к непредсказуемым результатам в вычислениях. Всегда проверяйте Путь к данным в наборах данных конфигуратора — это единственный надежный идентификатор для ваших формул.