|
Как корректно работать с запросами не через "Конструктор запросов" | ☑ | ||
---|---|---|---|---|
0
Падаван
17.11.15
✎
10:56
|
Имеется большой запрос. Сделан не через "Конструктор запросов". Как правильно с ним работать? Может я что-то упускаю?
Стоит задача перенести 4 таких запроса на другую конфигурацию. Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ" + ?(НеОграничиватьСписокЗадач = Истина, "", " ПЕРВЫЕ "+мКоличествоЗадачВГруппе) + " | ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Физлицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(РаботникиОрганизацийСрезПоследних.Физлицо.ДатаРождения)) КАК Период, | ГОД(&ТекущаяДата) - ГОД(РаботникиОрганизацийСрезПоследних.Физлицо.ДатаРождения) КАК Возраст, | РаботникиОрганизацийСрезПоследних.Физлицо.Наименование КАК Наименование, | РаботникиОрганизацийСрезПоследних.Физлицо КАК Ссылка, | ВЫБОР | КОГДА (ГОД(&ТекущаяДата) - ГОД(РаботникиОрганизацийСрезПоследних.Физлицо.ДатаРождения)) / 5 = (ВЫРАЗИТЬ((ГОД(&ТекущаяДата) - ГОД(РаботникиОрганизацийСрезПоследних.Физлицо.ДатаРождения)) / 5 КАК ЧИСЛО(4, 0))) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ДополнительныеДанные |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | ДОБАВИТЬКДАТЕ(Физлицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(Физлицо.ДатаРождения)) >= &ДатаОтсчетаДнейРождения | И ДОБАВИТЬКДАТЕ(Физлицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(Физлицо.ДатаРождения)) <= ДОБАВИТЬКДАТЕ(&ДатаОтсчетаДнейРождения, ДЕНЬ, 10)"; Если Не (СписокОрганизаций = Неопределено) Тогда Запрос.Текст = Запрос.Текст + " | И Организация В (&СписокГоловныхОрганизаций)"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | И (НЕ Физлицо В (&ЗакрытыеФизлица))) КАК РаботникиОрганизацийСрезПоследних |ГДЕ | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | И РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение В (&СписокОрганизаций) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ" + ?(НеОграничиватьСписокЗадач = Истина, "", " ПЕРВЫЕ "+мКоличествоЗадачВГруппе) + " | ДОБАВИТЬКДАТЕ(РаботникиСрезПоследних.ФизЛицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(РаботникиСрезПоследних.ФизЛицо.ДатаРождения)), | ГОД(&ТекущаяДата) - ГОД(РаботникиСрезПоследних.Физлицо.ДатаРождения) КАК Возраст, | РаботникиСрезПоследних.ФизЛицо.Наименование, | РаботникиСрезПоследних.ФизЛицо, | ВЫБОР | КОГДА (ГОД(&ТекущаяДата) - ГОД(РаботникиСрезПоследних.Физлицо.ДатаРождения)) / 5 = (ВЫРАЗИТЬ((ГОД(&ТекущаяДата) - ГОД(РаботникиСрезПоследних.Физлицо.ДатаРождения)) / 5 КАК ЧИСЛО(4, 0))) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ |ИЗ | РегистрСведений.Работники.СрезПоследних( | , | ДОБАВИТЬКДАТЕ(ФизЛицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(ФизЛицо.ДатаРождения)) >= &ДатаОтсчетаДнейРождения | И ДОБАВИТЬКДАТЕ(ФизЛицо.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(ФизЛицо.ДатаРождения)) <= ДОБАВИТЬКДАТЕ(&ДатаОтсчетаДнейРождения, ДЕНЬ, 10) | И (НЕ ФизЛицо В (&ЗакрытыеФизлица))) КАК РаботникиСрезПоследних |ГДЕ | РаботникиСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | |УПОРЯДОЧИТЬ ПО | Период, | Наименование"; Запрос.УстановитьПараметр("ЗакрытыеФизлица", ЗакрытыеФизлица); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата); Запрос.УстановитьПараметр("ДатаОтсчетаДнейРождения", ДатаОтсчетаДнейРождения); |
|||
1
butterbean
17.11.15
✎
10:57
|
какая связь между конструктором и переносом в другую конфу??
|
|||
2
Господин ПЖ
17.11.15
✎
10:57
|
>Как правильно с ним работать?
позвать специалиста |
|||
3
cw014
17.11.15
✎
10:57
|
Не такой уж он и большой
|
|||
4
DDwe
17.11.15
✎
10:59
|
(2) +100
|
|||
5
Ненавижу 1С
гуру
17.11.15
✎
11:00
|
там одна (первая) строка только без конструктора
|
|||
6
Падаван
17.11.15
✎
11:00
|
Объясняю, нужно корректно перенести. Чтобы все работало. Например регистра "Работник" у меня нет.
Неужели проще нельзя написать? к чему такие извращения. Он непонятен. В "конструкторе" все ГОРАЗДО нагляднее. |
|||
7
DDwe
17.11.15
✎
11:01
|
(6) Тогда может заново написать? Нет? Как ты его переносить собираешься?
|
|||
8
13_Mult
17.11.15
✎
11:01
|
(3) +1 совсем не большой.)
|
|||
9
DDwe
17.11.15
✎
11:02
|
(6) Ты понимаешь, что делает этот запрос?
|
|||
10
Lama12
17.11.15
✎
11:02
|
(6) В отладчике поставь точку останова на строке Запрос.Выполнить().
Посмотри текст запроса. Скопируй его в консоль. Анализируй сколько влезет. |
|||
11
Ненавижу 1С
гуру
17.11.15
✎
11:02
|
Напиши
тупо Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ 0 ... а ниже Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПЕРВЫЕ 0",?(НеОграничиватьСписокЗадач,"","ПЕРВЫЕ "+мКоличествоЗадачВГруппе)); |
|||
12
Падаван
17.11.15
✎
11:02
|
Спасибо. Так и попробую.
|
|||
13
Vladal
17.11.15
✎
11:03
|
(0) За такое: "?(НеОграничиватьСписокЗадач = Истина, "", " ПЕРВЫЕ "+мКоличествоЗадачВГруппе)"
надо бить ребром линейки по рукам. Металлической. |
|||
14
ДенисЧ
17.11.15
✎
11:04
|
За использование конструктора запросов - надо бить тяжёлым предметом по голове. До прояснения.
|
|||
15
Vladal
17.11.15
✎
11:06
|
В (11) дело говорит. Так у тебя и логика модуля сохранится (запрос будет выбирать в зависимости от настроек) и в конструкторе можно будет его открывать.
Я еще использую в условиях примерно такую конструкцию: 1 = 1 И 2 = 2 И <какое-то моё условие> а потом в тексте модуля уже меняю 1 или 2 на нужное мне дополнение к условиям. Например, так: ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "1 = 1", "1 = 1 И <моё условие>Э) И т.д. |
|||
16
DDwe
17.11.15
✎
11:08
|
(15) " Чтобы все работало. Например регистра "Работник" у меня нет. " Что он там в новой конфе открывать будет?
|
|||
17
Vladal
17.11.15
✎
11:09
|
(16) Адресуй вопрос автору. Например, вот так: "(16) к (0)"
|
|||
18
Ненавижу 1С
гуру
17.11.15
✎
11:10
|
(15) я делаю тупо как параметры, потом заменяю
ГДЕ &УсловиеСклады И &УсловиеТовары и не говорите мне про построители )) |
|||
19
Vladal
17.11.15
✎
11:10
|
(18) как вариант.
|
|||
20
Vladal
17.11.15
✎
11:10
|
построители или конструкторы?
|
|||
21
Ненавижу 1С
гуру
17.11.15
✎
11:11
|
(20) построители
|
|||
22
Lama12
17.11.15
✎
11:24
|
(18) Хм... а вот с параметрами интересно. Тоже использовал вариант из (15). Хотя у него тоже есть свои преимущества, в виде готовой "Истины" в условиях. Но в тоже время, при количестве таких "заглушек" переваливающих за 100 начинаются чудеса с форматированием.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |