Имя: Пароль:
1C
1С v8
Вопрос по запросу с выражением Где
,
0 AnisaL
 
01.03.13
14:11
Добрый день) Вопрос по запросу, его текст такой
запрос.Текст = "Выбрать * из документ.ЗаявкаНаряд как рег";
Дальше идет куча если, и соответственно добавления к тексту запроса,пример
если элементыформы.Флажок2.Значение=Истина тогда
       запрос.УстановитьПараметр("регламентные", истина);
       если флаг=Ложь тогда
           запрос.Текст=запрос.Текст+" рег.регламентные=&Регламентные";
           флаг = Истина;
       иначе
           запрос.Текст=запрос.Текст+" и рег.регламентные=&Регламентные";
       конецЕсли;
   конецЕсли;
1 AnisaL
 
01.03.13
14:12
Вопрос в том, можно ли по-другому написать этот запрос?
2 Тролль главный
 
01.03.13
14:12
круто
3 Maxus43
 
01.03.13
14:12
Дописывай
4 Господин ПЖ
 
01.03.13
14:12
какой лохматый и закрытый купальник...
5 Wobland
 
01.03.13
14:13
где (что-то и &флаг)
6 chelentano
 
01.03.13
14:13
(1) я не против
7 AnisaL
 
01.03.13
14:13
(3) Ну вот, дописала)
8 Тролль главный
 
01.03.13
14:14
я делаю так

ГДЕ
 &Условие1
 И &Условие2
 И &Условие3

потом
СтрЗаменить(Текст,"Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА"));

и про построитель не надо
9 andreymongol82
 
01.03.13
14:14
Можно так:
запрос.УстановитьПараметр("регламентные", истина);
Запрос.текст = "ГДЕ 1=1"
           запрос.Текст=запрос.Текст+" и рег.регламентные=&Регламентные";
10 AnisaL
 
01.03.13
14:14
(4) Это не купальник, во-первых) а дубленка) а во-вторых, с мягким мехом )
11 Wobland
 
01.03.13
14:14
(10) не нужна она тебе
12 andreymongol82
 
01.03.13
14:15
(9) в общем-то это частный случай (8)
13 Sammo
 
01.03.13
14:16
Варианта 2
1. Если устроит, что запрос не отркываем контсрутором (динамический сбор), то пишется Где Истина и дальше в если (кстати, в первом условии И пропущено)
2. В запросе обрабатывать, например, передавая Неопределено
14 AnisaL
 
01.03.13
14:16
(11) Пока еще нужна) холодно же, а как потеплеет то обязательно сниму ее
15 Sammo
 
01.03.13
14:16
+ варинат в 8
16 Wobland
 
01.03.13
14:16
(14) тебя нагреть?
17 badboychik
 
01.03.13
14:19
(16) не нагреть а согреть )
18 AnisaL
 
01.03.13
14:20
(15) СтрЗаменить(Текст,"Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА")) - объясните, пожалуйста, ИспУсловие1  и НастоящееУсловие1 - что вписать?
19 badboychik
 
01.03.13
14:20
вообще СКД надо использовать и отборы юзать
20 AnisaL
 
01.03.13
14:20
(16) Я предпочитаю согревание) я ж не бутылка, чтоб нагревать
21 Wobland
 
01.03.13
14:21
(20) хорошо, я стану для тебя согревающей бутылкой ;)
22 AnisaL
 
01.03.13
14:23
(21) Я не пью) ну так иногда, по большим праздникам если;))
Напиши про выражение(18) )
23 Wobland
 
01.03.13
14:26
(22) ИспУсловие - например "&Условие1"; Настоящее - например "рег.регламентные=&Регламентные"
24 kosts
 
01.03.13
14:27
В твоем случае условие

" рег.регламентные=&Регламентные"

равносильно условию

" рег.регламентные"

и параметр "регламентные" можно не устанавливать
25 AnisaL
 
01.03.13
14:37
запрос = новый запрос;
   запрос.Текст = "Выбрать * из документ.ЗаявкаНаряд как рег где &Условие1";
   
   ИспУсловие1 = "&Условие1"; НастоящееУсловие1 = "рег.регламентные";
   СтрЗаменить(Запрос.Текст,"Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА"));
26 AnisaL
 
01.03.13
14:37
(25) Выдает ошибку - {Документ.ЗаявкаНаряд.Форма.ФормаСписка1(8,13)}: Встроенная функция может быть использована только в выражении. (СтрЗаменить)
   СтрЗаменить<<?>>(Текст,"Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА"));
27 AnisaL
 
01.03.13
14:39
(26) а все, поняла, надо так
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА"));
28 kosts
 
01.03.13
14:41
(27) "Условие1" -> "&Условие1"
29 Wobland
 
