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