Чем грозит добавление новых измерений в регистр бухгалтерии 1С и какими альтернативами их заменить?

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

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

Основные риски и последствия добавления измерений в регистр бухгалтерии

Добавление новых измерений в ключевой регистр бухгалтерии типовой конфигурации (например, 1С:Бухгалтерия) — это масштабное изменение архитектуры, которое затронет практически все механизмы системы. Проанализируем главные технические риски этого решения.

  1. Массовая переработка алгоритмов проведения документов. При добавлении измерений в регистр все типовые документы-регистраторы перестанут заполнять эти аналитики при формировании проводок. Чтобы данные корректно попадали в регистр, придется дорабатывать модули проведения десятков видов документов (оплаты, поступления, реализации, перемещения и закрытие месяца).
  2. Сложности с закрытием остатков и двойной записью. Если для новых измерений включить флаг Балансовый = Истина, платформа будет строго контролировать равенство дебета и кредита в разрезе каждого измерения внутри каждой проводки. Это означает, что прямая проводка между разными ЦФО или проектами станет невозможной без использования транзитных счетов. Если же флаг балансовости не ставить или требовать учета остатков по неравномерным операциям, в системе начнут «зависать» незакрытые остатки по ЦФО и Проектам, которые невозможно будет автоматически списать штатными процедурами закрытия месяца.
  3. Необходимость доработки типовых отчетов и запросов. Выборки данных в типовых отчетах (оборотно-сальдовая ведомость, карточка счета и специализированные отчеты) не будут автоматически учитывать новые измерения. Придется переписывать и поддерживать запросы во всех отчетах, где требуется данная аналитика.
  4. Падение производительности СУБД и проблемы с индексами. Каждое новое измерение входит в составной первичный ключ таблиц итогов регистра бухгалтерии. Это существенно увеличивает размер индексов и таблиц итогов. На высоконагруженных или объемных базах данных это приводит к блокировкам таблиц при параллельном проведении документов несколькими пользователями и к замедлению расчета остатков.
  5. Снятие с типовой поддержки и запрет на использование расширений. Платформа 1С не позволяет добавлять новые измерения в существующий регистр бухгалтерии через механизмы расширений конфигурации. Внесение изменений потребует снятия регистра с полной поддержки, что существенно усложнит и удорожит последующие обновления конфигурации.

Альтернативные варианты реализации управленческого учета

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

Вариант 1. Использование механизма субконто

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

Преимущества данного подхода:

Важное ограничение: фирма «1С» не рекомендует использовать более 3–4 субконто на одном счете из-за возрастающей нагрузки на БД при формировании итогов.

Вариант 2. Использование параллельных регистров накопления

Выделим управленческий учет в отдельную подсистему на базе регистров накопления. Для автоматического заполнения данных разберем использование подписок на события.

Посмотрим на пример кода подписки на событие ОбработкаПроведения для трансляции данных из документов в специализированный регистр накопления:


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

Такой подход полностью изолирует управленческую аналитику от регламентированного бухгалтерского учета и не влияет на скорость расчета бухгалтерских итогов.

Вариант 3. Добавление реквизитов в регистр бухгалтерии

Если аналитика «ЦФО» или «Проект» должна храниться строго в проводке, но рассчитывать остатки и итоги по ней на уровне СУБД не требуется, выберем добавление **реквизитов** (а не измерений) регистра бухгалтерии.

Реквизиты регистра:

Вариант 4. Объединение аналитик в один справочник

Проанализируем еще одно практическое решение: создадим один справочник НаправленияДеятельности (или АналитикаУчета), в котором реквизитами будут выступать «ЦФО» и «Проект». Это позволяет обойтись добавлением всего лишь одного вида субконто или одного реквизита вместо двух, что сохранит высокую скорость работы базы данных.

Резюме

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

← На главную