Как настроить соответствие аналитик через «Поле другого источника» в 1С:Управление холдингом?

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

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

Однако на практике данные в системе хранятся в разных разрезах. Например, один показатель детализирован до уровня контрагентов и договоров, а второй — только до уровня номенклатурных групп. При попытке объединить эти показатели в одной формуле возникает конфликт аналитик. Для решения этой проблемы в «1С:Управление холдингом» предусмотрен специальный механизм сопоставления — способ заполнения аналитики «Поле другого источника». В этой статье мы подробно разберем, как устроен этот функционал, как он работает «под капотом» и как правильно применять его на практике.

В чем суть проблемы несовпадения аналитик?

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

[Количество] * [Цена]

При этом исходные данные (операнды) хранятся в базе следующим образом:

  1. Операнд «Количество» заполнен и детализирован по обеим аналитикам — и по Контрагентам, и по Номенклатуре.
  2. Операнд «Цена» (например, прайс-лист компании) детализирован только по аналитике Номенклатура. Информации о контрагентах в прайс-листе нет, так как базовая цена одинакова для всех покупателей.

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

Как работает механизм «Поле другого источника»

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

Рассмотрим логику работы системы по шагам:

  1. Система берет основной операнд-приемник, у которого отсутствует нужная аналитика (в нашем примере это операнд «Цена»).
  2. Для недостающей аналитики (Контрагенты) мы указываем способ заполнения «Поле другого источника».
  3. В качестве источника-донора мы выбираем операнд, у которого эта аналитика присутствует (операнд «Количество»).
  4. В процессе расчета система анализирует таблицу операнда-донора и определяет все уникальные значения недостающей аналитики (список контрагентов, которые совершали покупки).
  5. Система берет значение из операнда-приемника (цену товара) и виртуально проецирует («размножает») его на каждую строку с контрагентом из операнда-донора.

В результате этого преобразования формируется временная таблица, где для каждого контрагента и товара проставлена соответствующая цена товара. Теперь структуры таблиц полностью совпадают, и система может корректно выполнить математическую операцию умножения на уровне строк.

Анализ практического поведения системы

Давайте проанализируем важную особенность работы этого механизма, которую пользователи часто выявляют экспериментальным путем.

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

Посмотрим на конкретный пример. Предположим, у нас есть следующие данные в базе:

Операнд «Количество» (Донор):

Операнд «Цена» (Приемник):

Мы настраиваем в операнде «Цена» заполнение аналитики Контрагенты через «Поле другого источника» (указываем операнд «Количество»). Система выполнит преобразование операнда «Цена» к следующему виртуальному виду:

Как видим, цена в 100 рублей продублировалась для каждого контрагента. Теперь расчет формулы Количество * Цена происходит без препятствий:

Именно такое поведение системы обеспечивает корректную работу сложных бюджетных моделей без необходимости дублирования данных вручную в регистрах-источниках.

Пошаговая инструкция по настройке в интерфейсе «1С:Управление холдингом»

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

  1. Перейдите в настройки правил расчета и выберите интересующий вас показатель отчета.
  2. Откройте форму настройки операндов (источников данных) для формулы расчета этого показателя.
  3. В списке операндов найдите тот, у которого отсутствует необходимая аналитика, и откройте его свойства.
  4. Перейдите на вкладку «Соответствие аналитик».
  5. В строке с той аналитикой, которую необходимо «подтянуть» извне, в колонке «Способ заполнения» выберите значение «Поле другого источника».
  6. В появившемся поле выбора укажите тот операнд формулы, который содержит заполненную аналитику (операнд-донор).
  7. Сохраните настройки операнда и выполните тестовый расчет экземпляра отчета для проверки корректности распределения данных.

Альтернативные варианты решения задачи

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

Вариант 1: Использование произвольных запросов

Вместо стандартного способа получения данных «Показатель отчета текущей ИБ» мы можем переключить операнд в режим «Запрос к информационной базе». В этом случае мы самостоятельно пишем текст запроса на языке 1С, где можем использовать конструкции ЛЕВОЕ СОЕДИНЕНИЕ или ПОЛНОЕ СОЕДИНЕНИЕ для связи таблиц по нужным полям.

Плюсы этого подхода:

Минусы:

Вариант 2: Использование встроенного языка (обработка заполнения)

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

Пример шаблона кода для ручного распределения аналитики:


// Пример обхода дерева показателей и заполнения аналитики
Для Каждого СтрокаДанных Из ТаблицаПоказателей Цикл
    Если Не ЗначениеЗаполнено(СтрокаДанных.Контрагент) Тогда
        // Реализуем собственный алгоритм поиска контрагента-донора
        СтрокаДанных.Контрагент = НайтиКонтрагентаПоТовару(СтрокаДанных.Номенклатура);
    КонецЕсли;
КонецЦикла;

Этот способ является наиболее трудозатратным и применяется в крайних случаях, когда стандартные формулы операндов не справляются с бизнес-требованиями.

Резюме

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

← На главную