8.х Проблема с ПостроительЗапроса

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Yury, 3 авг 2012.

  1. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте,

    Вот такой код:
    Код:
     ОтборСтрок = ЭлементыФормы.СписокРеализаций.ОтборСтрок;
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(РеализацииКомиссионеров);
    Для Каждого ЭлементОтбора Из ОтборСтрок Цикл
    Если ЭлементОтбора.Использование Тогда
    НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(ЭлементОтбора.Имя);
    НовыйОтбор.Использование = Истина;
    НовыйОтбор.ВидСравнения = ЭлементОтбора.ВидСравнения;
    НовыйОтбор.ЗначениеС = ЭлементОтбора.ЗначениеС;
    НовыйОтбор.ЗначениеПо = ЭлементОтбора.ЗначениеПо;
    НовыйОтбор.Значение = ЭлементОтбора.Значение;
    КонецЕсли;
    КонецЦикла;
    // ПостроительЗапроса.Выполнить ();
    Результат = ПостроительЗапроса.Результат.Выгрузить();
    Для Каждого Элемент из Результат Цикл
    Элемент.Выбор = Истина
    КонецЦикла;
    
    Где:
    РеализацииКомиссионеров -- табличная часть,
    СписокРеализаций -- табличное поле на форме.

    Код вываливается на Результат = ПостроительЗапроса.Результат.Выгрузить(); с ошибкой:
    =============================================================================
    Форма.Форма.Форма(84)}: Ошибка при получении значения атрибута контекста (Результат)
    Результат = ПостроительЗапроса.Результат.Выгрузить();
    по причине:
    {(3, 36)}: Ожидается имя
    ОписаниеИсточникаДанных.Выбор КАК <<?>>Выбор,
    =============================================================================

    Сравнивал свой код с аналогичными 1совским, различий не нашел. Где ошибка???
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    предположу, что до того как выгрузить запрос надо выполнить

    вот как-то так
    Код:
    ПостроительЗапроса.Выполнить();
    Результат = ПостроительЗапроса.Результат;
    а у вас эта строка как раз закомментирована
  3. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Не помогает, видите-же в коментах стоит. И так и так пробовал.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    но без "выполнить" результат вы врядли получите, а какая ошибка с Выполнить?
  5. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    С Выполнить () нет никаких ошибок.
    Просто разбирался с аналогичным кодом 1сников там не всегда Выполнить (), чаще нет
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    приведите пример?!
  7. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Код:
    Функция ОтобратьСтрокиПоКритериям(Источник, СтруктураКритериев, СтруктураСложныхКритериев = Неопределено)
    Перем ВидСравненияСложный;
    Если СтруктураСложныхКритериев = Неопределено Тогда
    СтруктураСложныхКритериев = Новый Структура;
    КонецЕсли;
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);
    Для Каждого Критерий Из СтруктураКритериев Цикл
    НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(Критерий.Ключ);
    СтруктураСложныхКритериев.Свойство(Критерий.Ключ, ВидСравненияСложный);
    Если ВидСравненияСложный = Неопределено Тогда
    НовыйОтбор.Установить(Критерий.Значение);
    Иначе
    НовыйОтбор.Использование = Истина;
    НовыйОтбор.ВидСравнения = ВидСравненияСложный;
    НовыйОтбор.Значение = Критерий.Значение;
    КонецЕсли;
    КонецЦикла;
    Возврат ПостроительЗапроса.Результат;
    КонецФункции // ОтобратьСтрокиПоКритериям()
    
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Я правильно понимаю, что одна из колонок ТЧ (РеализацииКомиссионеров) имеет имя "Выбор"? Тогда дело в ней.
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    З.Ы. Я бы написал в 1С об этом.
    Подобная ошибка для "ПостроителяОтчета" уже зарегистрирована. Надо бы чтобы и для построителя запроса зарегистрировали.
    [off]
    З.З.Ы.
    А вообще список ошибок платформы в последнее время уже здорово нервирует.
    [/off]
  10. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Да, спасибо!

Поделиться этой страницей