При внедрении или адаптации крупных учетных систем, таких как 1С:ERP Управление предприятием 2, специалисты и пользователи часто сталкиваются с избыточной, на их взгляд, детализацией. Одним из типичных камней преткновения становится признак «Учет по подразделению» на счетах бухгалтерского учета. Кажется, что если организация небольшая или структура компании линейна, этот разделитель можно просто отключить, убрав соответствующие флажки в Плане счетов. Однако в системах класса ERP такое действие является критической ошибкой.
В этой статье мы подробно разберем, почему попытка отключить учет по подразделениям в 1С:ERP способна полностью парализовать работу системы, к каким техническим и методологическим последствиям это приведет, и как правильно решить задачу упрощения учета, не ломая логику программы.
Начнем с технического устройства системы. Большинство предопределенных счетов в 1С:ERP имеют жесткую привязку к учету по подразделениям на уровне метаданных. К таким счетам относятся:
20, 23, 25, 26, 29, 44);10, 41, 43, 45);60, 62, 70, 76).Разработчики фирмы «1С» заблокировали изменение этого признака в режиме «1С:Предприятие». В пользовательском интерфейсе вы физически не сможете снять флаг «Учет по подразделениям», так как эти счета защищены специальным «замочком» конфигуратора.
Если пойти деструктивным путем и снять План счетов с поддержки в конфигураторе, чтобы принудительно отключить этот признак, мы гарантированно столкнемся со следующими проблемами:
Архитектура систем 1С:ERP и 1С:Комплексная автоматизация принципиально отличается от классической 1С:Бухгалтерии. Здесь регламентированный (бухгалтерский) учет является вторичным по отношению к оперативному контуру. Если ведение регламентированного учета в рамках единой системы оказывается слишком сложным, бухгалтерский контур можно выделить в отдельную базу, настроив перенос данных из 1С:ERP 2 в 1С:Бухгалтерию 3.0 для работы по классической схеме.
Проанализируем цепочку проведения любого документа:
ПриобретениеТоваровУслуг или ВыпускПродукции) в первую очередь делает записи в оперативные регистры накопления (такие как ВыручкаИСебестоимостьПродаж, СебестоимостьТоваров, ПрочиеРасходы).Если мы отключим учет по подразделениям на конкретном счете (например, на 41 или 20), возникнет жесткий конфликт данных. Программа попытается перенести информацию из регистра, где подразделение заполнено, на счет учета, который эту аналитику не поддерживает. В результате система либо откажется проводить документ, выдавая неустранимые ошибки, либо сформирует проводки с «пустым» подразделением, что приведет к вечным расхождениям между оперативным балансом и оборотно-сальдовой ведомостью (ОСВ). Для предотвращения появления пустых аналитик в документах можно использовать готовое решение для контроля заполнения подразделений.
Самое опасное последствие отключения учета по подразделениям проявляется при попытке выполнить процедуру «Закрытие месяца». Расчет себестоимости в 1С:ERP — это сложнейший математический алгоритм, основанный на решении систем линейных уравнений. Этот алгоритм жестко завязан на локализацию затрат по подразделениям.
Рассмотрим, как программа распределяет расходы:
25, 26, 44) аккумулируются строго в разрезе конкретных подразделений-отправителей.В результате процедура расчета себестоимости либо завершится аварийно с критической ошибкой, либо зациклится в бесконечном расчете, либо сформирует некорректное сальдо на затратных счетах, которое невозможно будет закрыть стандартными регламентными операциями.
В 1С:ERP используется единый План счетов как для бухгалтерского (БУ), так и для налогового учета (НУ). Подразделения играют ключевую роль в расчете налогов:
Если бизнес-заказчик утверждает, что учет по подразделениям избыточен и только усложняет работу пользователей, ни в коем случае нельзя прибегать к техническому отключению этой аналитики. Мы должны использовать стандартные методологические подходы, заложенные в логику 1С:ERP.
Рассмотрим два надежных и безопасных сценария решения этой задачи.
Если в компании нет реальной необходимости делить затраты и активы по разным отделам, мы можем свести весь учет к одному виртуальному подразделению. Разберем этот процесс по шагам:
Структура предприятия и создадим там один-единственный элемент, назвав его, например, «Основное подразделение» или «Администрация».При таком подходе пользователи практически перестанут замечать эту аналитику — она будет заполняться автоматически одной и той же записью. В оборотно-сальдовой ведомости всегда будет фигурировать только одно подразделение. Система при этом будет работать абсолютно стабильно, так как все необходимые регистры и счета получат заполненное значение аналитики, закрытие месяца пройдет без ошибок, а целостность данных не нарушится.
Если мы хотим полностью избавить пользователей от необходимости видеть или выбирать подразделения в документах, мы можем автоматизировать этот процесс с помощью механизмов платформы. Для этого отлично подойдет использование механизма расширений конфигурации. Мы можем написать небольшой код, который будет автоматически подставлять нужное подразделение в зависимости от контекста, не затрагивая при этом типовой План счетов и структуру метаданных.
Посмотрим на пример кода, который можно внедрить через расширение конфигурации для автоматического заполнения подразделения при создании новых документов:
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Проверим, что это новый документ, который еще не записан в базу данных
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
// Получим основное подразделение текущего пользователя из его настроек
ТекущийПользователь = Пользователи.ТекущийПользователь();
ОсновноеПодразделение = УправлениеПользователями.ПолучитьЗначениеНастройкиПоУмолчанию(
ТекущийПользователь,
ПланыВидовХарактеристик.НастройкиПользователей.ОсновноеПодразделение
);
// Если настройка найдена, заполним реквизит документа
Если ЗначениеЗаполнено(ОсновноеПодразделение) Тогда
Объект.Подразделение = ОсновноеПодразделение;
Иначе
// В качестве резервного варианта найдем первое попавшееся подразделение из справочника
ВыборкаПодразделений = Справочники.СтруктураПредприятия.Выбрать();
Если ВыборкаПодразделений.Следующий() Тогда
Объект.Подразделение = ВыборкаПодразделений.Ссылка;
КонецЕсли;
EndIf;
КонецЕсли;
КонецПроцедуры
Используя этот подход, мы полностью скрываем сложность ведения аналитики от конечного пользователя. Вся необходимая информация подставляется системой «под капотом», а План счетов и ключевые механизмы расчета себестоимости остаются нетронутыми и работают в штатном режиме.
Попытка отключить «Учет по подразделению» на счетах бухгалтерского учета в 1С:ERP — это опасное вмешательство в ядро системы, которое неизбежно приведет к системному сбою. Чтобы избежать дорогостоящего исправления ошибок в будущем, всегда отдавайте приоритет методологическим решениям:
Это позволит вам сохранить систему на стандартной поддержке, обеспечит легкое обновление и гарантирует корректность расчета себестоимости и формирования налоговой отчетности.