8.х Пожалуйста помогите с условием запросом

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Денис44, 5 сен 2011.

  1. TopicStarter Overlay
    Денис44
    Offline

    Денис44

    Регистрация:
    9 фев 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Начал делать запрос. Если условие не указываю - всё работает. Ошибка появляется после "ГДЕ", когда в условие пытаюсь запихнуть значение из формы. Вот код:
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    |	ДанныеСВесовых.НомерАкта,
    |	ДанныеСВесовых.ВремяВъезда,
    |	ДанныеСВесовых.НомерМашины,
    |	ДанныеСВесовых.Контрагент,
    |	ДанныеСВесовых.Сумма
    |ИЗ
    |	Справочник.ДанныеСВесовых КАК ДанныеСВесовых
    |ГДЕ
    |	ДанныеСВесовых.ВремяВъезда > ЭтаФорма.ЭлементыФормы.НачалоПериода.Значение
    |        И ДанныеСВесовых.Контрагент = ЭтаФорма.ЭлементыФормы.СписокКонтр.Значение
    |УПОРЯДОЧИТЬ ПО
    |	НомерАкта";
    КонецЕсли;
    
    Результат = Новый ТаблицаЗначений;
    Результат= Запрос.Выполнить();
    ТЗ  =Результат.Выгрузить();
    
    Для сч = 0 по Тз.Количество()-1 цикл
    НовСтр=ТабличнаяЧасть1.Добавить();
    НовСтр.НомерАкта = ТЗ[сч].НомерАкта;
    НовСтр.ВремяВъезда = ТЗ[сч].ВремяВъезда;
    НовСтр.НомерМашины = ТЗ[сч].НомерМашины;
    НовСтр.Контрагент = ТЗ[сч].Контрагент;
    НовСтр.Сумма = ТЗ[сч].Сумма;
    КонецЦикла;
    
    
    Когда вместо
    Код:
    ЭтаФорма.ЭлементыФормы.НачалоПериода.Значение
    
    ставлю
    Код:
    ДАТАВРЕМЯ(2011, 9, 2, 0, 0, 0)
    
    , а второе условие убираю, всё работает.
    или когда условие выглядит так
    Код:
    ДанныеСВесовых.Сумма > 0
    
    тоже проблем нет.
    Просто не пойму как из формы параметры запихнуть.
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Параметры в запрос передаются так:
    Код:
    Запрос.УстановитьПараметр("Переменная", ВашПараметр);
    
    Где Переменная - это то что нужно написать в запросе, например, ГДЕ Документ.Ссылка = &Переменная
    ВашПараметр - то что нужно передать в переменную (в параметр)
  3. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    |    ДанныеСВесовых.НомерАкта,
    |    ДанныеСВесовых.ВремяВъезда,
    |    ДанныеСВесовых.НомерМашины,
    |    ДанныеСВесовых.Контрагент,
    |    ДанныеСВесовых.Сумма
    |ИЗ
    |    Справочник.ДанныеСВесовых КАК ДанныеСВесовых
    |ГДЕ
    |    ДанныеСВесовых.ВремяВъезда > &НачалоПериода
    |        И ДанныеСВесовых.Контрагент = &СписокКонтр
    |УПОРЯДОЧИТЬ ПО
    |    НомерАкта";
    КонецЕсли;
    
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода)
    Запрос.УстановитьПараметр("Контрагент", СписокКонтр)
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл 
    НовСтр=ТабличнаяЧасть1.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтр, Выборка);
    КонецЦикла;
    
    
    Только непонятно что у вас там такое "ЭлементыФормы.СписокКонтр". Если не поле ввода, то запрос работать не будет. В запросе тогда условие меняйте: не "=", а "В".
  4. TopicStarter Overlay
    Денис44
    Offline

    Денис44

    Регистрация:
    9 фев 2011
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое, всё работает. Пытался сделать то же самое, забывал знак "&" перед переменными.

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