В системе 1С:ERP Управление предприятием 2.4 (и более поздних версиях) подсистема бюджетирования является мощным инструментом аналитики. Одна из наиболее востребованных задач — автоматическое получение плановых показателей на основе оперативных данных, таких как графики оплат в заказах клиентов. Рассмотрим подробно, как реализовать эту задачу, какие механизмы использовать и как избежать типичных ошибок при настройке.
Типичная ситуация: менеджеры вносят в документ Заказ клиента график оплаты на вкладке «Основное». Эти данные должны попадать в бюджет движения денежных средств (БДДС) в колонку «План», чтобы аналитик мог сравнить их с фактическим поступлением денег. Основная проблема заключается в том, что по умолчанию правила получения фактических данных настроены на свершившиеся операции (регистр ВыручкаИСебестоимостьПродаж или ДенежныеСредства), а нам нужно «заглянуть в будущее».
Проанализируем доступные источники данных. У нас есть два основных пути:
ЭтапыГрафикаОплаты документа Заказ клиента.План оплат клиентов. Это более предпочтительный вариант, так как регистр оптимизирован для быстрого извлечения данных и содержит уже обработанную информацию.Для того чтобы вытащить данные из графика оплат, мы не можем использовать стандартные настройки «Операндов» в простых правилах, если нам нужна сложная логика. Разберем создание правила через произвольный запрос. Этот механизм позволяет написать любой запрос на языке 1С, который вернет данные в систему бюджетирования.
При создании правила получения данных в статье бюджета выберем тип «Произвольный запрос». Важно помнить, что СКД (схема компоновки данных) бюджетирования накладывает жесткие требования к структуре полей. В запросе обязательно должны присутствовать периоды. Если мы тянем данные из табличной части документа, у которого нет стандартных полей периодов (как у регистров), нам нужно создать их искусственно.
Рассмотрим пример построения запроса к регистру сведений или табличной части. Посмотрим на структуру обязательных полей периодов, которые ожидает система:
ВЫБРАТЬ
График.ДатаПлатежа КАК ПериодДень,
НАЧАЛОПЕРИОДА(График.ДатаПлатежа, НЕДЕЛЯ) КАК ПериодНеделя,
НАЧАЛОПЕРИОДА(График.ДатаПлатежа, МЕСЯЦ) КАК ПериодМесяц,
НАЧАЛОПЕРИОДА(График.ДатаПлатежа, КВАРТАЛ) КАК ПериодКвартал,
НАЧАЛОПЕРИОДА(График.ДатаПлатежа, ГОД) КАК ПериодГод,
График.СуммаПлатежа КАК СуммаУпр,
График.Ссылка.Партнер КАК Партнер,
График.Ссылка.Договор КАК Договор,
График.Ссылка КАК Заказ
ИЗ
Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК График
ГДЕ
График.Ссылка.Проведен = ИСТИНА
И График.ДатаПлатежа МЕЖДУ &НачалоПериода И &КонецПериода
Обратите внимание: если использовать регистр накопления ПланОплатКлиентов, то задача упрощается, так как большинство периодов там уже определены. Использование регистра ГрафикПлатежей также возможно, но нужно учитывать, что в некоторых версиях конфигурации он может хранить только актуальные (неоплаченные) остатки, что не всегда подходит для исторического план-фактного анализа.
Выясним, почему данные из произвольного запроса часто попадают не в те колонки отчета. В 1С:ERP данные в бюджетировании делятся по Сценариям. Фактические данные — это особый системный сценарий. Если вы настроили правило в статье бюджета, по умолчанию система считает это правилом получения Факта (исполнения).
Чтобы данные из графика оплат отображались как План, воспользуемся одним из следующих методов:
Экземпляр бюджета по кнопке «Заполнить» система выполнит наш запрос и запишет суммы в регистр Обороты бюджетов по выбранному Плановому сценарию.Экземпляр бюджета, мы можем настроить его как Нефинансовый показатель или использовать расшифровку в структуре отчета, добавив колонку, которая обращается к данным системы напрямую. Однако для полноценного план-фактного анализа через стандартный отчет «Бюджетный отчет» рекомендуется именно первый вариант с фиксацией плана в регистре.Рассмотрим ситуацию, когда отчет работает медленно. Как упоминалось в обсуждении, сложные запросы к табличным частям документов могут существенно замедлять формирование отчета, особенно если база данных большая. Проанализируем способы ускорения:
Во-первых, всегда старайтесь обращаться к регистрам накопления, а не к документам. Индексы таблиц регистра работают значительно быстрее. Для графика оплат это РегистрНакопления.ПланОплатКлиентов.
Во-вторых, минимизируйте количество соединений внутри произвольного запроса. Если вам нужна аналитика «Подразделение» или «Менеджер», старайтесь, чтобы они были измерениями в регистре, из которого вы берете данные.
В-третьих, используйте параметры &НачалоПериода и &КонецПериода внутри запроса, чтобы система не вычитывала весь график оплат за все годы существования фирмы, а ограничивалась только периодом отчета.
Подводя итог, можно сказать, что механизм бюджетирования в 1С:ERP 2.4 достаточно гибок для решения подобных задач. Ключевые шаги для реализации:
ПериодДень ... ПериодГод).Экземпляр бюджета для того, чтобы «заморозить» эти плановые показатели в регистре по конкретному сценарию (например, «Месячный план»).Вид бюджета, где в разных колонках выводим данные по сценарию «План» и фактические данные, полученные из оперативного учета.Таким образом, мы получаем прозрачную систему, где план автоматически подтягивается из заказов клиентов, а факт — из банковских выписок, что позволяет проводить качественный оперативный план-фактный анализ движения денежных средств.