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