Откуда отчет Ведомость товаров на складах в УТ 10.3 берет данные и как посмотреть его запрос

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

В конфигурации 1С:Управление торговлей 10.3 отчет «Ведомость товаров на складах» является одним из ключевых инструментов для анализа складских остатков. Однако начинающие разработчики часто сталкиваются с трудностью: при попытке изучить код отчета в Конфигураторе они не находят привычного текста запроса в схеме компоновки данных или в модуле. Разберем подробно, как работает этот отчет, из каких регистров он извлекает информацию и как получить его итоговый текст запроса.

Механизм работы Универсального отчета

Для начала проанализируем архитектуру этого отчета. В отличие от современных конфигураций на управляемых формах, где используется Система компоновки данных (СКД), в УТ 10.3 большинство типовых отчетов построено на базе Универсального отчета. Этот механизм использует объект ПостроительОтчета, который формирует текст запроса динамически в момент выполнения или инициализации.

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

Основной источник данных: регистр Товары на складах

Отвечая на главный вопрос — откуда берутся данные — рассмотрим основной регистр накопления. Отчет строится по данным регистра накопления ТоварыНаСкладах. Это регистр остатков, который хранит информацию в количественном выражении в следующих разрезах:

  1. Склад — место хранения товара.
  2. Номенклатура — конкретная позиция товара.
  3. Характеристика номенклатуры — цвет, размер и т.д.
  4. Серия номенклатуры — серийные номера, сертификаты или сроки годности.
  5. Качество — состояние товара (Новый, Брак, Подлежит восстановлению).

Важно понимать, что этот отчет показывает именно физическое наличие товара. Если вам необходима информация о себестоимости или финансовых показателях, необходимо обращаться к другому отчету — «Ведомость по партиям товаров на складах», который работает с регистром ПартииТоваровНаСкладах.

Как найти и проанализировать текст запроса

Поскольку запрос формируется программно, его текст можно «перехватить» в коде или посмотреть на примере уже сформированного построителем варианта. Рассмотрим структуру типового запроса, который генерирует УниверсальныйОтчет для данного случая. В нем используются виртуальные таблицы ОстаткиИОбороты.

Ниже приведен пример текста запроса, который формируется системой:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ИсточникДанных.Склад КАК Склад,
    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Склад) КАК СкладПредставление,
    ИсточникДанных.Номенклатура КАК Номенклатура,
    ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
    ИсточникДанных.КоличествоПриход КАК КоличествоПриход,
    ИсточникДанных.КоличествоРасход КАК КоличествоРасход,
    ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    // Вычисление данных в разных единицах измерения
    ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоЕдиницОтчетовНачальныйОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {&Периодичность},, {Склад.*, Номенклатура.*}) КАК ИсточникДанных

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

Особенности расчета единиц измерения

Разберем подробнее, как отчет работает с коэффициентами. В запросе мы видим математические операции с полями Коэффициент. В УТ 10.3 товар может учитываться в разных единицах измерения:

  1. Базовая единица — минимальная единица (например, «штука»).
  2. Единица хранения остатков — единица, в которой ведутся записи в регистрах.
  3. Единица для отчетов — единица, которую удобно видеть пользователю (например, «паллета» или «коробка»).

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

Где именно в коде искать инициализацию?

Если вам нужно внести изменения или добавить новое поле, выполним следующие шаги в Конфигураторе:

  1. Откроем модуль объекта отчета ВедомостьТоварыНаСкладах.
  2. Найдем процедуру УстановитьНачальныеНастройкиУпр.
  3. Внутри нее увидим вызов: УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";.
  4. Также там вызывается процедура УниверсальныйОтчет.УстановитьИменаРегистров("ТоварыНаСкладах");.

Именно установка свойства ИмяРегистра заставляет универсальный механизм «подтянуть» метаданные регистра и сформировать базовый запрос. Если вы хотите увидеть итоговый текст запроса во время выполнения программы, можно воспользоваться точкой останова на строке ПостроительОтчета.Выполнить() (внутри общего модуля УниверсальныйОтчет) и вычислить выражение ПостроительОтчета.Текст.

Различие между «Товары на складах» и другими регистрами

Выясним причину, почему иногда данные в отчете могут не совпадать с ожиданиями пользователя. В УТ 10.3 существует несколько похожих регистров:

  1. Товары на складах — основной количественный учет.
  2. Товары в рознице — используется, если склад имеет тип «Розничный» или «НТТ». Если ваш товар лежит в магазине, ведомость может обращаться к этому регистру.
  3. Товары к передаче со складов — используется при ордерной схеме или внутренних перемещениях между организациями.

В типовом отчете «Ведомость товаров на складах» разработчики 1С предусмотрели объединение данных по разным типам складов. В тексте запроса часто можно встретить конструкцию ОБЪЕДИНИТЬ ВСЕ, где собираются данные из регистра ТоварыНаСкладах и ТоварыВРознице, чтобы предоставить пользователю полную картину по всей компании.

Практические советы по настройке

Рассмотрим ситуацию, когда отчет не показывает нужные данные. Важно проверить настройки параметров:

Таким образом, мы проанализировали, что отчет является сложным динамическим конструктором. Его фундамент — регистр ТоварыНаСкладах, а инструмент извлечения — Построитель отчета в составе Универсального отчета. Понимание этой структуры позволяет разработчику быстро находить причины расхождения данных и кастомизировать отчет под нужды бизнеса.

← На главную