8.х Запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем vidok, 26 мар 2010.

  1. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Решаю одну методичку, никак не могу разобраться. Подскажите пожалуйста как правильно преобразовать запрос.

    Нужно чтобы в ПолеРезультатаЗапроса выгружалось не все по запросу а только в соответствии с выбраным транспортным средством

    Код:
    Процедура ТранспортноеСредствоПриИзменении(Элемент)	
    ПолеРезультатаЗапроса.Очистить();
    
    Запрос= Новый Запрос;
    ТекстЗапроса=
    "ВЫБРАТЬ
    |	СоставБригады.Транспорт,
    |	СоставБригады.Водитель,
    |	СоставБригады.Грузчик1,
    |	СоставБригады.Грузчик2
    |ИЗ
    |	РегистрСведений.СоставБригады КАК СоставБригады"
    ;	
    Запрос.Текст=ТекстЗапроса;
    РезультатЗапроса=Запрос.Выполнить();
    
    ЭлементыФормы.ПолеРезультатаЗапроса.Значение=РезультатЗапроса.Выгрузить();
    ЭлементыФормы.ПолеРезультатаЗапроса.СоздатьКолонки();
    Для Каждого Колонка из ЭлементыФормы.ПолеРезультатаЗапроса.Колонки Цикл
    Колонка.Ширина=16;
    КонецЦикла;
    
    Если ТранспортноеСредство.Пустая() Тогда
    ПолеРезультатаЗапроса.Очистить();
    КонецЕсли;
    
    КонецПроцедуры
    
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    ТекстЗапроса=
    "ВЫБРАТЬ
    |    СоставБригады.Транспорт,
    |    СоставБригады.Водитель,
    |    СоставБригады.Грузчик1,
    |    СоставБригады.Грузчик2
    |ИЗ
    |    РегистрСведений.СоставБригады КАК СоставБригады
    |ГДЕ
    |    СоставБригады.Транспорт = &Транспорт";
    Запрос.УстановитьПараметр("Транспорт", СсылкаНаЭлементыСправочникаТранспортов);
    
  3. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Судя по коду будет так

    Код:
    ТекстЗапроса=    "ВЫБРАТЬ    
    |    СоставБригады.Транспорт,    
    |    СоставБригады.Водитель,    
    |    СоставБригады.Грузчик1,    
    |    СоставБригады.Грузчик2    
    |ИЗ    
    |    РегистрСведений.СоставБригады КАК СоставБригады    
    |ГДЕ    
    |    СоставБригады.Транспорт = &Транспорт";
    Запрос.УстановитьПараметр("Транспорт", ТранспортноеСредство);
    
    или последнюю строчку

    Код:
    Запрос.УстановитьПараметр("Транспорт", Элемент.Значение);
    
  4. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    спасибо большое за ответы

    Но при добавлении УстановитьПараметр вообще ничего не выводит в ПолеРезультатаЗапроса
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Значит по параметру ничего не найдено.
    Покажите, как сделали
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Конечно давайте разберемся по коду:

    ПолеРезультатаЗапроса? что за элемент управление? и зачем вы в элемент управления выгружаетет если у вас выще в нему идет обращение как к реквизиты без Элементы формы.
    Что бы туда выгрузился запрос это должно быть табличное поле с колонками имя которых совпадат с теми полями которые у вас есть в выборке. Иначе как ему зать куда выгружать.

    У вас я так понимаю вообще поле ввода...

    Для чего строка с Создать колонки?
  7. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура ТранспортноеСредствоПриИзменении(Элемент)	
    ПолеРезультатаЗапроса.Очистить();
    
    Запрос= Новый Запрос;
    ТекстЗапроса=
    "ВЫБРАТЬ
    |	СоставБригады.Транспорт,
    |	СоставБригады.Водитель,
    |	СоставБригады.Грузчик1,
    |	СоставБригады.Грузчик2
    |ИЗ
    |	РегистрСведений.СоставБригады КАК СоставБригады
    |ГДЕ
    |	СоставБригады.Транспорт = &Транспорт"
    ;	
    
    
    //Запрос.УстановитьПараметр("Транспорт", Элемент.Значение);
    Запрос.УстановитьПараметр("Транспорт", ТранспортноеСредство);
    Запрос.Текст=ТекстЗапроса;
    РезультатЗапроса=Запрос.Выполнить();
    
    ЭлементыФормы.ПолеРезультатаЗапроса.Значение=РезультатЗапроса.Выгрузить();
    ЭлементыФормы.ПолеРезультатаЗапроса.СоздатьКолонки();
    Для Каждого Колонка из ЭлементыФормы.ПолеРезультатаЗапроса.Колонки Цикл
    Колонка.Ширина=16;
    КонецЦикла;
    
    Если ТранспортноеСредство.Пустая() Тогда
    ПолеРезультатаЗапроса.Очистить();
    КонецЕсли;
    
    КонецПроцедуры
    
  8. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    ПолеРезультатаЗапроса - это Табличное поле


    колонки создаю, так как без этого не выгружается
  9. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вы прочитали что было выше. Перед тем как загрузить, должны быть уже созданы колонки с такими же именами как и выборка
  10. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Я новичок, и я не совсем понял предыдущее сообщение
  11. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    РезультатЗапроса.Выгрузить() - возвращает таблицу значений.

    Если посмотрите в синтаксис помошнике, то для загрузки одно таблицы значений в другую надо использовать метод ЗАГРУЗИТЬ()

    т.е у Вас должно быть ПолеРезультатаЗапроса.Загрузить(РезультатЗапроса.Выгрузить() );

    Причем желательно что бы уже у ПолеРезультатаЗапроса были 4 колонки с именами Транспорт,Водитель,Грузчик1,Грузчик2

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