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