При работе со специализированными решениями, такими как «1С:Бухгалтерия строительной организации» (БСО), часто возникает необходимость расширения функционала типовых или внешних отчетов. Рассмотрим ситуацию, когда в существующий отчет по капитальным вложениям (счет 08.03) нужно добавить данные из документа Корректировка поступления. Это критично для корректного отображения стоимости объектов строительства, когда после первичного поступления затрат происходят изменения в объемах или ценах по согласованию с поставщиком.
Прежде чем вносить изменения, проанализируем код запроса, на котором построен отчет. В представленной обработке запрос базируется на использовании временных таблиц (ВТ) и последующем их объединении. Основная логика строится на выборке данных из различных документов (Поступление товаров и услуг, ИмпСправкаОСтоимостиРаботКС3, ОперацияБух) и их соединении с данными РегистраБухгалтерии.Хозрасчетный.Обороты.
Ключевым узлом запроса является временная таблица с именем объед. Именно в нее стекаются данные из всех предварительно подготовленных таблиц через оператор ОБЪЕДИНИТЬ ВСЕ. Наша задача — подготовить аналогичный пакет данных для корректировок и включить его в этот поток.
Выясним, какие данные нам необходимы. Документ Корректировка поступления в БСО может содержать несколько табличных частей. Для счета 08.03 наиболее важны ОбъектыСтроительства и Услуги. Рассмотрим пример формирования временной таблицы для выборки из объектов строительства:
ВЫБРАТЬ
Корректировка.Ссылка КАК Ссылка,
Корректировка.ОбъектыСтроительства.ОбъектСтроительства КАК ОбъектСтроительства,
Корректировка.ОбъектыСтроительства.СтатьяЗатрат КАК СтатьяЗатрат,
Корректировка.ОбъектыСтроительства.Сумма КАК Сумма,
Корректировка.ОбъектыСтроительства.СуммаНДС КАК СуммаНДС
ПОМЕСТИТЬ ВТ_КорПостСтроительство
ИЗ
Документ.КорректировкаПоступления КАК Корректировка
ГДЕ
Корректировка.Проведен = ИСТИНА
И Корректировка.Дата МЕЖДУ &Дата00 И &Дата
;
Важный нюанс: Обратите внимание, что в документе корректировки суммы могут быть как положительными (увеличение стоимости), так и отрицательными (сторно). Поскольку отчет собирает обороты, нам важно получать именно разницу, которую документ вносит в учет. В типовых конфигурациях 1С Корректировка поступления хранит значения «До изменения» и «После изменения», но в проводки (и, следовательно, в отчет по оборотам) попадает именно дельта.
Для того чтобы данные корректировки корректно сопоставились с остальными данными отчета (аналитикой по счетам и субконто), необходимо выполнить соединение с виртуальной таблицей оборотов хозрасчетного регистра. В исходном коде отчета мы видим активное использование РегистрБухгалтерии.Хозрасчетный.Обороты с фильтрами по кодам счетов (например, 60.01).
Рассмотрим, как добавить пакет для корректировок, аналогично существующим блокам ТЧ2 или ТЧ12КС0:
ВЫБРАТЬ
ХозрасчетныйОбороты.Регистратор КАК Ссылка0,
ХозрасчетныйОбороты.Субконто3 КАК Субконто300,
ХозрасчетныйОбороты.Субконто1 КАК Субконто100,
ХозрасчетныйОбороты.Регистратор.ДоговорКонтрагента КАК РегистраторДоговорКонтрагента,
ХозрасчетныйОбороты.КорСчет КАК КорСчет,
ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
ХозрасчетныйОбороты.Субконто2 КАК Субконто200,
ХозрасчетныйОбороты.Период КАК Период
ПОМЕСТИТЬ ТЧ_Корректировки
ИЗ
ВТ_КорПостСтроительство КАК ВТ_КорПост
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата00, &Дата, Запись,
Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СтроительствоОбъектовОсновныхСредств), , ,
КорСчет.Код = "60.01") КАК ХозрасчетныйОбороты
ПО ВТ_КорПост.Ссылка = ХозрасчетныйОбороты.Регистратор
ГДЕ
ХозрасчетныйОбороты.Регистратор ЕСТЬ НЕ NULL
;
Теперь, когда у нас есть временная таблица ТЧ_Корректировки, нам нужно интегрировать ее в финальную таблицу объед. Проанализируем структуру полей в существующем блоке ОБЪЕДИНИТЬ ВСЕ. Нам необходимо строго соблюдать порядок и типы колонок:
Ссылка0 (Документ-регистратор)СуммаНДС0 (Сумма НДС)Субконто10 (Объект строительства)Субконто30 (Статья затрат / Субконто3)РегистраторДоговорКонтрагента (Договор)КорСчет (Корреспондирующий счет)Субконто20 (Дополнительная аналитика)СуммаНРег (Сумма не в рег. учете, если применимо)Сумма (Чистая сумма затрат)Период (Дата операции)Добавим наш фрагмент кода в конец секции формирования ВТ объед:
ИЗ
ТЧ12КС0 КАК ТЧ12КС0
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТЧ_Корректировки.Ссылка0,
0, -- Если НДС нужно считать отдельно, добавьте аналогичную логику через 19.КВ
ТЧ_Корректировки.Субконто100,
ТЧ_Корректировки.Субконто300,
ТЧ_Корректировки.РегистраторДоговорКонтрагента,
ТЧ_Корректировки.КорСчет,
ТЧ_Корректировки.Субконто200,
0,
ТЧ_Корректировки.Сум,
ТЧ_Корректировки.Период
ИЗ
ТЧ_Корректировки КАК ТЧ_Корректировки
Проанализируем работу с НДС в данном отчете. В коде используются временные таблицы НДСКВ и счет 19.КВ. При корректировке поступления сумма НДС также может измениться. Чтобы эти изменения попали в отчет, необходимо убедиться, что проводки документа Корректировка поступления по счету 19.КВ также подхватываются запросом.
Выясним причину, если суммы не сходятся: часто это связано с тем, что в Корректировке поступления НДС может отражаться не только по Дт 19, но и через восстановление НДС. Проверьте настройки счета НДСпоЗатратамНаКВ (19.08 или аналоги в БСО) в параметрах виртуальных таблиц оборотов.
Для того чтобы убедиться в правильности подключения документа, выполните следующие действия:
Ссылка0 должно иметь тип ДокументСсылка.КорректировкаПоступления.ВернутьОтчет в консоль, установите параметры &Дата00, &Дата и &ОбъектСтроительства. Это позволит увидеть промежуточные результаты во временных таблицах.КорСчет.Код = "60.01"). Если ваша корректировка делает проводки по счету 60.02 или 76, она может не попасть в выборку, если вы не добавите соответствующие условия ИЛИ.Таким образом, системный подход к расширению пакета запроса позволяет добавить неограниченное количество типов документов в отчет, сохраняя при этом общую структуру группировок и итогов по объектам строительства.