Таблица значений как параметр запроса
Перейти к содержимому

Таблица значений как параметр запроса

  • автор:

Таблица значений как параметр запроса

Не могу передать таблицу значений расположенную на форме обработки в запрос параметром. Нужно предварительно её куда то перегрузить?

(0) ну показывай, что ли, что уже сделал
типизировать нужно
Код в студию и дальше будем думать.
МВТ объявил?
(2) скорее всего, конечно, да, но хочется всё-таки посмотреть, что автор уже наваял

(0) Нет.
Нужно предварительно написать по собственному желанию и не заниматься больше 1С. Никогда.

Дайте пожалуйста контакты вашего руководителя, я хочу написать ему письмо.

(6) Ты жесток..

(7) Я.
Жесток автор, который занимается 8-ой уже 3 . года и задает вопросы, вот такие
http://www.forum.mista.ru/index.php?user_id=6293

Жесток, бессмысленен и беспощаден.
К пользователям, руководителям и самому себе.

А потом говорят «Ваша 1 гамно».

(6) + 1 адский прогер задаёт постоянно сильнейшие вопросы.
(7) ни чуть, я боюсь за пользователей, которые потом пользуются его наработками.

(9) «которые потом пользуются его наработками» — вот бы посмотреть, что здесь начнется.
набросились окаянные. может человек консультант, а дядька заставляет прогать ещё
(11) 3 года.
Атъ и Израелъ.
(12) 8 лет — уже из Израеля
(11) за 8 лет уж и консультанту как-то не по консультански
на фото ведь видно, как он с пользователями общается.
(2) что нужно типизировать?

Процедура КоманднаяПанель2ВывестиТаблицу(Кнопка)
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст ;
Запрос.УстановитьПараметр(«Данные»,Контрагенты);
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
Выборка = Рез.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Контрагент);
КонецЦикла;
КонецЕсли;
КонецПроцедуры

ТЗ = ТЗизФормы.Выгрузить();
ЗапросКбазеДанных.УстановитьПараметр(«ТЗ», ТЗ);
(21) то есть так можно делать не используя менеджер временных таблиц?

естественно необходимо использовать временные таблицы

ЗапросКбазеДанных = Новый Запрос;
МенеджерТаблицыДанных = ЗапросКбазеДанных.МенеджерВременныхТаблиц;
ЗапросКбазеДанных.МенеджерВременныхТаблиц = МенеджерТаблицыДанных;
ЗапросКбазеДанных.Текст ;
ТЗ = ТЗизФормы.Выгрузить();
ЗапросКбазеДанных.УстановитьПараметр(«ТЗ», ТЗ);

(23) можно и без них

Запрос = Новый Запрос;
Запрос.Текст ;
Запрос.УстановитьПараметр(«Тз», Контрагенты.ВыгрузитьКолонку(«Контрагент»));
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
Выборка = Рез.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(«Без использования менеджера временных таблиц: » + Выборка.Ссылка);
КонецЦикла;
КонецЕсли;

(23) а вот это не работает ТЗ = ТЗизФормы.Выгрузить();
нет такого метода у таблицы значений в 1с 8.2, это вы из 7.7 ?

Передача таблицы значений в запрос

  • Передача таблицы значений в запрос. В качестве внешнего источника могут выступать: Таблица значений, Табличная часть, Результат запроса.

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

    3 3 0 0 2 Скопировано.
    4 года назад

    Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Шаблоны кода 1С

    Секреты TurboConf

    TurboConf ИР

    Нейросети и AI

    Лайфхаки 1С

    Бубен админа

    1С не всерьез

    Комментарии

    JomInG
    #1, 15 июля 2020 22:36

    Разве не будет ошибки, что колонки таблицы не типизированные?

    2 2 Ответить
    reborn85
    #2, 15 июля 2020 22:48

    (1) JomInG, будет ошибка, но прямо тут где то рядом есть отличная функционая автоматической типизации подготовленных данных для передачи в запрос, в общем случае работает нормально она

    Как в запросе, в качестве источника данных, использовать таблицу значений?

    Если при использовании в запросе таблицы значений, возникает ошибка: «Тип не может быть выбран в запросе», то нужно явно указать Тип значения колонок ТЗ!
    Т.е. если мы используем таблицу значений, так же в свою очередь выгруженную из результата запроса или из табличной части документа например — то такой проблемы не возникает, т.к. в таком случае колонки будут типизированными. А если мы сами создаем таблицу значений, то нужно явно указать тип для каждой колонки:
    Код 1C v 8.х

     ТЗ = Новый ТаблицаЗначений; 
    ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));

    Аренда 1С в облаке

    Запрос к Таблице Значений

    Таблица значений как параметр запроса

    Загрузка. Пожалуйста, подождите.

    X

    Сообщение сайта

    (Сообщение закроется через 2 секунды)

    alexkhua —> alexkhua

    Просмотр профиля

    Найти сообщения пользователя

    08.09.13, 18:39
    Не могу передать в параметр запроса Таблицу значений. Что тут не так?

     ТЗ = Новый ТаблицаЗначений(); 
    ТЗ.Колонки.Добавить("ДокументСсылка" , Новый ОписаниеТипов ("ДокументСсылка.ЗаказВПроизводство"));




    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НарядЗаказ.Основание.Ссылка КАК ДокументСсылка
    |ИЗ
    | Документ.НарядЗаказ КАК НарядЗаказ
    |ГДЕ
    | НарядЗаказ.Основание.Ссылка <> &Пустая
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | НарядЗаказДвери.Основание.Ссылка
    |ИЗ
    | Документ.НарядЗаказДвери КАК НарядЗаказДвери
    |ГДЕ
    | НарядЗаказДвери.Основание.Ссылка = &Пустая";

    Запрос.УстановитьПараметр("Пустая","");

    ТЗ = Запрос.Выполнить().Выгрузить();

    //////////////////////////////////////////////////////////////////////////////////////////////////




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

    Запрос.УстановитьПараметр("ТЗ", ТЗ);

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Ссылка);
    КонецЦикла;

    ipsclass->input[‘t’] тема —>

    alex040269 —> alex040269

    Просмотр профиля

    Найти сообщения пользователя

    08.09.13, 20:25
    Цитата(alexkhua @ 08.09.13, 19:39)
    ЗаказВПроизводство.Ссылка <> &ТЗ

    а вы представляете как это Ссылка = &ТЗ (Таблица значений)?
    Наверное нужен список ссылок не вошедших в ТЗ, тогда используйте левое соединение. И запрос лучше сделать один.
    ТЗ поместить во временную таблицу или внутренний запрос.

    Никогда не бойся делать то, что не умеешь, помни — Ноев ковчег был построен любителем, профессионалы построили Титаник.
    ЗиУП

    ipsclass->input[‘t’] тема —>

    alexkhua —> alexkhua

    Просмотр профиля

    Найти сообщения пользователя

    08.09.13, 20:50
    Цитата(alex040269 @ 08.09.13, 21:25)

    а вы представляете как это Ссылка = &ТЗ (Таблица значений)?
    Наверное нужен список ссылок не вошедших в ТЗ, тогда используйте левое соединение. И запрос лучше сделать один.
    ТЗ поместить во временную таблицу или внутренний запрос.

    Спасибо, попробую. Но я не пойму почему типы в сравн. значениях не соответствуют.

    ipsclass->input[‘t’] тема —>

    Ardi —> Ardi

    Просмотр профиля

    Найти сообщения пользователя

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *