Почему отчет Ведомость по товарам в ценах номенклатуры удваивает данные или выдает ошибку запроса

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

При работе с типовыми отчетами в конфигурации 1С:Управление торговлей 11.4 (УТ 11.4), особенно с таким сложным инструментом, как Ведомость по товарам в ценах номенклатуры, разработчики часто сталкиваются с двумя типами проблем. Первая — это «магическое» удвоение количественных и суммовых показателей при попытке программно выгрузить результат в таблицу значений. Вторая — внезапный отказ отчета работать в новой базе с сообщением о некорректном запросе или пустой результат при наличии остатков. В этой статье мы подробно разберем, как устроены механизмы этого отчета и как победить эти ошибки.

Проблема 1: Удвоение данных при программном выводе в Таблицу Значений

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

Типовой код, который обычно используется для выгрузки, выглядит так:


ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

МакетКомпоновки = КомпоновщикМакета.Выполнить(
    СхемаКомпоновкиДанных,
    КомпоновщикНастроек.ПолучитьНастройки(),
    ДанныеРасшифровки
);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТаблицуЗначений;
ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Основная причина «двоения» заключается в том, что КомпоновщикМакета по умолчанию формирует макет, включающий в себя как детальные записи, так и итоги по группировкам. Когда ПроцессорВывода переносит эти данные в плоскую ТаблицаЗначений, он записывает туда каждую строку, которую сгенерировала система компоновки данных (СКД). В итоге в таблицу попадает и сама номенклатура, и итоговая строка по этой номенклатуре (если есть иерархия или группировки), что визуально выглядит как дублирование суммы.

Решение: Чтобы избежать дублирования, необходимо управлять структурой группировок в настройках компоновки. Если нам нужны только итоговые данные без детальных записей (или наоборот), мы должны явно указать это в КомпоновщикНастроек. Также важно обратить внимание на тип макета. Для получения «чистых» данных в ТЗ лучше использовать ТипМакетаКомпоновкиДанных.Данные, что минимизирует включение оформительских и избыточных итоговых строк.

Проблема 2: Ошибка «Запрос не корректен» в новых базах

Часто при разворачивании свежей базы УТ 11.4 или при подготовке к экзаменам (например, «1С:Специалист по УТ») отчет отказывается работать, выдавая ошибку запроса. Выясним причину этого поведения, проанализировав логику конфигурации.

Отчет ВедомостьПоТоварамВЦенахНоменклатуры не является простым запросом к регистру. Его текст формируется динамически в зависимости от Функциональных опций системы. Одной из критичных настроек является использование упаковок.

  1. Перейдем в раздел НСИ и администрирование — Номенклатура.
  2. Развернем подраздел Разрезы учета.
  3. Проверим флаг Упаковки номенклатуры.

Если эта опция выключена, программный код, формирующий текст запроса внутри СКД, может некорректно обрабатывать поля, связанные с единицами измерения и упаковками. В типовых решениях последних версий запрос часто жестко завязан на левое соединение с таблицами упаковок. Включение этой опции (даже если вы не планируете использовать упаковки в каждом товаре) восстанавливает работоспособность структуры запроса.

Проблема 3: Пустой лист отчета при наличии остатков

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

1. Настройка склада. В параметрах отчета часто указано: «Оценка запасов: По учетному виду цен склада». Это означает, что система идет в справочник Склады и ищет там заполненное поле ВидЦеныДляОценкиЗапасов. Если в карточке вашего склада это поле пустое, запрос не сможет сопоставить остатки товара с какой-либо ценой и выдаст NULL. В настройках отчета обычно стоит жесткий фильтр «Только товары с оценкой», который просто отсекает такие строки.

2. Регистрация цен. Даже если склад настроен, проверьте наличие проведенных документов Установка цен номенклатуры. Важно, чтобы дата документа была меньше или равна дате начала периода отчета. Если цены установлены позже, то на момент формирования отчета товар считается «неоцененным».

3. Соответствие характеристик. Если в базе включен учет по характеристикам, а цена установлена в целом на номенклатуру (без уточнения характеристики), отчет может не подхватить цену, если в схеме компоновки настроено строгое соответствие. Проанализируем настройки отбора: попробуйте временно отключить флаг Только товары с оценкой в расширенных настройках на вкладке «Отборы». Если после этого товар появился в отчете с нулевой ценой — значит, проблема именно в отсутствии записи в регистре Цены номенклатуры.

Советы для подготовки к экзамену «1С:Специалист»

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

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

Таким образом, мистика с «двоением» данных решается внимательной работой с группировками компоновщика, а работоспособность самого отчета напрямую зависит от правильной настройки функциональных опций и заполнения видов цен в карточках складов.

← На главную