Как загружаются нефинансовые показатели из других подсистем в 1С:ERP и почему они не записываются в регистр?

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

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

Архитектурная логика хранения нефинансовых показателей

Проанализируем базовые принципы работы справочника НефинансовыеПоказатели. В карточке показателя реквизит варианта хранения определяет фундаментальный способ обращения системы к данным:

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

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

Когда и каким образом отрабатывает схема компоновки данных?

Посмотрим, в какой момент запускается выполнение СКД, настроенной в карточке нефинансового показателя. Запрос схемы компоновки выполняется динамически в двух основных точках подсистемы бюджетирования:

  1. В бюджетных отчетах. При компоновке отчета по бюджету, если в структуре строк, колонок или расчетных формул задействован нефинансовый показатель, механизм бюджетирования инициализирует СКД показателя, передает контекстные параметры отчета и сразу выводит полученные цифры на экран.
  2. В документе «Экземпляр бюджета». При автоматическом заполнении табличных частей, вычислении формул ячеек или применении правил заполнения СКД рассчитывает актуальные значения на дату или период формирования бюджета.

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

Правила и требования к пользовательской СКД показателя

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

  1. Имя числового поля. Результирующее числовое значение в запросе набора данных СКД обязательно должно иметь псевдоним ЗначениеПоказателя. Если назвать поле произвольно, расчетный механизм бюджетирования не сможет сопоставить результат.
  2. Состав аналитик. Поля группировки в запросе СКД должны соответствовать аналитикам, включенным в карточке нефинансового показателя (организация, подразделение, сценарий, валюта, а также пользовательские аналитики с 1 по 6). На закладке настройки получения данных в карточке показателя необходимо корректно связать поля СКД с аналитиками показателя.
  3. Параметры периода. В запрос СКД при вычислении передаются параметры расчетного периода (например, &Период или граничные даты интервала). При обращении к виртуальным таблицам оперативного учета (остатки, обороты) необходимо обязательно передавать эти параметры в параметры виртуальных таблиц, иначе отчет либо покажет нулевые итоги, либо сформирует нерелевантные данные.

Что делать, если значения обязательно нужно хранить в регистре?

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

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

  1. В карточке нефинансового показателя переключаем вариант хранения на «Значения устанавливаются документом».
  2. Разрабатываем внешнюю обработку или регламентное задание, которое по расписанию выполняет нужный запрос к учетным подсистемам.
  3. Программно создаем и заполняем документ Значения нефинансовых показателей, после чего проводим его:

ДокументОбъект = Документы.ЗначенияНефинансовыхПоказателей.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДата();
ДокументОбъект.НефинансовыйПоказатель = ВыбранныйПоказатель;

НоваяСтрока = ДокументОбъект.ЗначенияПоказателей.Добавить();
НоваяСтрока.ПериодДействия = НачалоМесяца(ТекущаяДата());
НоваяСтрока.Значение = РассчитанноеЧисловоеЗначение;

ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

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

← На главную