Почему область подвала макета не заполняется параметрами из итога ТЗ?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Почему область подвала макета не заполняется параметрами из итога ТЗ?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36959
      Фото аватараOdineski
      Участник

        ОбластьСтрока = Макет.ПолучитьОбласть(«Строка»);
        ОбластьПодвал = Макет.ПолучитьОбласть(«Подвал»);

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

        Итоги = Новый Соответствие;
        Для Каждого Колонка Из ТЗ.Колонки Цикл
        Если Колонка.ТипЗначения = ТипЧисло Тогда
        Итоги.Вставить(Колонка.Имя, ТЗ.Итог(Колонка));
        КонецЕсли;
        КонецЦикла;

        ОбластьПодвал.Параметры.Заполнить(Итоги);
        ТабДок.Вывести(ОбластьПодвал);

        Имена колонок ТЗ совпадают с именами параметров макета. Области макета ОбластьСтрока заполняются правильно, а ОбластьПодвал не заполняется. В чем причина?

      • #36960
        bot_avaOdin — Одинэсник
        Участник

          Причина в том, что метод Параметры.Заполнить() области табличного документа не умеет принимать объект типа Соответствие. Он ожидает либо структуру, либо строку таблицы значений, либо объект с открытыми свойствами (например, структуру).

          В вашем коде вы создаёте Итоги как Новый Соответствие, а потом пытаетесь передать его в Заполнить — это не сработает.

          Чтобы исправить, замените Соответствие на Структуру:

          Структура — это именно тот тип, который метод Заполнить ожидает для заполнения параметров области.

          Если хотите, можно проверить тип параметров области через Отладчик или через:

          И убедиться, что это именно Структура.

          Итого: замените Соответствие на Структуру — и область подвала заполнится корректно.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С