|
Как написать условие в запросе | ☑ | ||
---|---|---|---|---|
0
SherifSP
26.07.12
✎
13:06
|
Есть такой запрос, нужно в нем поставить условие я пытался, но хз правильно ли
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СтрокиНачисления.ВидРасчета, | СтрокиНачисления.ВидРасчета.ЗачетОтработанногоВремени КАК ЗачетОтработанногоВремени, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.ДатаНачала КАК ПериодДействияНачало, | ВЫБОР | КОГДА СтрокиНачисления.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА КОНЕЦПЕРИОДА(СтрокиНачисления.ДатаОкончания, ДЕНЬ) | ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | КОНЕЦ КАК ПериодДействияКонец, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Подразделение, | СтрокиНачисления.Результат, | "+ Если Не ЗначениеЗаполнено(Сотр)Тогда | СтрокиНачисления.Сотрудник, |Иначе | Константы.СотрПодразделения КАК Сотрудник |КонецЕсли" | СтрокиНачисления.Сотрудник.Физлицо КАК Физлицо, | СтрокиНачисления.ОтработаноДней КАК ОтработаноДней, | СтрокиНачисления.ОтработаноЧасов КАК ОтработаноЧасов, | Работники.ГрафикРаботы, |
|||
1
Reset
26.07.12
✎
13:07
|
Продолжай попытки
|
|||
2
SherifSP
26.07.12
✎
13:09
|
| "+ Если Не ЗначениеЗаполнено(Сотр)Тогда+"
| СтрокиНачисления.Сотрудник, |"+Иначе+" | Константы.СотрПодразделения КАК Сотрудник |"+КонецЕсли+" или так нужно? |
|||
3
Kolls
26.07.12
✎
13:09
|
ВЫБОР КОГДА Сотр<>ЗНАЧЕНИЕ(СПРАВОЧНИК.СОТРУДНИКИ.ПУСТАЯССЫЛКА)
ТОГДА ХХХХХ ИНАЧЕ УУУУУ Конец |
|||
4
SherifSP
26.07.12
✎
13:12
|
У меня есть константа если она не заполнена я в запросе вытягиваю
СтрокиНачисления.Сотрудник, Иначе Константы.СотрПодразделения КАК Сотрудник Мне сам синтаксис нужен |
|||
5
SherifSP
26.07.12
✎
13:14
|
(3)То есть получается условие я не смогу так прилепить к запросу, нужно через условие запроса все делать?
|
|||
6
SherifSP
26.07.12
✎
14:15
|
ВЫБОР
КОГДА Константы.СотрПодразделения <> ЗНАЧЕНИЕ(СПРАВОЧНИК.ФИЗИЧЕСКИЕЛИЦА.ПУСТАЯССЫЛКА) ТОГДА СУММА(СтрокиУдержания.Результат) > 0 Ругается не должно > стоять( ИНАЧЕ СтрокиУдержания.Результат КОНЕЦ |
|||
7
МурЬка
26.07.12
✎
14:17
|
Это. Тут все в шоке. Но сейчас кто-нибудь придет в себя и обязательно ответит по делу.
|
|||
8
Wobland
26.07.12
✎
14:18
|
(6) ну сам скажи, что, если сотрудник не пустой?
|
|||
9
Dionis Sergeevich
26.07.12
✎
14:18
|
Если Условие Тогда Текст = ТекстЗапросаНАчало + ТекстЗапросаСередина + ТекстЗапросаКонец
Иначе Текст = ТекстЗапросаНачало +ТекстЗапросаКонец |
|||
10
Dionis Sergeevich
26.07.12
✎
14:20
|
разбей текст запроса на строчные переменные кусками и простыми условиями создавай свой динамический текст запроса
|
|||
11
SherifSP
26.07.12
✎
14:20
|
СУММА(СтрокиУдержания.Результат) > 0 В условии норм отрабатывало, но оно отрабатывало для всех сотрудников, а мне нужно только для сотрудника который в константе
|
|||
12
Wobland
26.07.12
✎
14:21
|
(11) тупо, не думая.
выбор когда не пустой тогда выбор когда... |
|||
13
SherifSP
26.07.12
✎
14:22
|
(12) Почему не думая?
|
|||
14
Wobland
26.07.12
✎
14:22
|
(13) потому что тороплюсь уходить ;)
|
|||
15
SherifSP
26.07.12
✎
14:23
|
Мне бы пример более подробный))
|
|||
16
Dionis Sergeevich
26.07.12
✎
14:23
|
(13) чего не сделаешь как в (10) написано?
|
|||
17
Шапокляк
26.07.12
✎
14:23
|
Если Не ЗначениеЗаполнено(Сотр) Тогда
КусочекТекстаЗапроса="квакваква" Иначе КусочекТекстаЗапроса="Мяумяумяу"; КонецЕсли; Запрос.Текст= .....+КусочекТекстаЗапроса+" ......."; |
|||
18
SherifSP
26.07.12
✎
14:25
|
(17) - (6)А моим способом никак?
|
|||
19
SherifSP
26.07.12
✎
14:25
|
(17) Таким я сделал, надо оптимально сократить
|
|||
20
Reset
26.07.12
✎
14:26
|
(19) Ждем критерия оптимальности
|
|||
21
SherifSP
26.07.12
✎
14:27
|
(20)Все сделать в запросе без +КусочекЗапроса+, чтобы можно через компоновку зайти посмотреть
|
|||
22
Dionis Sergeevich
26.07.12
✎
14:28
|
Текст1 =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ | СтрокиНачисления.ВидРасчета, | СтрокиНачисления.ВидРасчета.ЗачетОтработанногоВремени КАК ЗачетОтработанногоВремени, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.ДатаНачала КАК ПериодДействияНачало, | ВЫБОР | КОГДА СтрокиНачисления.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА КОНЕЦПЕРИОДА(СтрокиНачисления.ДатаОкончания, ДЕНЬ) | ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | КОНЕЦ КАК ПериодДействияКонец, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Подразделение, | СтрокиНачисления.Результат" Текст2 = " ,СтрокиНачисления.Сотрудник," Текст3 = " , Константы.СотрПодразделения КАК Сотрудник" Текст4 = " еще какая-то часть запроса" Если Твое условие Тогда Текст = Текст1 + Текст2 +Текст4 Иначе Текст = Текст1 + Текст3 + Текст4 ЗАпрос.Текст = Текст Все просто |
|||
23
Шапокляк
26.07.12
✎
14:28
|
(19)
| СтрокиНачисления.Результат, | "+ ?(ЗначениеЗаполнено(Сотр),"кваква","мяумяу")+".... |
|||
24
SherifSP
26.07.12
✎
14:31
|
(23) Если я нахожусь в консоле запросов, как можно проверить код?
|
|||
25
SherifSP
26.07.12
✎
14:32
|
(23)Сейчас проверю не через консоль
|
|||
26
SherifSP
26.07.12
✎
14:50
|
| "+ ?(ЗначениеЗаполнено(Сотр),"СУММА(СтрокиУдержания.Результат) > 0","СтрокиУдержания.Результат")+"....
Типа так? |
|||
27
МурЬка
26.07.12
✎
15:45
|
СУММА(СтрокиУдержания.Результат) > 0 - не может быть полем.
|
|||
28
jj369
26.07.12
✎
15:57
|
| //Условие
Если ЗначениеЗаполнено(Сотрудник)=Истина Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//Условие", СамТекст); КонецЕсли; |
|||
29
SherifSP
27.07.12
✎
09:43
|
Как синтаксически правильно оформить условие запроса.Вот запрос
"ВЫБРАТЬ РАЗРЕШЕННЫЕ | &парамНачало КАК Период, | ИСТИНА КАК Подходит, | РаботникиОрганизацийСрезПоследних.ГрафикРаботы КАК ГрафикРаботы, | РаботникиОрганизацийСрезПоследних.Должность КАК Должность, | РаботникиОрганизацийСрезПоследних.Сотрудник, | РаботникиОрганизацийСрезПоследних.Организация, | СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение, | РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо КАК Физлицо |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК РаботникиОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеПодразделенийИПодразделенийОрганизаций КАК СоответствиеПодразделенийИПодразделенийОрганизаций | ПО РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СоответствиеПодразделенийИПодразделенийОрганизаций.ПодразделениеОрганизации |ГДЕ | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | И СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение = &Подразделение | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | РаботникиОрганизаций.Организация, | РаботникиОрганизаций.Период, | РаботникиОрганизаций.Сотрудник, | ВЫБОР | КОГДА РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ, | РаботникиОрганизаций.ГрафикРаботы, | РаботникиОрганизаций.Должность, | NULL, | РаботникиОрганизаций.Сотрудник.Физлицо |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.Период > &парамНачало | И РаботникиОрганизаций.Период <= &парамКонец"; Если Объект = Документы.НачислениеЗарплатыРаботникам Тогда |ГДЕ | РаботникиОрганизаций.Период > &парамНачало | И РаботникиОрганизаций.Период <= &парамКонец"; - Тогда только это условие налаживается КонецЕсли |
|||
30
hhhh
27.07.12
✎
10:18
|
(29) текст запроса - это просто строка. Так и работайте с ним как со строкой. Например:
Если Объект = Документы.НачислениеЗарплатыРаботникам Тогда ТекстЗапроса = ТекстЗапроса + "ВАСЯ"; Иначе ТекстЗапроса = ТекстЗапроса + "ГРИША"; КонецЕсли; Такая конструкция понятна? |
|||
31
Dionis Sergeevich
27.07.12
✎
10:28
|
(30) я ему вон на его коде пример привел в (22)
Он стебется чтоле? Шутник =) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |