При автоматизации управленческого учета часто возникает потребность получать финансовую отчетность в разрезе дополнительных аналитик, таких как «ЦФО» (Центр финансовой ответственности) или «Проект». Первым импульсом разработчика или аналитика бывает решение добавить два новых измерения непосредственно в типовой регистр бухгалтерии. Разберем, с какими подводными камнями и техническими проблемами придется столкнуться при таком подходе и какие архитектурные альтернативы существуют в платформе 1С.
Добавление новых измерений в ключевой регистр бухгалтерии типовой конфигурации (например, 1С:Бухгалтерия) — это масштабное изменение архитектуры, которое затронет практически все механизмы системы. Проанализируем главные технические риски этого решения.
Рассмотрим более безопасные и гибкие способы решения задачи без снятия с поддержки регистра бухгалтерии и без риска снижения производительности всей базы.
Вместо добавления измерений на уровень всего регистра можно добавить новые виды субконто на конкретные счета плана счетов, где действительно требуется аналитический учет по ЦФО или Проектам.
Преимущества данного подхода:
Важное ограничение: фирма «1С» не рекомендует использовать более 3–4 субконто на одном счете из-за возрастающей нагрузки на БД при формировании итогов.
Выделим управленческий учет в отдельную подсистему на базе регистров накопления. Для автоматического заполнения данных разберем использование подписок на события.
Посмотрим на пример кода подписки на событие ОбработкаПроведения для трансляции данных из документов в специализированный регистр накопления:
Процедура ТрансляцияУправленческогоУчетаПриПроведении(Источник, Отказ, РежимПроведения) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
// Формируем движения по отдельному регистру накопления "УправленческиеОбороты"
ДвиженияРегистра = Источник.Движения.УправленческиеОбороты;
ДвиженияРегистра.Записывать = Истина;
Для Каждого СтрТЧ Из Источник.Товары Цикл
Движение = ДвиженияРегистра.ДобавитьПриход();
Движение.Период = Источник.Дата;
Движение.ЦФО = СтрТЧ.ЦФО;
Движение.Проект = СтрТЧ.Проект;
Движение.Сумма = СтрТЧ.Сумма;
КонецЦикла;
КонецПроцедуры
Такой подход полностью изолирует управленческую аналитику от регламентированного бухгалтерского учета и не влияет на скорость расчета бухгалтерских итогов.
Если аналитика «ЦФО» или «Проект» должна храниться строго в проводке, но рассчитывать остатки и итоги по ней на уровне СУБД не требуется, выберем добавление **реквизитов** (а не измерений) регистра бухгалтерии.
Реквизиты регистра:
Проанализируем еще одно практическое решение: создадим один справочник НаправленияДеятельности (или АналитикаУчета), в котором реквизитами будут выступать «ЦФО» и «Проект». Это позволяет обойтись добавлением всего лишь одного вида субконто или одного реквизита вместо двух, что сохранит высокую скорость работы базы данных.
Добавление новых измерений в типовой регистр бухгалтерии — крайне трудоемкая доработка с высокими рисками сбоев в учете и падения производительности. В большинстве проектов оптимальным решением является использование оборотных субконто, добавление реквизитов проводки или вынос управленческой аналитики в параллельные регистры накопления.