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