Почему в отчете 1С не заполняется ресурс «Сумма» и как это исправить?

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

При разработке отчетов в 1С начинающие разработчики часто сталкиваются с ситуацией, когда данные в отчет не попадают или выводятся с нулевыми значениями. Давайте разберем по шагам, как диагностировать и устранить причину, если ваш отчет по РегистрНакопления не показывает сумму, хотя количество отображается корректно.

Шаг 1: Диагностика данных в регистре

Первое правило отладки: чудес не бывает. Если отчет пуст, значит, данных нет либо в самом регистре, либо они не попадают в запрос. Давайте проверим физическое наличие данных.

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

Шаг 2: Проверка модуля проведения документа

Если в регистре накопления суммы нулевые, значит, ошибка кроется в модуле объекта вашего документа. Система 1С не обладает «интеллектом», чтобы автоматически догадаться, какую именно сумму из табличной части вы хотите записать в регистр. Вам нужно прописать это явно.

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

Посмотрим на пример правильного кода, который необходимо добавить в процедуру проведения:


Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.ОборотыНоменклатуры.Записывать = Истина;
    Для Каждого ТекСтрока Из СписокНоменклатуры Цикл
        Движение = Движения.ОборотыНоменклатуры.Добавить();
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрока.Номенклатура;
        Движение.Количество = ТекСтрока.Количество;
        // Важная строка, которая часто пропускается:
        Движение.Сумма = ТекСтрока.Сумма; 
    КонецЦикла;
КонецПроцедуры

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

Шаг 3: Проверка запроса в консоли запросов

Если данные в регистре есть, но отчет всё равно их не показывает, воспользуйтесь Консолью запросов. Это позволит отделить проблемы СКД от проблем получения данных.

Напишите простой запрос:


ВЫБРАТЬ
    ОборотыНоменклатурыОбороты.Номенклатура КАК Номенклатура,
    ОборотыНоменклатурыОбороты.КоличествоОборот КАК Количество,
    ОборотыНоменклатурыОбороты.СуммаОборот КАК Сумма
ИЗ
    РегистрНакопления.ОборотыНоменклатуры.Обороты КАК ОборотыНоменклатурыОбороты

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

Шаг 4: Настройка СКД

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

  1. Проверьте вкладку Наборы данных: имена полей в запросе (псевдонимы после КАК) должны совпадать с именами полей в настройках отчета.
  2. Убедитесь, что поле Сумма в настройках СКД определено как ресурс. Система компоновки данных по умолчанию применяет к ресурсам агрегатную функцию СУММА(). Если этого не произошло, перейдите на вкладку Ресурсы и добавьте поле Сумма в список.

Помните, что путь к решению любой проблемы в 1С всегда лежит по цепочке: Отчет -> Запрос -> Регистр -> Документ-регистратор -> Модуль объекта. Проходя по этой цепочке, вы неизбежно найдете, в каком именно звене данные «потерялись».

← На главную