Как настроить автоматическое получение фактических данных в бюджетировании 1С:УПП 1.3

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

В подсистеме бюджетирования конфигурации «Управление производственным предприятием» (УПП) одной из самых трудоемких задач является сбор фактических данных. В отличие от современных систем вроде БИТ.ФИНАНС или 1С:ERP, где данные могут транслироваться в реальном времени, в УПП исторически сложился механизм «посмертного» получения факта. В этой статье мы подробно разберем, опираясь на простые примеры разработки бюджетов, как уйти от ручного заполнения документов и настроить процесс так, чтобы система собирала цифры самостоятельно.

Понимание архитектуры сбора факта в УПП

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

Рассмотрим стандартную цепочку действий, которую нам предстоит автоматизировать:

  1. Настройка правил получения данных (Источники).
  2. Создание документа УчетФактическихДанных.
  3. Нажатие кнопки «Заполнить» в этом документе.
  4. Проведение документа.

Шаг 1. Настройка источников данных — фундамент автоматизации

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

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

Важный момент: если источники настроены некорректно, любая автоматизация будет выдавать пустые документы или неверные цифры. Проверьте правильность настройки, нажав кнопку «Выполнить расчет» в самом источнике.

Шаг 2. Использование типовой обработки «Формирование документов по фактическим данным»

Многие пользователи не знают о существовании регламентной обработки, которая находится в меню «Бюджетирование» — «Регламентные операции». Проанализируем её функционал. Эта обработка умеет генерировать пачку документов УчетФактическихДанных по заданным параметрам (период, сценарий, организация).

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

Шаг 3. Полная автоматизация через регламентное задание

Чтобы данные переносились «без рук», нам потребуется помощь программиста для создания Регламентного задания. Суть метода заключается в том, чтобы заставить сервер 1С выполнять код по расписанию (например, каждую ночь в 01:00 или каждый час).

Рассмотрим пример логики, которую необходимо реализовать в общем модуле для автоматического создания документов:


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

КонецПроцедуры

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

Шаг 4. Альтернативный метод: Схемы компоновки данных (СКД)

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

Сравнение с механизмом трансляций (БИТ.ФИНАНС)

Часто пользователи спрашивают: «Почему в БИТ.ФИНАНС есть галочка 'Трансляция', а в УПП нет?». Выясним причину. БИТ.ФИНАНС использует событие ПриЗаписи бухгалтерского документа для мгновенной генерации движений по бюджету. В типовой УПП такой подход не реализован, так как это сильно замедляет работу системы при проведении документов (например, реализации товаров). Поэтому путь через регламентное задание в УПП считается более архитектурно правильным и безопасным для производительности базы.

Подведем итоги

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

  1. Проверьте настройки в справочнике Источники данных для каждой статьи.
  2. Протестируйте ручное заполнение через типовую обработку Формирование документов по фактическим данным.
  3. Создайте регламентное задание, которое будет запускать логику этой обработки по расписанию.
  4. Настройте оповещения, чтобы ответственный бухгалтер получал сообщение, если автоматическое заполнение не нашло данных за прошлые сутки.

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

← На главную