При сопровождении крупных систем на базе 1С:Бухгалтерия, Управление холдингом или ERP разработчики часто сталкиваются с требованием бизнеса расширить аналитику учета. Стандартные три субконто на счетах хозрасчетного плана счетов часто оказываются «тесными» для нужд управленческого учета или МСФО. Бизнесу хочется видеть в оборотно-сальдовой ведомости (ОСВ) или анализе счета такие разрезы, как «Проект», «Статья ДДС», «Договор-спецификация» или «ЦФО» одновременно. В таких случаях часто используется универсальная оборотно-сальдовая ведомость, позволяющая настраивать нестандартные фильтры и группировки по нескольким субконто сразу.
В данной статье мы подробно разберем, как реализовать «параллельную вселенную» бухгалтерской отчетности с 4, 5 и более субконто, не превращая при этом процесс обновления типовой конфигурации в кошмар.
Архитектура регистра бухгалтерии в 1С исторически оптимизирована под три измерения-субконто. Это ограничение зашито не только в структуру таблиц базы данных, но и в логику работы виртуальных таблиц ОстаткиИОбороты. Кроме того, все стандартные отчеты (ОСВ, Карточка счета, Анализ счета) построены на динамическом формировании текста запроса. Если вам нужно обойти эти ограничения, стоит изучить механизм построения оборотов счета на СКД, который дает гораздо больше гибкости в управлении измерениями.
Рассмотрим основные стратегии решения этой задачи, которые обсуждались экспертами и применяются в реальных проектах.
Проанализируем один из самых элегантных способов, который не требует изменения структуры метаданных регистра бухгалтерии. Мы можем заменить одно из стандартных субконто (например, Субконто3) на справочник, который сам по себе является «контейнером» для других аналитик.
Суть метода:
КлючиАналитикиУчета.Аналитика4, Аналитика5, Аналитика6 и так далее.Этот метод позволяет получать остатки и обороты по счетам с субконто по месяцам даже в тех случаях, когда типовой функционал БП 3.0 или ERP 2 ограничивает количество разрезов учета.
Если бюджет проекта позволяет, а требования к производительности высоки, стоит рассмотреть создание отдельной подсистемы. Мы можем завести второй план счетов и второй регистр бухгалтерии, где в настройках указано Максимальное количество субконто — например, 10 или 50. Плюс этого решения в том, что стандартная отчетность по второму регистру будет работать «из коробки», обеспечивая расширенный анализ субконто, превосходящий возможности стандартного комплекта отчетов.
Это самый популярный путь среди разработчиков, желающих быстро получить результат в расширении. Рассмотрим ситуацию: у нас есть данные в типовом регистре бухгалтерии, а дополнительные разрезы (например, «Проект») хранятся в отдельном Регистре Сведений, где ключом является Регистратор (документ).
Разберем по шагам, как модифицировать запрос в ОСВ. Это позволит выводить обороты счета по документам с указанием специфических управленческих данных. Нам необходимо выполнить ЛЕВОЕ СОЕДИНЕНИЕ виртуальной таблицы остатков и оборотов с нашим дополнительным регистром.
Проанализируем техническую особенность: если мы просто обратимся к ХозрасчетныйОстаткиИОбороты.Регистратор.НашПроект, система будет вынуждена перебирать все движения, что убьет скорость формирования отчета. Правильнее будет использовать конструкцию, аналогичную той, что применяется в «Карточке счета»:
ВЫБРАТЬ
Б_Данные.Счет КАК Счет,
Б_Данные.Организация КАК Организация,
Б_Данные.Субконто1 КАК Субконто1,
Б_Данные.Субконто2 КАК Субконто2,
Б_Данные.Субконто3 КАК Субконто3,
// Наши магические субконто из внешнего источника
ЕСТЬNULL(ДопАналитика.Проект, "Проект не указан") КАК Субконто4,
ЕСТЬNULL(ДопАналитика.ЦФО, "ЦФО не указан") КАК Субконто5,
Б_Данные.СуммаОборотДт КАК СуммаОборотДт,
Б_Данные.СуммаОборотКт КАК СуммаОборотКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, Регистратор, , , , ) КАК Б_Данные
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительнаяАналитикаУчета КАК ДопАналитика
ПО Б_Данные.Регистратор = ДопАналитика.ДокументОбъект
И Б_Данные.НомерСтроки = ДопАналитика.НомерСтрокиПланаСчетов
Важный момент: Обратите внимание, что в виртуальной таблице обязательно должен быть указан параметр периодичности Регистратор. Для тонкой настройки фильтрации по хозяйственным операциям можно использовать универсальный отчет по проводкам с отбором по типу регистратора.
Рассмотрим ситуацию, когда стандартная виртуальная таблица ОстаткиИОбороты перестает возвращать данные при добавлении определенных полей. Это часто происходит из-за внутренней оптимизации платформы 1С. Чтобы заставить систему работать стабильно, мы рекомендуем использовать соединение основной таблицы итогов с физической таблицей движений (ДвиженияССубконто).
Посмотрим на пример правильной структуры соединения в сложном отчете:
ВЫБРАТЬ
Итоги.Счет,
Итоги.Период,
Итоги.Регистратор,
Движения.Субконто1,
Движения.Субконто2,
Движения.Субконто3,
// Дополнительные данные через регистратор
Итоги.Регистратор.УправленческаяАналитика КАК Субконто4
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачДата, &КонДата, Регистратор, , , , ) КАК Итоги
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК Движения
ПО Итоги.Регистратор = Движения.Регистратор
И Итоги.НомерСтроки = Движения.НомерСтроки
И Итоги.Счет = Движения.Счет
Такой подход позволяет сохранить точность данных «копейка в копейку» с типовым регистром, при этом «подклеивая» неограниченное количество аналитических разрезов.
Для того чтобы новые субконто появились в настройках отчета красиво, как родные, проанализируем возможности механизма Характеристик в Системе компоновки данных (СКД). Это позволяет программно описать для СКД, что у объекта Регистратор или Счет есть дополнительные атрибуты, хранящиеся в другом месте.
В схеме компоновки данных на закладке «Наборы данных» выберем наш запрос и нажмем кнопку «Характеристики». Укажем:
После этой настройки в ОСВ пользователь сможет зайти в «Группировку», нажать на плюс рядом с Регистратором и увидеть там все свои «Субконто 4, 5, 6» как доступные поля для группировки и отбора. Это самый «чистый» способ с точки зрения интерфейса.
Расширение.ОборотноСальдоваяВедомостьПоСчету, скопируйте ее в расширение. Ориентируйтесь на проверенные решения, такие как универсальная ОСВ в вариантах отчета, которую легче адаптировать под нужды бизнеса.Подводя итог, можно сказать: задача реализации параллельной аналитики в 1С вполне решаема. Главное — выбрать баланс между скоростью работы системы и удобством пользователя. Мы рассмотрели основные методы: от контейнеров-ключей до динамических соединений в СКД. Выбор конкретного пути зависит от того, являются ли ваши дополнительные субконто только оборотными или они должны полноценно закрываться «в ноль» по сальдо.