Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 19:46

Вопрос по типу результата запроса

Автор Erroshka, 03 янв 2012, 00:46

0 Пользователей и 1 гость просматривают эту тему.

Erroshka

На форме отчета есть комбобокс, в его обработчике события при изменении написала запрос, а потом так:
Результат = Запрос.Выполнить().Выгрузить();
И тип результата почему-то "ТабличныйДокумент", хотя точно такой же запрос был на форме для документа, и там тип результата был "ТаблицаЗначений".
А я хочу подоставать из запроса что-нибудь, вот из ТЗ умею, а из ТД не знаю как
:dfbsdfbsdf: :dfbsdfbsdf:

sergeevds

Не-не, мистика какая-то, давай скидывай всю процедуру, потому как метод Выгрузить() дает типы только ТаблицаЗначений или ДеревоЗначений.

Erroshka

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

Dethmontt

А что такое ВМассивСтрок( результат ) ???
Можно посмотреть код этой функции???
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Erroshka

Да это конечно) Где-то нашла такой способ на просторах интернета. Но суть не в этой функции, а выше на строку!
Функция ВМассивСтрок( Результат )
   СтрокаСтруктуры = "";
    МассивКолонок = Новый Массив;
    Для каждого Рез из Результат.Колонки Цикл
        Если НЕ СтрокаСтруктуры = "" Тогда
            СтрокаСтруктуры = СтрокаСтруктуры + ", ";
        КонецЕсли;
        СтрокаСтруктуры = СтрокаСтруктуры + Рез.Имя;
        МассивКолонок.Добавить(Рез.Имя);
    КонецЦикла;
    МассивСтрок = Новый Массив;
    Для каждого Рез из Результат Цикл
        СтруктураСтроки = Новый Структура(СтрокаСтруктуры);
        Для каждого кол из МассивКолонок Цикл
            СтруктураСтроки.Вставить(кол, Рез[кол]);
        КонецЦикла;
        МассивСтрок.Добавить(СтруктураСтроки);
    КонецЦикла;
    Возврат МассивСтрок;
КонецФункции

Dethmontt

читай СП - метод "выгрузить() для запроса"
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Erroshka

Ребята, хелп прочитала, но вот пруф что тип у результата именно ТабличныйДокумент.
Повторюсь, что этот запрос из отчета, а такой же запрос, но из документа работает именно как вы и пишете.

Dethmontt

Странно конечно.
напиши не "Результат"а например - МойРезультат = Запрос.Выполнить().Выгрузить(); и посмотри что получиться.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Скорее всего переменная определена еще до исполнения твоего запроса
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Erroshka

Цитата: Dethmontt от 04 янв 2012, 05:36
Скорее всего переменная определена еще до исполнения твоего запроса
Да! Так оно и получилось видимо! Теперь все работает, огромное спасибо! :ehtwj: :ehtwj: :ehtwj:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск