Имя: Пароль:
1C
 
Помогите с передачей данных в запрос, пожалуйста. УТ 11
0 vse_serjezno
 
28.08.14
13:05
Здравствуйте.

У меня есть Массив документов, которые могут быть трех разных видов.
Мне нужно выбрать из него один документ с самой ранней датой.

Хочу сделать это запросом.
Можно ли передать массив так, чтобы выбор был именно из него, а не через соединение трех разных таблиц для каждого из видов документов с условием
<НазваниеДокумента>.Ссылка в &МассивДокументов ?

Подскажите, пожалуйста, рациональный способ.
1 Cube
 
28.08.14
13:08
(0) Попробуй массив в ТЗ с типизированными колонками. ТЗ в запрос...
2 vse_serjezno
 
28.08.14
13:10
(1) так, а как тз передать?.. временную таблицу делать?..
я с ВТ, честно говоря, до этого не работала, поэтому спрашиваю.
3 Cube
 
28.08.14
13:18
(2) О, девушка... И с фото... Ну, придется помогать))

Ну да, создавай временную таблицу, создавай в ней ТИПИЗИРОВАННУЮ колонку и делай ЗагрузитьКолонку().

Потом эту ТЗ в качестве параметра в запрос и в запросе с ней работай.
4 Cube
 
28.08.14
13:19
Кстати, интересно, если отсортировать ТЗ, то может и мудрить больше не надо ничего? :)
5 vse_serjezno
 
28.08.14
13:22
(4) так тз будет содержать только документы... а мне же по дате документа сортировка нужна.
6 Cube
 
28.08.14
13:26
(5) Ладно, ща сам проверю)))
Эх доброта моя))
7 Cube
 
28.08.14
13:41
(5) Да, простая сортировка ТЗ сортирует сначала по типу документа, а потом уже по моменту времени...
Значит через запрос.

Кстати ЗагрузитьКолонку() не подойдет, т.к. строк в новой ТЗ нет. Поэтому циклом массив в ТЗ переделывай.
8 Cube
 
28.08.14
13:48
Так, я уже весь код написал и отладил))
Давай быстрей вопросы, а то у меня рабочий день через 14 минут кончается.
9 Cube
 
28.08.14
13:58
Время вышло, дальше сама разберешься, надеюсь:

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