В типовом решении 1С:Бухгалтерия предприятия 3.0 редакции ПРОФ возможность ведения учета по подразделениям на большинстве счетов (например, 50, 51, 41, 44) программно ограничена. Разработчики 1С заложили этот функционал как ключевое различие между версиями ПРОФ и КОРП. При попытке включить соответствующую константу система автоматически сбрасывает ее в значение Ложь. Однако существуют технические методы, позволяющие обойти эти ограничения. Рассмотрим подробно, как реализовать этот функционал и с какими трудностями можно столкнуться.
Прежде чем приступать к изменениям, проанализируем, как работает запрет. Основным «переключателем» является константа ВестиУчетПоПодразделениям, с которой связана одноименная функциональная опция. В модуле менеджера значения этой константы в процедуре ПередЗаписью жестко прописано условие, которое не дает установить значение в Истина, если конфигурация не определена как КОРП-версия.
Этот метод подходит для тех, кто готов снять конфигурацию с поддержки или внести изменения непосредственно в код. Разберем алгоритм по шагам:
ПередЗаписью. Проанализируем код: обычно там находится строка Значение = Ложь;. Нам необходимо закомментировать ее или изменить условие.Истина.Простого включения константы недостаточно для того, чтобы аналитика появилась в проводках. Нам потребуется активировать признак учета по подразделениям для конкретных счетов. Рассмотрим пример кода, который можно выполнить во внешней обработке:
// 1. Устанавливаем константу принудительно
Константы.ВестиУчетПоПодразделениям.Установить(Истина);
// 2. Включаем признак учета по подразделениям для нужного счета (например, Касса)
СчетОбъект = ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01").ПолучитьОбъект();
СчетОбъект.УчетПоПодразделениям = Истина;
СчетОбъект.Записать();
// Аналогично для счета 44 или других необходимых счетов
Счет44 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.01").ПолучитьОбъект();
Счет44.УчетПоПодразделениям = Истина;
Счет44.Записать();
Важный нюанс: После этих действий в документах появится поле «Подразделение», и оно начнется записываться в регистр бухгалтерии. Однако вы можете столкнуться с тем, что при проведении документов система перестанет «видеть» остатки.
Разберем ситуацию: вы включили учет по подразделениям на 41 счете, но при попытке продать товар программа выдает ошибку об отсутствии остатка, хотя поступление было оформлено. Это происходит из-за того, что типовые запросы в ПРОФ-версии игнорируют измерение Подразделение или передают туда пустую ссылку.
Проанализируем общий модуль УчетТоваров. Нам необходимо найти функцию ПолучитьОстаткиТоваров. В ней формируется запрос к виртуальным таблицам остатков. Если учет по подразделениям включен, необходимо убедиться, что параметр Подразделение корректно передается в запрос, а не отсекается логикой «версионности» программы.
Чтобы не снимать основную конфигурацию с поддержки, лучше всего использовать механизм расширений. Мы можем переопределить функцию, которая отвечает за проверку версии программы. Выясним причину ограничений: многие модули обращаются к функции ЭтоВерсияКОРП().
Рассмотрим пример переопределения в расширении для процедуры ОпределитьДоступностьФункциональностиКОРП в модуле ВариантыПриложенийПереопределяемый:
&После("ОпределитьДоступностьФункциональностиКОРП")
Процедура Расш_ОпределитьДоступностьФункциональностиКОРП(ФункциональностьДоступна)
// Принудительно возвращаем Истина, чтобы система считала, что нам доступны функции КОРП
ФункциональностьДоступна = Истина;
КонецПроцедуры
Также через расширение можно добавить реквизит Подразделение на формы документов (например, РеализацияТоваровУслуг, ПоступлениеТоваровУслуг), если они не отображаются автоматически из-за функциональных опций.
Рассмотрим критически важные аспекты, которые часто упускаются из виду при таком «взломе» функционала:
НДС предъявленный) не имеют измерения Подразделение. Если вы начнете вести учет по подразделениям на счетах 10 или 41, возникнет разрыв между данными бухгалтерского учета и регистрами НДС. Это приведет к ошибкам при формировании Книги покупок и Книги продаж.УчетТоваров) потребует ручного переноса изменений при каждом обновлении конфигурации. Использование расширений упрощает этот процесс, но не гарантирует 100% стабильности при изменении структуры метаданных в новых релизах от 1С.Если вам нужно видеть подразделение только на определенных счетах (например, на 50.01 для разделения касс), иногда проще и безопаснее добавить новое Субконто с типом СправочникСсылка.ПодразделенияОрганизаций на нужные счета. Это не затронет системные механизмы «подразделений» (которые являются измерениями регистров), не сломает типовые запросы по остаткам и позволит формировать оборотно-сальдовую ведомость в нужном разрезе без серьезного вмешательства в ядро системы.