В подсистеме бюджетирования конфигурации «Управление производственным предприятием» (УПП) одной из самых трудоемких задач является сбор фактических данных. В отличие от современных систем вроде БИТ.ФИНАНС или 1С:ERP, где данные могут транслироваться в реальном времени, в УПП исторически сложился механизм «посмертного» получения факта. В этой статье мы подробно разберем, опираясь на простые примеры разработки бюджетов, как уйти от ручного заполнения документов и настроить процесс так, чтобы система собирала цифры самостоятельно.
Для начала проанализируем, почему данные не попадают в бюджеты автоматически при проведении бухгалтерской проводки. В 1С:УПП подсистема бюджетирования максимально отделена от оперативного и бухгалтерского учета. Это сделано для того, чтобы управленческая отчетность (включая отчет о доходах и расходах) не «разваливалась» при каждой корректировке задним числом в бухгалтерии. Основным хранилищем данных здесь является регистр накопления ОборотыБюджетов (на его основе строится сравнительный анализ оборотов по бюджету), а единственным типовым инструментом для его наполнения фактическими данными выступает документ УчетФактическихДанных.
Рассмотрим стандартную цепочку действий, которую нам предстоит автоматизировать:
УчетФактическихДанных.Прежде чем программировать робота, который будет нажимать за нас кнопки, мы должны убедиться, что система знает, откуда брать данные. Разберем работу со справочником ИсточникиДанныхДляРасчетовБюджетов.
В этом справочнике мы создаем элементы для каждой статьи бюджета, по которой нужен факт. Выясним основные возможности настройки:
Важный момент: если источники настроены некорректно, любая автоматизация будет выдавать пустые документы или неверные цифры. Проверьте правильность настройки, нажав кнопку «Выполнить расчет» в самом источнике.
Многие пользователи не знают о существовании регламентной обработки, которая находится в меню «Бюджетирование» — «Регламентные операции». Проанализируем её функционал. Эта обработка умеет генерировать пачку документов УчетФактическихДанных по заданным параметрам (период, сценарий, организация).
Хотя эта обработка всё еще требует запуска пользователем, она является «мостиком» к полной автоматизации. Нам не нужно писать механизм сбора данных с нуля, нам достаточно программно вызвать код этой обработки.
Чтобы данные переносились «без рук», нам потребуется помощь программиста для создания Регламентного задания. Суть метода заключается в том, чтобы заставить сервер 1С выполнять код по расписанию (например, каждую ночь в 01:00 или каждый час).
Рассмотрим пример логики, которую необходимо реализовать в общем модуле для автоматического создания документов:
Процедура АвтоматическоеФормированиеФактаБюджетирования() Экспорт
// Определяем параметры: текущий месяц, сценарий "Факт"
ТекущийПериод = НачалоМесяца(ТекущаяДата());
СценарийФакт = Справочники.СценарииПланирования.НайтиПоНаименованию("Факт");
// Создаем новый документ
НовыйДок = Документы.УчетФактическихДанных.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.ПериодПланирования = ТекущийПериод;
НовыйДок.Сценарий = СценарийФакт;
НовыйДок.Организация = Справочники.Организации.НайтиПоКоду("00001");
// Записываем документ, чтобы получить ссылку для заполнения
НовыйДок.Записать();
// Вызываем процедуру заполнения из модуля документа
// В УПП типовой механизм заполнения часто вынесен в модуль объекта или обработки
ДокументОбъект = НовыйДок.Ссылка.ПолучитьОбъект();
ДокументОбъект.ЗаполнитьПоИсточникамДанных(); // Имя метода может отличаться в зависимости от релиза
Если ДокументОбъект.Обороты.Количество() > 0 Тогда
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
// Если данных нет, можно удалить пустой черновик
ДокументОбъект.УстановитьПометкуУдаления(Истина);
EndЕсли;
КонецПроцедуры
После написания такого метода, его нужно зарегистрировать в консоли регламентных заданий. Теперь система будет сама «вытягивать» проводки из бухгалтерии в бюджеты.
Если ваша компания использует сложные расчетные показатели для факта, разберем использование СКД. В настройках источника данных выберите вариант «Произвольный запрос». Это позволит вам соединять таблицы, высчитывать разницы между регистрами и даже учитывать данные из внешних источников. Проанализируем ситуацию: если вы один раз настроили сложную схему в СКД, документу УчетФактическихДанных останется только выполнить этот запрос. Это гораздо надежнее, чем пытаться автоматизировать «ручные» корректировки.
Часто пользователи спрашивают: «Почему в БИТ.ФИНАНС есть галочка 'Трансляция', а в УПП нет?». Выясним причину. БИТ.ФИНАНС использует событие ПриЗаписи бухгалтерского документа для мгновенной генерации движений по бюджету. В типовой УПП такой подход не реализован, так как это сильно замедляет работу системы при проведении документов (например, реализации товаров). Поэтому путь через регламентное задание в УПП считается более архитектурно правильным и безопасным для производительности базы.
Для реализации автоматического получения факта в УПП мы рекомендуем придерживаться следующего алгоритма:
Источники данных для каждой статьи.Формирование документов по фактическим данным.Используя этот подход, вы превратите подсистему бюджетирования УПП из «блокнота для записей» в мощный инструмент оперативного контроля финансового результата.