Версия для печати темы (https://pro1c.org.ua/index.php?s=552a660a4262db3902fbb2cdb4aa8aca&showtopic=20519)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не загружается в таблицу значений

Автор: kosalex 31.10.14, 21:30

Вечер добрый, есть обработка, считает количетсво вагонов в РС и выгружает в таблицу.

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КФЗПростойВагона.НомерВагона
        |ИЗ
        |    РегистрСведений.КФЗПростойВагона КАК КФЗПростойВагона";

    РезультатЗапроса = Запрос.Выполнить();
    
    ТЗДанные = РезультатЗапроса.Выгрузить();
    
    ТЗРезультат = Новый ТаблицаЗначений;
    
    
    ТЗРезультат.Колонки.Добавить("НомерВагона",Новый ОписаниеТипов("Строка"),"Номер вагона",);
    
    Колонка = ТЗДанные.ВыгрузитьКолонку("НомерВагона");
    
    ТЗРезультат.ЗагрузитьКолонку(Колонка,"НомерВагона"); //ПОСЛЕ ЭТОЙ СТРОКИ ТЗРезультат - пусто! Хотя в "Колонка" - массив, данные есть!
    
    ТЗВывод = Новый ТаблицаЗначений;
    ТЗВывод.Колонки.Добавить("НомерВагона",,"Номер вагона",);
    ТЗВывод.Колонки.Добавить("Количество",,"Количество",);
    
    ТЗДанные.Свернуть("НомерВагона");
    
    Для Каждого СтрокаТЗДанные Из ТЗДанные Цикл
        Для Каждого СтрокаТЗРезультат Из ТЗРезультат Цикл
            Если СтрокаТЗДанные.НомерВагона = СтрокаТЗРезультат.НомерВагона Тогда                
                    СтрокаТЗВывод = ТЗВывод.Добавить();
                    СтрокаТЗВывод.НомерВагона = СтрокаТЗДанные.НомерВагона;
                    СтрокаТЗВывод.Количество = 1;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    ТЗВывод.Свернуть("НомерВагона","Количество");
    
    Информация.Загрузить(ТЗВывод);
КонецПроцедуры


Мое решение можно реализовать по другому, проще, что я и сделал:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КФЗПростойВагона.НомерВагона КАК НомерВагона,
        |    СУММА(1) КАК Количество
        |ИЗ
        |    РегистрСведений.КФЗПростойВагона КАК КФЗПростойВагона
        |
        |СГРУППИРОВАТЬ ПО
        |    КФЗПростойВагона.НомерВагона";

    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Информация.Загрузить(РезультатЗапроса);
КонецПроцедуры


Но вопрос по первому куску кода остался, что сделал не так, почему не загружаются значения?

Автор: Father Fury 01.11.14, 9:41

Много лишнего.

Цитата(Father Fury @ 01.11.14, 9:38) *
Много лишнего, ошибок, глумления, ....


Автор: ignsv 01.11.14, 11:22

Цитата(kosalex @ 31.10.14, 21:30) *
ТЗРезультат.ЗагрузитьКолонку(Колонка,"НомерВагона");


ЗагрузитьКолонку() - не создает строки в ТЗРезультат, посмотрите пример в СП + протестируйте предварительно создав пустые строки

Автор: sava1 01.11.14, 18:36

Цитата(ignsv @ 01.11.14, 12:22) *
ЗагрузитьКолонку() - не создает строки в ТЗРезультат

Плюс значение надо типизировать

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua