При работе с типовым отчетом «Ведомость товаров на складах» в конфигурации «Управление торговлей 10.3» многие разработчики и пользователи сталкиваются с тем, что при указании периода формирования отчета в списке детальных записей появляется странная «пустая» строка. Давайте разберемся, почему это происходит и что это за данные на самом деле.
Первое, что необходимо уяснить: строка, которую вы видите, не является пустой в буквальном смысле. В отчетах, построенных на механизме ПостроительОтчета, в одной строке могут выводиться несколько параметров: склад, номенклатура и сам регистратор (документ движения). Когда отчет выводит данные по регистру накопления, он отображает не только приход и расход за период, но и начальный остаток.
Начальный остаток — это состояние регистра на момент времени, предшествующий началу указанного вами периода. Поскольку у этого остатка нет конкретного документа-регистратора (он является результатом накопленных движений прошлых периодов), поле «Регистратор» в этой строке остается незаполненным. Система отображает его, чтобы итоговый баланс (Начальный остаток + Приход - Расход = Конечный остаток) сходился математически.
Рассмотрим разницу в поведении системы. Когда дата начала и конца периода не указана или задана «по умолчанию», логика работы ПостроительОтчета часто приводит к тому, что детальные записи сжимаются или фильтруются иным образом. В коде отчета УТ 10.3 используются параметры ДатаНач и ДатаКон, которые для обеспечения корректности передаются через Граница:
ПостроительОтчета.Параметры.Вставить("ДатаНач", ?(ДатаНач = Дата('00010101000000'), ДатаНач, Новый Граница(НачалоДня(ДатаНач), ВидГраницы.Включая)));
ПостроительОтчета.Параметры.Вставить("ДатаКон", ?(ДатаКон = Дата('00010101000000'), ДатаКон, Новый Граница(КонецДня(ДатаКон), ВидГраницы.Включая)));
Когда мы жестко задаем период, мы принуждаем систему строго рассчитать остатки на конкретную дату. В этот момент «начальный остаток» становится отдельной значимой записью, которую ПостроительОтчета обязан вывести, если включена опция вывода детальных записей (регистраторов).
Если присутствие таких строк мешает анализу, давайте рассмотрим несколько способов, как можно привести отчет к «красивому» виду:
Регистратор не заполнен или равен НЕОПРЕДЕЛЕНО. Однако будьте осторожны: это приведет к тому, что вы не увидите начальный остаток в отчете.ПостроительОтчета. Если задача требует гибкости, рекомендуем перевести отчет на Систему компоновки данных (СКД). В СКД управление начальными остатками реализовано гораздо элегантнее: их можно выводить в отдельные колонки, что исключает появление лишних строк в реестре документов.Таким образом, возникновение данной ситуации — это не ошибка в коде и не сбой базы данных, а особенность работы движка 1С 8.1/8.2, используемого в старых типовых конфигурациях. При анализе таких отчетов всегда помните, что «пустая строка» — это техническая запись начального сальдо, которая обеспечивает корректность отображения остатков по товарам.