8.х Отображение таблицы значений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем anton-1981, 18 май 2015.

  1. TopicStarter Overlay
    anton-1981
    Offline

    anton-1981

    Регистрация:
    21 мар 2015
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Есть обычная произвольна форма А документа. Она вызывается программно из основной формы этого же документа. В форме А имеется реквизит ТаблицаЗначений. Эта таблица заполняется строками из табличной части документа находящейся в основной форме документа следующим образом:

    Код:
    Процедура СтрокаПоискаАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
        массивНайденныеСтроки = Новый Массив;
        ЭтаФорма.ИндикаторПоиска = 0;
       
        ЭтаФорма.тзСписокТоваров.Очистить();
       
        СтрокаПоиска = Нрег(Текст);
        ВсегоСтрок = тзТемп.Количество();
       
        Для каждого Строка Из тзТемп Цикл
            ТекСтрока = Строка.Наименование;
            Если Нрег(Лев(ТекСтрока, СтрДлина(СтрокаПоиска))) = СтрокаПоиска Тогда
                массивНайденныеСтроки.Добавить(ЭтаФорма.ВладелецФормы.Поставщик.Получить(Строка.НомерСтроки));
            КонецЕсли;
            ЭтаФорма.ИндикаторПоиска = Окр(Строка.НомерСтроки / ВсегоСтрок * 100, 0, 1);
        КонецЦикла;
       
        ЭтаФорма.тзСписокТоваров = ЭтаФорма.ВладелецФормы.Поставщик.Выгрузить(массивНайденныеСтроки, "Наименование,Производитель,НормаОтгрузка,Корпус,Цена1,Цена2,Цена3,Цена4");
       
    КонецПроцедуры
    
    Вопрос: Почему в отладчике эта таблица заполнена (ЭтаФорма.тзСписокТоваров), а в форме А только пустые строки (без данных).
    Заранее благодарен.
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.978
    Симпатии:
    397
    Баллы:
    104
    Потому что у нее нет колонок.
    Допишите в конце:
    Код:
    ЭтаФорма.тзСписокТоваров.СоздатьКолонки()
    anton-1981 нравится это.
  3. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Скучная процедура, еще и обращение к табличной части документа через элементы формы документа.
    Запросом было бы интереснее, тем более, что поиск идет по наименованию
    anton-1981 нравится это.
  4. TopicStarter Overlay
    anton-1981
    Offline

    anton-1981

    Регистрация:
    21 мар 2015
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Только нужно было дописать:
    ЭлементыФормы.тзСписокТоваров.СоздатьКолонки();
    А подскажите еще: у меня был код:

    Код:
    Процедура ПриОткрытии()
        тзТемп = Новый ТаблицаЗначений;
        тзТемп.Колонки.Добавить("НомерСтроки");
        тзТемп.Колонки.Добавить("Наименование");
       
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("НомерСтроки");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Наименование");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Производитель");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("НормаОтгрузки");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Корпус");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Цена1");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Цена2");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Цена3");
        ЭлементыФормы.тзСписокТоваров.Колонки.Добавить("Цена4");
        тзТемп = ЭтаФорма.ВладелецФормы.Поставщик.Выгрузить(,"Наименование,НомерСтроки");
    КонецПроцедуры
    
    Почему создание колонок в процедуре ПриОткрытии() не помогло?
    --- Объединение сообщений, 19 май 2015 ---
    Спасибо за совет, перепишем. :)
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Код:
    // Создаем таблицу значений по типу таб.части документа
    тзСписокТоваров = Поставщик.ВыгрузитьКолонки("НомерСтроки, Наименование, Производитель, НормаОтгрузки, Корпус, Цена1, Цена2, Цена3, Цена4");
    
    // Отображение созданной таблицы на форме
    ЭлементыФормы.тзСписокТоваров.СоздатьКолонки();
    
    // Наполнение таблицы
    ВсегоСтрок = Поставщик.Количество();
    Для Каждого СтрокаДанныхТабЧасти Из Поставщик Цикл
         ТекСтрока = ВРег(СтрокаДанныхТабЧасти.Наименование);
          Если Найти(ТекСтрока, ВРег(СтрокаПоиска)) <> 0 Тогда
               СтрокаТаблицыТоваров = тзСписокТоваров.Добавить();
               ЗаполнитьЗначенияСвойств(СтрокаТаблицыТоваров, СтрокаДанныхТабЧасти);
          КонецЕсли;
          ЭтаФорма.ИндикаторПоиска = Окр(СтрокаДанныхТабЧасти.НомерСтроки / ВсегоСтрок * 100, 0, 1);
    КонецЦикла;
    
    --- Объединение сообщений, 19 май 2015 ---
    В описанном случае, "тзСписокТоваров" - реквизит формы "А" с типом ТаблицаЗначений, при этом у "ЭлементыФормы.тзСписокТоваров" в источнике данных указан реквизит формы "тзСписокТоваров"

Поделиться этой страницей