При настройке подсистемы бюджетирования в 1С:ERP Управление предприятием часто возникает методический тупик: аналитик настраивает нефинансовый показатель, указывает вариант «Значения загружаются из других подсистем», разрабатывает схему компоновки данных (СКД), но затем обнаруживает, что этот показатель невозможно выбрать в документе Значения нефинансовых показателей или в шаблонах ввода. Кроме того, в регистре сведений данные так и не появляются. Выясним причину такого поведения системы и разберем, как на самом деле работает этот механизм.
Проанализируем базовые принципы работы справочника НефинансовыеПоказатели. В карточке показателя реквизит варианта хранения определяет фундаментальный способ обращения системы к данным:
Значения нефинансовых показателей (в том числе через шаблон ввода), при проведении которого формируются физические движения в периодическом регистре сведений ЗначенияНефинансовыхПоказателей.Именно поэтому на уровне форм документов Значения нефинансовых показателей и справочника Шаблоны ввода нефинансовых показателей наложен жесткий отбор: показатели с признаком загрузки из других подсистем в них намеренно заблокированы для выбора, так как регистрировать их документом противоречит архитектуре конфигурации.
Посмотрим, в какой момент запускается выполнение СКД, настроенной в карточке нефинансового показателя. Запрос схемы компоновки выполняется динамически в двух основных точках подсистемы бюджетирования:
Таким образом, запись в базу данных не производится: расчет выполняется исключительно в оперативной памяти в процессе генерации отчета или документа.
Чтобы динамический расчет отрабатывал без ошибок, настроенная схема компоновки данных должна строго соблюдать внутренние требования конфигурации 1С:ERP. Разберем ключевые условия настройки набора данных:
ЗначениеПоказателя. Если назвать поле произвольно, расчетный механизм бюджетирования не сможет сопоставить результат.&Период или граничные даты интервала). При обращении к виртуальным таблицам оперативного учета (остатки, обороты) необходимо обязательно передавать эти параметры в параметры виртуальных таблиц, иначе отчет либо покажет нулевые итоги, либо сформирует нерелевантные данные.Рассмотрим практические ограничения динамического расчета. Если СКД обращается к тяжелым регистрам с большим количеством соединений, расчет отчетов и проведение документов Экземпляр бюджета могут значительно замедляться. Кроме того, иногда бизнес-логика требует зафиксировать значения на определенную дату, чтобы исключить их изменение задним числом при корректировке первичных документов в оперативных подсистемах.
Если требуется физическая фиксация данных в регистре сведений, реализуем следующий алгоритм:
Значения нефинансовых показателей, после чего проводим его:
ДокументОбъект = Документы.ЗначенияНефинансовыхПоказателей.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДата();
ДокументОбъект.НефинансовыйПоказатель = ВыбранныйПоказатель;
НоваяСтрока = ДокументОбъект.ЗначенияПоказателей.Добавить();
НоваяСтрока.ПериодДействия = НачалоМесяца(ТекущаяДата());
НоваяСтрока.Значение = РассчитанноеЧисловоеЗначение;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Такой подход обеспечивает физическое сохранение среза данных в регистре сведений, позволяет пользователям вручную проверять и корректировать показатели, а также полностью исключает падение производительности при формировании аналитических отчетов подсистемы бюджетирования.