Имя: Пароль:
1C
 
Выгрузка результата запроса в таблицу значений
0 Natali15
 
05.08.22
16:13
Запрос1 = Новый Запрос("
        |ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
        |    РеализацияТоваровУслуг.НаправлениеДеятельности КАК НаправлениеДеятельности,
        |    РеализацияТоваровУслуг.НаправлениеДеятельности.Комментарий КАК НаправлениеДеятельностиКомментарий,
        |    РеализацияТоваровУслуг.ЗаказКлиента.ксВидРабот КАК ЗаказКлиентаксВидРабот,
        |    ЗаказКлиентаТовары.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        |        ПО (РеализацияТоваровУслуг.ЗаказКлиента = ЗаказКлиентаТовары.Ссылка)
        |            И (РеализацияТоваровУслуг.ксДокументОснование = ЗаказКлиентаТовары.Ссылка)
        |ГДЕ
        |    РеализацияТоваровУслуг.ЗаказКлиента.ксДоговорСубподряда = &ксДоговорСубподряда
        |    И РеализацияТоваровУслуг.Проведен = &Проведен
        |    И РеализацияТоваровУслуг.Дата = &Дата
        |    И РеализацияТоваровУслуг.ЗаказКлиента.ксСубподрядчикКонтрагент = &ксСубподрядчикКонтрагент");

    

    Запрос1.УстановитьПараметр("Дата", Объект.НачалоПериода);
    Запрос1.УстановитьПараметр("ксДоговорСубподряда", Объект.ДоговорСубподрядчика);
    Запрос1.УстановитьПараметр("ксСубподрядчикКонтрагент", Объект.Субподрядчик);
    Запрос1.УстановитьПараметр("Проведен", Истина);

    РезультатЗапроса = Запрос1.Выполнить();
    Таблица = РезультатЗапроса.Выгрузить();
    Выборка = РезультатЗапроса.Выбрать();
    ТЗ.Очистить();
    Ном = 0;
    Пока Выборка.Следующий() Цикл
        Для каждого стр из Таблица Цикл
            НоваяСтрока = ТЗ.Добавить();
            НоваяСтрока.Номер = Ном + 1;
            НоваяСтрока.НаименованиеОбъекта = стр.НаправлениеДеятельности;
            НоваяСтрока.ПолноеНаименованиеОбъекта = стр.НаправлениеДеятельностиКомментарий;
            НоваяСтрока.ЗаказКлиента = стр.Ссылка;
            НоваяСтрока.ВидРабот = стр.ЗаказКлиентаксВидРабот;
            НоваяСтрока.Содержание = стр.Номенклатура;
            Ном = Ном + 1;
        КонецЦикла;
    КонецЦикла;
1 Natali15
 
05.08.22
16:15
(0) Нужно вывести все документы в таблицу значений по определенным параметрам, их должно быть 16 по параметрам которые задаю, но получается 256, то есть они по 16 раз каждый дублируется, объясните, пожалуйста, что неправильно делаю?
2 Галахад
 
гуру
05.08.22
16:16
Это чтобы в два раза лучше было? И выборка из запроса и перебор таблицы значений.
3 Natali15
 
05.08.22
16:18
(2) сначала без выборки делала, но выводил всего один документ
4 6awkup_true
 
05.08.22
16:19
(1) ты 16 строк обходишь 256 раз. два раза цикл делаешь. обходи либо выборку: пока выборка.следующий() цикл, либо тз: для каждого строка из тз цикл
5 Natali15
 
05.08.22
16:20
(4) Если обхожу ТЗ то вот 1 док выводится
6 Галахад
 
гуру
05.08.22
16:21
Покажи старый код?
7 6awkup_true
 
05.08.22
16:22
(5) у тебя количество записей в выборке и тз одинаковое. одни и те же данные. а вообще назови поля в запросе так же как колонки в Тз, куда добавляешь строки, и воспользуйся конструкцией
Тз.Загрузить(Запрос.Выполнить().Выгрузить());

тогда обход вообще не нужен будет
8 Natali15
 
05.08.22
16:25
(7) Спасибо, все получилось
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший