Каким образом в 1С:Бухгалтерия 3.0 ПРОФ установить учет в разрезе подразделений?

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

В типовом решении 1С:Бухгалтерия предприятия 3.0 редакции ПРОФ возможность ведения учета по подразделениям на большинстве счетов (например, 50, 51, 41, 44) программно ограничена. Разработчики 1С заложили этот функционал как ключевое различие между версиями ПРОФ и КОРП. При попытке включить соответствующую константу система автоматически сбрасывает ее в значение Ложь. Однако существуют технические методы, позволяющие обойти эти ограничения. Рассмотрим подробно, как реализовать этот функционал и с какими трудностями можно столкнуться.

Анализ механизмов ограничения функционала

Прежде чем приступать к изменениям, проанализируем, как работает запрет. Основным «переключателем» является константа ВестиУчетПоПодразделениям, с которой связана одноименная функциональная опция. В модуле менеджера значения этой константы в процедуре ПередЗаписью жестко прописано условие, которое не дает установить значение в Истина, если конфигурация не определена как КОРП-версия.

Способ 1: Прямая модификация конфигурации (традиционный метод)

Этот метод подходит для тех, кто готов снять конфигурацию с поддержки или внести изменения непосредственно в код. Разберем алгоритм по шагам:

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

Способ 2: Программная активация и настройка Плана счетов

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


// 1. Устанавливаем константу принудительно
Константы.ВестиУчетПоПодразделениям.Установить(Истина);

// 2. Включаем признак учета по подразделениям для нужного счета (например, Касса)
СчетОбъект = ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01").ПолучитьОбъект();
СчетОбъект.УчетПоПодразделениям = Истина;
СчетОбъект.Записать();

// Аналогично для счета 44 или других необходимых счетов
Счет44 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.01").ПолучитьОбъект();
Счет44.УчетПоПодразделениям = Истина;
Счет44.Записать();

Важный нюанс: После этих действий в документах появится поле «Подразделение», и оно начнется записываться в регистр бухгалтерии. Однако вы можете столкнуться с тем, что при проведении документов система перестанет «видеть» остатки.

Способ 3: Решение проблемы списания остатков (Учет товаров)

Разберем ситуацию: вы включили учет по подразделениям на 41 счете, но при попытке продать товар программа выдает ошибку об отсутствии остатка, хотя поступление было оформлено. Это происходит из-за того, что типовые запросы в ПРОФ-версии игнорируют измерение Подразделение или передают туда пустую ссылку.

Проанализируем общий модуль УчетТоваров. Нам необходимо найти функцию ПолучитьОстаткиТоваров. В ней формируется запрос к виртуальным таблицам остатков. Если учет по подразделениям включен, необходимо убедиться, что параметр Подразделение корректно передается в запрос, а не отсекается логикой «версионности» программы.

Способ 4: Использование расширений (современный подход)

Чтобы не снимать основную конфигурацию с поддержки, лучше всего использовать механизм расширений. Мы можем переопределить функцию, которая отвечает за проверку версии программы. Выясним причину ограничений: многие модули обращаются к функции ЭтоВерсияКОРП().

Рассмотрим пример переопределения в расширении для процедуры ОпределитьДоступностьФункциональностиКОРП в модуле ВариантыПриложенийПереопределяемый:


&После("ОпределитьДоступностьФункциональностиКОРП")
Процедура Расш_ОпределитьДоступностьФункциональностиКОРП(ФункциональностьДоступна)
    // Принудительно возвращаем Истина, чтобы система считала, что нам доступны функции КОРП
    ФункциональностьДоступна = Истина;
КонецПроцедуры

Также через расширение можно добавить реквизит Подразделение на формы документов (например, РеализацияТоваровУслуг, ПоступлениеТоваровУслуг), если они не отображаются автоматически из-за функциональных опций.

Риски и скрытые проблемы решения

Рассмотрим критически важные аспекты, которые часто упускаются из виду при таком «взломе» функционала:

  1. Учет НДС: В версии ПРОФ регистры накопления НДС (например, НДС предъявленный) не имеют измерения Подразделение. Если вы начнете вести учет по подразделениям на счетах 10 или 41, возникнет разрыв между данными бухгалтерского учета и регистрами НДС. Это приведет к ошибкам при формировании Книги покупок и Книги продаж.
  2. Закрытие месяца: Алгоритмы закрытия счетов затрат (20, 25, 26, 44) в ПРОФ-версии не рассчитаны на распределение в разрезе подразделений, если это не предусмотрено стандартной методологией. Проанализируем работу обработки «Закрытие месяца»: она может просто игнорировать ваши подразделения, оставляя сальдо на конец периода.
  3. Обновления: Любая правка кода в общих модулях (как в случае с УчетТоваров) потребует ручного переноса изменений при каждом обновлении конфигурации. Использование расширений упрощает этот процесс, но не гарантирует 100% стабильности при изменении структуры метаданных в новых релизах от 1С.
  4. Лицензионная чистота: Помните, что искусственное включение функций КОРП в версии ПРОФ может быть расценено как нарушение лицензионного соглашения.

Альтернативный вариант: Новое субконто

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

← На главную