Почему номенклатура исчезает из отчета «Ведомость по товарам на складах» при возврате поставщику и как это исправить?

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

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

Причины такого поведения платформы 1С

Проанализируем, почему платформа 1С:Предприятие исключает данные позиции из итоговой таблицы:

  1. Агрегация в виртуальной таблице. Типовой отчет «Ведомость по товарам на складах» строится на базе виртуальной таблицы РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты.
  2. Сворачивание итогов по группировкам. Если в отчете задана группировка только по полю Номенклатура (без деталей по времени или документам), система рассчитывает итоговые показатели за весь выбранный период:
    • Начальный остаток = 0
    • Приход = 2
    • Расход = 2
    • Конечный остаток = 0
  3. Исключение нулевых строк. Система компоновки данных (СКД) и Построитель отчетов по умолчанию автоматически отсекают строки, в которых итоговые остатки и обороты равны нулю или не имеют движений. Платформа расценивает такую позицию как не имеющую итогового результата за указанный интервал времени.

Способы отображения движений в отчете

Разберем несколько способов, с помощью которых можно вывести движения товаров в отчете даже при условии равенства прихода и расхода.

Способ 1. Добавление группировки по регистратору

Чтобы увидеть документы, сформировавшие движения, достаточно добавить в структуру группировок документ-регистратор:

  1. Откроем отчет «Ведомость по товарам на складах».
  2. Перейдем в настройки отчета (кнопка «Настройка»).
  3. На вкладке группировок добавим поле Регистратор подчиненным элементом к полю Номенклатура.
  4. Сформируем отчет.

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

Способ 2. Детализация по периодам (День, Месяц)

Если подробный список документов не требуется, но важно видеть наличие движений, добавим временную детализацию:

  1. Зайдем в настройки группировок отчета.
  2. Добавим группировку по полю ПериодДень или ПериодМесяц.
  3. Переформируем отчет.

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

Способ 3. Доработка запроса (для разработчиков)

Если ставится задача выводить абсолютно всю номенклатуру из справочника, включая позиции с нулевыми остатками и отсутствием оборотов, понадобится изменить запрос отчета. Для этого связывают справочник номенклатуры с регистром с помощью левого соединения:


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

Использование таблицы Справочник.Номенклатура в качестве первой таблицы запроса гарантирует, что позиция сохранится в итоговом отчете независимо от значений ресурсов регистра.

← На главную