Как в 1С:УПП 1.3 отобрать поступления и реализации только по счету 41.01?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

При разработке отчетов в конфигурации УПП 1.3 (Управление производственным предприятием) часто возникает задача проанализировать движение товаров по конкретному счету бухгалтерского учета, например, 41.01 «Товары на складах». Часто начинающие разработчики пытаются делать выборку напрямую из документов ПоступлениеТоваровУслуг или РеализацияТоваровУслуг, однако это не является оптимальным решением.

В этой статье мы разберем, почему работа с регистрами эффективнее перебора документов, и как правильно составить запрос для получения данных по счету 41.01.

Почему нельзя делать выборку только по документам

Использование табличных частей документов для анализа оборотов по счету имеет несколько существенных недостатков:

  1. Производительность: Обращение к табличным частям документов происходит медленнее, чем к индексированным таблицам регистров.
  2. Достоверность данных: В самом документе может быть указан один счет, но при проведении (из-за специфики настроек или работы обработок проведения) проводка может уйти на другой счет.
  3. Сложность фильтрации: Документ может содержать строки как по 41 счету, так и по 10 или 21. Придется накладывать сложные условия на каждую строку.
  4. Отсутствие данных о проведении: Запрос по документам может подтянуть непроведенные или помеченные на удаление объекты, если не поставить соответствующие фильтры.

Использование регистра бухгалтерии «Хозрасчетный»

Самый правильный способ получить данные по конкретному счету — обратиться к регистру бухгалтерии. Рассмотрим ситуацию, когда нам нужно сопоставить, сколько товара поступило на 41.01 и сколько из этого поступившего объема было продано за тот же период.

Проанализируем структуру запроса к виртуальной таблице Обороты регистра Хозрасчетный. Нам важно учитывать, что в УПП в регистре бухгалтерии хранятся только те движения, которые отражены в БУ (бухгалтерском учете).

Рассмотрим пример построения запроса с использованием временных таблиц для разделения прихода и расхода:


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

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

Важный момент: В параметрах виртуальной таблицы мы сразу ограничиваем выборку счетом ПланСчетов.Хозрасчетный.ТоварыНаСкладах (это и есть предопределенный счет 41.01). Использование КоличествоОборотДт позволяет получить объем поступления, а КоличествоОборотКт — объем списания (продажи).

Особенности работы с субконто и аналитикой

При написании запросов к регистру бухгалтерии в УПП следует помнить о следующих правилах:

Альтернативный вариант: Использование регистров накопления

Если в УПП используется классический партионный учет, данные о поступлениях можно собирать из регистра накопления ПартииТоваровНаСкладах с видом учета ОтражатьВБухгалтерскомУчете = ИСТИНА. Этот регистр более «легкий» для системы, чем регистр бухгалтерии.

Проанализируем ситуацию: если вам нужно видеть не просто обороты по счету, а именно складские остатки в разрезе счетов, этот регистр подойдет лучше. Однако помните, что счет учета в нем хранится как реквизит, и его нужно проверять в условии запроса:


ВЫБРАТЬ
    ПартииТоваров.Номенклатура,
    ПартииТоваров.КоличествоОборот
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&НачДата, &КонДата, , СчетУчета = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)) КАК ПартииТоваров

Однако, если задача стоит жестко — «Анализ поступлений только по 41.01», и вы не уверены, что все документы делают движения по партиям (например, услуги или специфические операции), лучше придерживаться регистра бухгалтерии, так как он является первоисточником для регламентированной отчетности.

Подведение итогов

Для эффективного анализа поступлений по счету 41.01 в УПП 1.3:

  1. Используйте виртуальные таблицы регистра бухгалтерии (Обороты), а не выборки из документов.
  2. Накладывайте фильтр по счету в параметрах виртуальной таблицы, а не в блоке ГДЕ, для ускорения работы запроса.
  3. Если требуется разделить приход и расход, используйте временные таблицы с предварительной группировкой по номенклатуре во избежание дублирования данных.
  4. Учитывайте специфику настроек учета (РАУЗ или Партионка) при выборе дополнительных регистров для анализа.
← На главную