Как использовать ИФО в табличной части документа Регистрация обязательств в 1С:БГУ 2.0

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

В практике работы с конфигурацией 1С:Бухгалтерия государственного учреждения 2.0 разработчики часто сталкиваются с требованиями пользователей (бухгалтеров или юристов) реализовать учет по нескольким ИФО (Источникам финансового обеспечения) в рамках одного документа Регистрация обязательств. По умолчанию в системе ИФО является балансоразделителем и располагается в шапке документа, что подразумевает принцип: один документ — один баланс.

В данной статье мы подробно разберем, как реализовать возможность ведения учета по ИФО в табличных частях, проанализируем технические сложности и рассмотрим пути решения, которые позволят сохранить работоспособность программы при обновлениях.

Методологическая справка: Почему это вызывает сложности

Прежде чем приступать к кодингу, проанализируем ситуацию с точки зрения методологии. В БГУ 2.0 ИФО — это не просто дополнительная аналитика (как КФО или КПС), а признак, разделяющий учет на независимые балансы. Большинство типовых механизмов, таких как формирование проводок и проверка лимитов, ожидают увидеть ИФО именно в заголовке объекта. Если мы просто добавим колонку в таблицу, стандартный механизм проведения проигнорирует её, подставив значение из шапки во все строки проводок.

Вариант 1. Настройка источников данных для бухгалтерских операций

Самый правильный путь с точки зрения минимизации правок конфигурации — это использование механизмов Шаблонов бухгалтерских операций. Каждая операция в БГУ 2.0 использует настройки, определяющие, откуда брать данные для проводок. Выясним причину, по которой стандартная настройка не видит вашу колонку.

Для реализации этого метода выполним следующие шаги:

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

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


&После("ПередЗаписьюРегистрацииОбязательств")
Процедура ДопОбработкаИФО_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Для Каждого СтрокаТЧ Из ЭтотОбъект.ВнебюджетныеСредства Цикл
        // Если поле ИФО в строке заполнено, используем его для логики проводок
        Если ЗначениеЗаполнено(СтрокаТЧ.ИФО_Доп) Тогда
            // Логика передачи ИФО в механизм формирования движений
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Вариант 2. Доработка через расширение (Программный метод)

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

Если мы не обновим движения по регистрам, у нас возникнет разрыв: в бухгалтерском учете (на счетах 500.00) данные будут в разрезе разных ИФО, а в отчетах по исполнению бюджета данные «схлопнутся» по ИФО из шапки. Чтобы этого избежать, проанализируем процедуру проведения:

  1. Найдем в модуле менеджера или модуле объекта процедуру, отвечающую за формирование движений по регистрам накопления.
  2. В расширении создадим &Вместо или &После для этой процедуры.
  3. В цикле обхода табличной части при формировании наборов записей заменим стандартное обращение к ИФО (из шапки) на обращение к ТекущаяСтрока.ИФО.

Посмотрим на пример логики переопределения данных:


// Пример модификации движения по регистру накопления
Движение = Движения.ОбязательстваОрганизаций.Добавить();
Движение.Период = ЭтотОбъект.Дата;
Движение.Организация = ЭтотОбъект.Организация;
// Вместо ЭтотОбъект.ИФО используем колонку из ТЧ:
Движение.ИФО = СтрокаТЧ.ИФО_Доп; 
Движение.Договор = ЭтотОбъект.Договор;
// ... заполнение остальных реквизитов ...

Вариант 3. Использование внешних функций в шаблонах операций

Если вы хотите избежать прямого изменения процедуры проведения, можно попробовать использовать внешние функции в шаблонах проводок. Это позволяет вызывать программный код прямо из настроек пользовательского режима. Однако, как показывает практика обсуждения (Сообщение 3), расчет в функции часто сворачивает данные, если не обеспечена уникальность ключа связи между строкой документа и строкой проводки. Для корректной работы необходимо убедиться, что алгоритм расчета проводок понимает, какая строка ТЧ соответствует какой записи в журнале проводок.

Важные риски и последствия

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

Альтернативное решение: Разделение документов

Прежде чем приступать к глубокой разработке, проанализируем ситуацию еще раз. Типовая методология 1С предлагает создавать отдельный документ на каждый ИФО. Если пользователям неудобно создавать много документов, можно автоматизировать этот процесс:

  1. Создать внешнюю обработку (или кнопку в расширении), которая будет называться «Распределить по ИФО».
  2. Эта обработка будет брать один «черновик» документа, где все ИФО указаны в таблице, и по нажатию кнопки создавать несколько реальных документов Регистрация обязательств, в каждом из которых будет свой ИФО в шапке.
  3. Все эти документы будут привязаны к одному и тому же элементу справочника Договоры.

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

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

← На главную