8.х Запрос

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

  1. TopicStarter Overlay
    lsd
    Offline

    lsd

    Регистрация:
    30 июл 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Товарищи помогите . Решаю контрольную по 1Ске . Столкнулся с проблемкой. Есть запрос
    Код:
     
    Процедура ВодительПриИзменении(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	ФормированиеБригадыСрезПоследних.Водитель,
    |	ФормированиеБригадыСрезПоследних.Грузчик,
    |	ФормированиеБригадыСрезПоследних.Грузчик2,
    |	ФормированиеБригадыСрезПоследних.Машина,
    |	ФормированиеБригадыСрезПоследних.Километраж
    |ИЗ
    |	РегистрСведений.ФормированиеБригады.СрезПоследних(, ) КАК ФормированиеБригадыСрезПоследних
    |ГДЕ
    |	ФормированиеБригадыСрезПоследних.Период = &Дата";
    
    Запрос.УстановитьПараметр("Дата",Дата );
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    Водитель1 = ?(Выборка.Водитель=Null, 0, Выборка.Водитель);
    Если Водитель1 = ? //Как проверить его на положительное значение  				
    Тогда Сообщить("Водитель определен")
    Иначе
    Сообщить("Водитель не определен")
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    
    Не как не могу проверить переименую Водитель1 на положительное значение. Подскажите как можно это сделать. :unsure:
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Положительное числовое значение, это значение больше нуля.
    Код:
     Если Водитель1 > 0 Тогда 
    
    
    
    
    
    
    Но в Вашем случае - вопрос поставлен не правильно. Водителя не нужно проверять на тему больше он единицы или нет. Нужно проверять его на заполненность. Коль скоро запрос возвращает NULL(??? вообще должен просто возвращать пустую ссылку, ну, да ладно) в моменты, когда водитель не заполнен, этим можно воспользоваться следующим образом:
    Код:
    Процедура ВодительПриИзменении(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    // вот здесь подставим пустую ссылку, в случаях, когда водитель - NULL
    |    ЕСТЬNULL(ФормированиеБригадыСрезПоследних.Водитель,&ПустойВодитель) КАК Водитель,
    |    ФормированиеБригадыСрезПоследних.Грузчик,
    |    ФормированиеБригадыСрезПоследних.Грузчик2,
    |    ФормированиеБригадыСрезПоследних.Машина,
    |    ФормированиеБригадыСрезПоследних.Километраж
    |ИЗ
    |    РегистрСведений.ФормированиеБригады.СрезПоследних(, ) КАК ФормированиеБригадыСрезПоследних
    |ГДЕ
    |    ФормированиеБригадыСрезПоследних.Период = &Дата";
    
    Запрос.УстановитьПараметр("Дата",Дата );
    // зададим параметр пустой водитель - для подстановки в запросе.    
    Запрос.УстановитьПараметр("ПустойВодитель",Справочники.Водители.ПустаяСсылка());
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если ЗначениеЗаполнено(Выборка.Водитель) Тогда
    Сообщить("Водитель определен");
    Иначе
    Сообщить("Водитель не определен");
    КонецЕсли;
    КонецЦикла;            
    КонецПроцедуры
    
    Не проверял, составил "на коленках".
  3. TopicStarter Overlay
    lsd
    Offline

    lsd

    Регистрация:
    30 июл 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Да согласен не правильно сформулировал . На заполненность проверяю . Тока когда положительно он выдает , а когда пусто в результате запроса . То молчит ( не сообщает что Водитель не определен :(((
  4. TopicStarter Overlay
    lsd
    Offline

    lsd

    Регистрация:
    30 июл 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Код:
     Процедура ВодительПриИзменении(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    // вот здесь подставим пустую ссылку, в случаях, когда водитель - NULL
    |    ЕСТЬNULL(ФормированиеБригадыСрезПоследних.Водитель,&ПустойВодитель) КАК Водитель,
    |    ФормированиеБригадыСрезПоследних.Грузчик,
    |    ФормированиеБригадыСрезПоследних.Грузчик2,
    |    ФормированиеБригадыСрезПоследних.Машина,
    |    ФормированиеБригадыСрезПоследних.Километраж
    |ИЗ
    |    РегистрСведений.ФормированиеБригады.СрезПоследних(, ) КАК ФормированиеБригадыСрезПоследних
    |ГДЕ
    |    ФормированиеБригадыСрезПоследних.Период = &Дата";
    
    Запрос.УстановитьПараметр("Дата",Дата );
    // зададим параметр пустой водитель - для подстановки в запросе.    
    Запрос.УстановитьПараметр("ПустойВодитель",Справочники.Водители.ПустаяСсылка());
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если ЗначениеЗаполнено(Выборка.Водитель) Тогда
    Сообщить("Водитель определен");
    Иначе
    Сообщить("Водитель не определен");
    КонецЕсли;
    КонецЦикла;            
    КонецПроцедуры
    
    
    Тока когда положительно он выдает , а когда пусто в результате запроса . То молчит ( не сообщает что Водитель не определен :(((

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