При решении задач анализа данных основных средств (ОС) в конфигурации «1С:Управление производственным предприятием» нередко требуется сформировать единый список объектов, где наряду с кодом (инвентарным номером) выводятся счет бухгалтерского учета и наименование способа отражения расходов по амортизации. Рассмотрим подробнее, как извлечь эти сведения с помощью консоли запросов и почему обращение к документам начальных остатков может давать искаженную картину учета.
Если конфигурация только запущена в эксплуатацию или требуется проанализировать конкретную входящую партию объектов, внесенных при переносе остатков, запрос строится напрямую к табличной части документа. Разберем типичную ошибку начинающих разработчиков: при обращении к шапке документа вместо табличной части результат формируется некорректно либо возвращает пустые поля строк.
Выясним причину: данные по конкретным инвентарным объектам хранятся в табличной части ОС документа ВводНачальныхОстатковОС. Соответственно, источником запроса должна выступать именно табличная часть. Также в обработке «Консоль запросов» важно переключить режим отображения результата: в поле «Способ выгрузки» выбираем Таблица (вместо «Дерево»).
Посмотрим на пример текста запроса к документу ввода остатков:
ВЫБРАТЬ
ВводОС.СчетУчетаБУ КАК СчетУчета,
ВводОС.СпособОтраженияРасходовПоАмортизации.Наименование КАК СпособОтраженияРасходов,
ВводОС.ОсновноеСредство.Код КАК ИнвентарныйНомер,
ВводОС.ОсновноеСредство.Наименование КАК ОсновноеСредство
ИЗ
Документ.ВводНачальныхОстатковОС.ОС КАК ВводОС
ГДЕ
ВводОС.СчетУчетаБУ = &СчетУчетаБУ
В параметрах запроса передаем требуемый счет бухгалтерского учета (например, субсчет счета 01). Этот запрос выдает плоскую таблицу, однако он имеет серьезные архитектурные ограничения.
Проанализируем ситуацию, с которой неизбежно сталкивается база данных в ходе реальной эксплуатации. Прямой опрос табличной части ВводНачальныхОстатковОС приводит к грубым ошибкам отчетности по следующим причинам:
ПринятиеКУчетуОС, в выборку не попадут вовсе.ИзменениеСпособовОтраженияРасходовПоАмортизацииОС. Табличная часть старого документа ввода остатков останется неизменной и покажет устаревшие реквизиты.Чтобы получить достоверный срез данных на произвольную дату, обратимся к регистрам сведений, в которых подсистема учета ОС хранит историю параметров. Разберем по шагам структуру правильного запроса:
СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет.СчетаБухгалтерскогоУчетаОС.СостоянияОСОрганизаций либо по остаткам регистра накопления СтоимостьОСБухгалтерскийУчет.ОсновныеСредства.Посмотрим на пример универсального запроса, возвращающего актуальные данные на определенную дату:
ВЫБРАТЬ
СчетаОС.СчетУчета КАК СчетУчета,
СпособыАмортизации.СпособОтраженияРасходов.Наименование КАК СпособОтраженияРасходов,
СпрОС.Код КАК ИнвентарныйНомер,
СпрОС.Ссылка КАК ОсновноеСредство
ИЗ
Справочник.ОсновныеСредства КАК СпрОС
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних(&Период, Организация = &Организация) КАК СчетаОС
ПО СпрОС.Ссылка = СчетаОС.ОсновноеСредство
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет.СрезПоследних(&Период, Организация = &Организация) КАК СпособыАмортизации
ПО СпрОС.Ссылка = СпособыАмортизации.ОсновноеСредство
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОСОрганизаций.СрезПоследних(&Период, Организация = &Организация) КАК СостоянияОС
ПО СпрОС.Ссылка = СостоянияОС.ОсновноеСредство
ГДЕ
СчетаОС.СчетУчета В ИЕРАРХИИ(&СчетУчетаБУ)
И СостоянияОС.Состояние = ЗНАЧЕНИЕ(Перечисление.ВидыСостоянийОС.ПринятоКУчету)
Такой подход гарантирует, что в итоговую таблицу попадут только реально числящиеся на балансе объекты с действующими аналитическими признаками.
Нередко разработчики пытаются настроить стандартный «Универсальный отчет» по регистру накопления СтоимостьОСБухгалтерскийУчет, чтобы добавить колонку со способом начисления амортизации. Однако в самом финансовом регистре накопления этот реквизит отсутствует — там зафиксированы лишь стоимостные показатели (остаточная стоимость, начисленная амортизация) и регистраторы.
Если необходимо получить полноценный отчет без написания отдельного программного кода с нуля, рассмотрим два штатных пути:
ОстаткиИОбороты регистра накопления СтоимостьОСБухгалтерскийУчет со срезами последних регистров сведений СчетаБухгалтерскогоУчетаОС и СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет. Связывание наборов данных по полю ОсновноеСредство позволяет свободно группировать финансовые итоги амортизации по направлениям затрат.