01.03.13
14:41
а я вот так делал:

   "SELECT
   |    [<<ОсновнойСправочник>>.Ссылка] AS Ссылка,
   |    [<<ОсновнойСправочник>>.Наименование] AS Наименование,
   |    [<<ОсновнойСправочник>>.Код] AS Код<<ещё что-нибудь>>


"<<" в тексте запроса ну никак не может быть, в отличие от "Условие1"...
30 Wobland
 
01.03.13
14:42
(29) и читается хорошо
31 kosts
 
01.03.13
14:42
(29) А конструктор как это воспринимает?
32 Wobland
 
01.03.13
14:43
(31) это семёрка
33 Reset
 
01.03.13
14:46
(29) &Условие1 тоже в тексте запроса не может быть, но зато позволяет открывать запрос конструктором
34 AnisaL
 
01.03.13
14:48
(28) Ребят, ну что-то не получается никак - ошибку опять выдает - Документ.ЗаявкаНаряд.Форма.ФормаСписка1(8)}: Преобразование значения к типу Булево не может быть выполнено
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Условие1",?(ИспУсловие1,НастоящееУсловие1,"ИСТИНА"));
35 Тролль главный
 
01.03.13
14:49
(34) я не знаю, что у тебя
ИспУсловие1
НастоящееУсловие1
36 Reset
 
01.03.13
14:50
(34)
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Условие1",?(элементыформы.Флажок2.Значение,НастоящееУсловие1,"ИСТИНА"));
37 Reset
 
01.03.13
14:54
Только не нужно буквально копировать с форума названия переменных.
Вместо НастоящееУсловие1, например, гоаздо читабельней что-то типа УсловиеПоРегламентным
38 Reset
 
01.03.13
14:55
хотя у тебя уже "Флажок2" и думаю не только он:) хуже не будет -.-
39 Wobland
 
01.03.13
14:55
(37) к вопросу о бездумном копипасте. не видал v8: Собрать план производства за период ? там на второй сотне такое начинается...
40 Reset
 
01.03.13
14:56
(39) Я просматривал, по мере процесса просматривания созревало желание что-то нехорошее сказать, закрыл во избежание xd
41 Megas
 
01.03.13
14:59
НЕ фига не понял, но я так собирал запросы на маленькие условия. Как вариант

где
ВЫбор когда &ФлажокОтбор = истина тогда
Документ.сумма < 100 иначе
Истина
Конец
42 Wobland
 
01.03.13
15:01
(41) а я предлагал в самом начале. видимо, не подходит
43 AnisaL
 
01.03.13
15:06
(37) ага, понятно) просто хотелось побыстрее проверить как это работает)
44 Megas
 
01.03.13
15:07
(29)
Я ещё так делал
|
| //====УсловияОтбора====//



Конструктор тоже открывает, но затирает  "//====УсловияОтбора====//" так как считает это за комментарий.
45 AnisaL
 
01.03.13
15:13
(41) Ну можно и так попробовать )
46 AnisaL
 
01.03.13
15:21
А если такое условие
если элементыформы.Флажок1.Значение=Истина тогда
       запрос.УстановитьПараметр("Статус", перечисления.СтатусЗаявки.ВРаботе);
       если флаг=Ложь тогда
           запрос.Текст=запрос.Текст+" рег.статус=&Статус";
           флаг = Истина;
       иначе
           запрос.Текст=запрос.Текст+" и рег.статус=&Статус";
       конецЕсли;
   конецЕсли;
47 AnisaL
 
01.03.13
15:22
(46)+ то как должно выглядеть выражение
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Условие2",?(элементыформы.Флажок1.Значение,УсловиеПоСтатусу,"ИСТИНА"));
Так программа зависла
48 AnisaL
 
01.03.13
15:24
(47) получился такой текст запроса
Выбрать * из документ.ЗаявкаНаряд как рег где ИСТИНА и ИСТИНА
49 AnisaL
 
01.03.13
15:27
Что-то в пятницу вечером голова совсем не варит
50 Reset
 
01.03.13
15:31
(48) Ну так же и задумывалось? Получился текст запроса без отборов
51 AnisaL
 
01.03.13
15:32
(35) С этим первым условием все получилось) а вот пытаюсь второе условие сюда же добавить, не получается у меня(
52 AnisaL
 
01.03.13
15:34
(50) Ой!! Точно) ха - я думала зависла, а оказывается нет, вот блин жесть
53 zladenuw
 
01.03.13
15:44
ты потом эту куда ?
Я бы делал через СКД и добавлял отбор какой тебе надо.
54 AnisaL
 
04.03.13
08:52
(53) Это документ, а не отчет)
55 acsent
 
04.03.13
08:55
Бл@, а построитель запроса юзать, не???
56 AnisaL
 
04.03.13
09:18
(55) Ну в принципе можно) просто до меня было написано, поэтому так