Имя: Пароль:
1C
1С v8
Как передать структуру во временную таблицу запроса?
0 Ткачев
 
21.01.12
11:14
ТекстВТ =
    "ВЫБРАТЬ
    |    ТаблицаТоваров.Номенклатура,
    |    ТаблицаТоваров.Цена
    |ПОМЕСТИТЬ ТаблицаТоваров
    |ИЗ
    |    &ТаблицаТоваров КАК ТаблицаТоваров
    |ГДЕ
    |    ТаблицаТоваров.ТипЦен = &ТипЦен
    |    И ТаблицаТоваров.Цена <> 0";

Запрос.УстановитьПараметр("ТаблицаТоваров", Новый Структура("Номенклатура,Цена,ТипЦен", Источник.Ссылка, Цена, ТипЦенРетейл));

САБЖ, ругается на:
{(6, 2)}: Неверные параметры "ТаблицаТоваров"
<<?>>&ТаблицаТоваров КАК ТаблицаТоваров
1 ДенисЧ
 
21.01.12
11:15
в тз значения запихни и её уже передавай.
2 Ткачев
 
21.01.12
11:17
(1)Я так сделал, все работает, только букав много, хотелось бы сократить, это возможно?

                   ТаблицаСНоменклатурой = Новый ТаблицаЗначений;
                   ТаблицаСНоменклатурой.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
                   ТаблицаСНоменклатурой.Колонки.Добавить("Цена"         , Новый ОписаниеТипов("Число"));
                   ТаблицаСНоменклатурой.Колонки.Добавить("ТипЦен");
                   НоваяСтрока                 = ТаблицаСНоменклатурой.Добавить();
                   НоваяСтрока.Номенклатура = Источник.Ссылка;
                   НоваяСтрока.Цена         = Цена;
                   НоваяСтрока.ТипЦен         = ТипЦенРетейл;
Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаСНоменклатурой);
3 EvgeniuXP
 
21.01.12
11:18
(0) структуру в качестве параметра не передают... только: массив, список значений, таблица значений и примитивные типы данных.
4 ДенисЧ
 
21.01.12
11:18
нет
5 EvgeniuXP
 
21.01.12
11:20
(2) в отдельную процедуру, на выходе ТЗ, которую потом в параметр :) если только так :)
6 Ткачев
 
21.01.12
11:25
(5)В ВТ передаются ТЗ, просто возникла необходимость отправить туда один элемент, что то сделать типа структуры и выгрузить с созданием колонок возможно ?
Типа:
Стр =  Новый Структура("Номенклатура,Цена,ТипЦен", Источник.Ссылка, Цена, ТипЦенРетейл);
ТЗ = Стр.Выгрузить();
На выходе получить ТЗ с колонками и данными.
7 EvgeniuXP
 
21.01.12
11:29
(6) больше вопросов, чем ответов....

делаешь универсальную вещь или колонки статические? Если статические, создай их и закинь в ТЗ, если универсальную - то Колонки.Добавить("ИмяКолонки", Тип от значения) и снова закидывай в ТЗ значения.

или вообще поменять подход к решению проблемы - что и такое возможно.
8 echo77
 
21.01.12
11:37
(5) Хороший подход - всем рекомендую. Позволяет скрыть ненужное количество букв, заменив их на на понятные слова, определяющие смысл действия
9 Ткачев
 
21.01.12
11:49
(7)Там еще была ВТ, ее использовал, ТаблицаТоваров это ссылка на элемент.

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