Имя: Пароль:
1C
1С v8
Обращение к строке ТЗ, являющейся результатом запроса.
0 YurAnt
 
29.08.13
07:21
Доброго времени суток господа-форумчане.
Вопрос глупый, но таки да, он имеет место быть.
Выбираю запросом ЗарплатаКВыплатеОрганизаций.Зарплата, далее естественно хочу перебрать по сотрудникам.
Как кхм... перебрать данную ТЗ ?
т.е. выборка отобралась, запихалась в ТЗ, что же касается последнего элемента "Зарплата" (который сам по себе является ТЗ, так по крайней мере говорит консоль запросов), то перебрать его по "Для каждого" вообще никак, ну и соответственно к строкам по Зарплата[0] ... [n] тоже не обратиться...

и да, тип данной "ТЗ" - при отладке отображается как "результат выборки" (думаю тут собака и порылась)
Собственно код приведен ниже...
Буду благодарен за любые советы, с ув. Yurant.

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

Функция ЗарплатаКВыплатеВТЗ(Выборка) Экспорт
    ТЗ = Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("Ссылка");
        ТЗ.Колонки.Добавить("Дата");
        ТЗ.Колонки.Добавить("Банк");
        ТЗ.Колонки.Добавить("СуммаДокумента");
        ТЗ.Колонки.Добавить("Зарплата");
        Пока Выборка.Следующий() Цикл
            Если Формат(Выборка.Дата, "ДЛФ=Д") = Формат(ЭтотОбъект.Дата, "ДЛФ=Д") Тогда
                НовСтрокаТЗ = ТЗ.Добавить();
                НовСтрокаТЗ.Ссылка = Выборка.Ссылка;
                НовСтрокаТЗ.Дата = Формат(Выборка.Дата, "ДЛФ=Д");
                НовСтрокаТЗ.Банк = Выборка.Банк;
                НовСтрокаТЗ.СуммаДокумента = Выборка.СуммаДокумента;
                НовСтрокаТЗ.Зарплата = Выборка.Зарплата;
            КонецЕсли;
        КонецЦикла;
    Возврат ТЗ;    
КонецФункции
1 Wobland
 
29.08.13
07:26
не читал. выбирай из Документ.ЗарплатаКВыплатеОрганизаций.Зарплата
2 Гефест
 
29.08.13
07:29
Совет - купить СП
3 YurAnt
 
29.08.13
07:29
Wobland, Благодарю, вопрос Снят)
4 Starhan
 
29.08.13
07:31
(0)
1. Вместо
выборка=запрос.Выполнить().Выбрать();
написать
выборка=запрос.Выполнить().Выгрузить()
и у тебя сразу ТЗ будет.

2. Вместо своего запроса
написать

ТекстЗапроса ="ВЫБРАТЬ
|ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка КАК Ссылка,
...
|ЗарплатаКВыплатеОрганизацийЗарплата.НомерСтроки,           ...    
|ИЗ
|    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
|ГДЕ
|ЗарплатаКВыплатеОрганизацийЗарплата.Банк = &Банк";