|   |   | 
| 
 | Как подправить запрос на условие ЗначениеЗаполнено | ☑ | ||
|---|---|---|---|---|
| 0
    
        pro3ri 15.10.15✎ 09:09 | 
        Добрый день!
 Есть код: Запрос.Текст = "ВЫБРАТЬ | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента | И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ДоговорКонтрагента", Договор); Запрос.УстановитьПараметр("КредитныйДокумент", КредитныйДокумент); Как подправить запрос так, чтобы если поле КредитныйДокумент не заполнено, он выбирал все, а не пустую ссылку? | |||
| 1
    
        pro3ri 15.10.15✎ 09:11 | 
        неужели проще нельзя Процедура КнопкаВыполнитьНажатие(Кнопка)
 Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента | И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ДоговорКонтрагента", Договор); Если Не ЗначениеЗаполнено(КредитныйДокумент) Тогда Запрос.Текст = "ВЫБРАТЬ | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; КонецЕсли; Запрос.УстановитьПараметр("КредитныйДокумент", КредитныйДокумент); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Попытка Док = Выборка.Регистратор.ПолучитьОбъект(); Док.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Документ " + Док + " записан!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; Сообщить("__________________ ЗАВЕРШЕНО ____________________"); КонецПроцедуры | |||
| 2
    
        Nuobu 15.10.15✎ 09:15 | ||||
| 3
    
        pro3ri 15.10.15✎ 09:18 | 
        (2) благодарю     | |||
| 4
    
        pro3ri 15.10.15✎ 09:32 | 
        пока остановился на таком варианте:
 Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента | И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ДоговорКонтрагента", Договор); Если Не ЗначениеЗаполнено(КредитныйДокумент) Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент", ""); Иначе Запрос.УстановитьПараметр("КредитныйДокумент", КредитныйДокумент); КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Попытка Док = Выборка.Регистратор.ПолучитьОбъект(); Док.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Документ " + Док + " записан!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; Сообщить("__________________ ЗАВЕРШЕНО ____________________"); КонецПроцедуры | |||
| 5
    
        DexterMorgan 15.10.15✎ 09:37 | 
        "ВЫБРАТЬ
 | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента | И | ВЫБОР КОГДА &КредитныйДокументЗаполнен ТОГДА | ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент | ИНАЧЕ ИСТИНА | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; Запрос.УстановитьПараметр("КредитныйДокументЗаполнен", ЗначениеЗаполнено(КредитныйДокумент)); | |||
| 6
    
        DexterMorgan 15.10.15✎ 09:47 | 
        Кста, можно заменить 
 ВЫБОР КОГДА &КредитныйДокументЗаполнен ТОГДА ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент ИНАЧЕ ИСТИНА КОНЕЦ на (&КредитныйДокументЗаполнен И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент) =) | |||
| 7
    
        Лефмихалыч 15.10.15✎ 09:51 | 
        (0) построитель используй, Люк     | |||
| 8
    
        pro3ri 15.10.15✎ 10:29 | 
        (7)так?:
 Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтгрузкиОплаты.Регистратор |ИЗ | РегистрНакопления.ОтгрузкиОплаты КАК ОтгрузкиОплаты |ГДЕ | ОтгрузкиОплаты.Организация = &Организация | И ОтгрузкиОплаты.ДоговорКонтрагента = &ДоговорКонтрагента |{ГДЕ | (ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент) КАК Поле2} | |УПОРЯДОЧИТЬ ПО | ОтгрузкиОплаты.Период"; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ДоговорКонтрагента", Договор); //Если Не ЗначениеЗаполнено(КредитныйДокумент) Тогда // // Запрос.Текст = СтрЗаменить(Запрос.Текст,"И ОтгрузкиОплаты.КредитныйДокумент = &КредитныйДокумент", ""); // //Иначе Запрос.УстановитьПараметр("КредитныйДокумент", КредитныйДокумент); //КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); | |||
| 9
    
        DexterMorgan 15.10.15✎ 10:38 | 
        (8) бггг     | |||
| 10
    
        DexterMorgan 15.10.15✎ 10:39 | 
        (8) а чем тебе (5) не нравится?     | |||
| 11
    
        pro3ri 16.10.15✎ 09:28 | 
        (10) писать меньше, производительность выше     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |