При разработке отчетов в 1С начинающие разработчики часто сталкиваются с ситуацией, когда данные в отчет не попадают или выводятся с нулевыми значениями. Давайте разберем по шагам, как диагностировать и устранить причину, если ваш отчет по РегистрНакопления не показывает сумму, хотя количество отображается корректно.
Первое правило отладки: чудес не бывает. Если отчет пуст, значит, данных нет либо в самом регистре, либо они не попадают в запрос. Давайте проверим физическое наличие данных.
РегистрНакопления.ОборотыНоменклатуры и откройте его список.Если в регистре накопления суммы нулевые, значит, ошибка кроется в модуле объекта вашего документа. Система 1С не обладает «интеллектом», чтобы автоматически догадаться, какую именно сумму из табличной части вы хотите записать в регистр. Вам нужно прописать это явно.
Рассмотрим стандартную структуру процедуры ОбработкаПроведения. Ошибка часто заключается в том, что в цикле обхода табличной части мы переносим только количество, забывая про сумму.
Посмотрим на пример правильного кода, который необходимо добавить в процедуру проведения:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОборотыНоменклатуры.Записывать = Истина;
Для Каждого ТекСтрока Из СписокНоменклатуры Цикл
Движение = Движения.ОборотыНоменклатуры.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрока.Номенклатура;
Движение.Количество = ТекСтрока.Количество;
// Важная строка, которая часто пропускается:
Движение.Сумма = ТекСтрока.Сумма;
КонецЦикла;
КонецПроцедуры
Убедитесь, что имя ТекСтрока.Сумма соответствует имени колонки в вашей табличной части, а Движение.Сумма — ресурсу регистра. После внесения изменений необходимо перепровести документы, чтобы данные записались в базу корректно.
Если данные в регистре есть, но отчет всё равно их не показывает, воспользуйтесь Консолью запросов. Это позволит отделить проблемы СКД от проблем получения данных.
Напишите простой запрос:
ВЫБРАТЬ
ОборотыНоменклатурыОбороты.Номенклатура КАК Номенклатура,
ОборотыНоменклатурыОбороты.КоличествоОборот КАК Количество,
ОборотыНоменклатурыОбороты.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.ОборотыНоменклатуры.Обороты КАК ОборотыНоменклатурыОбороты
Если в консоли запрос выводит пустой результат, проверьте параметры виртуальной таблицы. В виртуальных таблицах оборотных регистров важно правильно указывать период. Если параметры НачалоПериода и КонецПериода не заданы, система может пытаться получить данные, которых нет в текущем интервале, либо запрос выполняется некорректно.
Когда вы убедились, что запрос в консоли возвращает нужные цифры, переходим к настройке СКД. Основная проблема здесь — соответствие имен полей.
КАК) должны совпадать с именами полей в настройках отчета.Сумма в настройках СКД определено как ресурс. Система компоновки данных по умолчанию применяет к ресурсам агрегатную функцию СУММА(). Если этого не произошло, перейдите на вкладку Ресурсы и добавьте поле Сумма в список.Помните, что путь к решению любой проблемы в 1С всегда лежит по цепочке: Отчет -> Запрос -> Регистр -> Документ-регистратор -> Модуль объекта. Проходя по этой цепочке, вы неизбежно найдете, в каком именно звене данные «потерялись».