Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 Borteg
 
08.04.13
16:46
Простой запрос.
Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    Сотрудники.Ссылка КАК Сотрудник,
       |    &Оклад КАК ВидРасчета,
       |    Сотрудники.УпрОклад КАК Сумма
       |ИЗ
       |    Справочник.Сотрудники КАК Сотрудники
       |ГДЕ
       |    Сотрудники.Рассчитывать = &Рассчитывать
       |    И Сотрудники.ЭтоГруппа = ЛОЖЬ
       |    И Сотрудники.Подразделение = &Подразделение";

   Рассчитывать = Истина;
   Запрос.УстановитьПараметр("Оклад",ПланыВидовРасчета.УпрНачисления.ОкладРегл);
   Запрос.УстановитьПараметр("Рассчитывать", Рассчитывать);
   Запрос.УстановитьПараметр("Подразделение",Подразделение);
   
   Результат = Запрос.Выполнить().Выгрузить();

       Возврат Результат;    

Передается значение подразделения. Как указать что если значение не указанно то вывести всех сотрудников? УЖе пол инета облазил так и не нашел()
1 Wobland
 
08.04.13
16:47
Сотрудники.Подразделение = &Подразделение ИЛИ &Подразделение=Значение(Сотрудники.Подразделение.ПустаяСсылка)

{}
2 Wobland
 
08.04.13
16:47
(1) значение(Справочник....)
3 Dionis Sergeevich
 
08.04.13
16:54
Если НЕ Подразделение = Неопределено // Или пустая ссылка
Тогда
Запрос.Текст = ЗАпрос.Текст +  " И Сотрудники.Подразделение..."
4 Dionis Sergeevich
 
08.04.13
16:56
Ну или синтаксические конструкции {(&Подразделение)} - но это работает вроде только в СКД
5 Мимохожий Однако
 
08.04.13
16:58
Сделай проверку на условие и создай текст запроса без строк:
" |    И Сотрудники.ЭтоГруппа = ЛОЖЬ
       |    И Сотрудники.Подразделение = &Подразделение"
6 НафНаф
 
08.04.13
16:58
|    И &УсловиеПодразделение"

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,?(ЗначениеЗаполнено(Подразделение),"Сотрудники.Подразделение = &Подразделение","Истина"));
7 Dionis Sergeevich
 
08.04.13
16:59
(6) как изящно =)
8 Borteg
 
08.04.13
17:01
Вот это пища для размышления) Спасибо большое) Щас все 3 способа попробую отпишусь о результатх
9 Borteg
 
08.04.13
17:08
(3)    Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    Сотрудники.Ссылка КАК Сотрудник,
       |    &Оклад КАК ВидРасчета,
       |    Сотрудники.УпрОклад КАК Сумма
       |ИЗ
       |    Справочник.Сотрудники КАК Сотрудники
       |ГДЕ
       |    Сотрудники.Рассчитывать = &Рассчитывать
       |    И Сотрудники.ЭтоГруппа = ЛОЖЬ";
       Если НЕ Подразделение = Справочники.ПодразделенияОрганизации.ПустаяСсылка()
           тогда Запрос.Текст = Запрос.Текст +
       "    И Сотрудники.Подразделение = &Подразделение" ;
       КонецЕсли;
       

   Рассчитывать = Истина;
   Запрос.УстановитьПараметр("Оклад",ПланыВидовРасчета.УпрНачисления.ОкладРегл);
   Запрос.УстановитьПараметр("Рассчитывать", Рассчитывать);
   Запрос.УстановитьПараметр("Подразделение",Подразделение);
   Результат = Запрос.Выполнить().Выгрузить();

       Возврат Результат;    
Отлично получилось)Токо с кавычками запутался ыы)спасибо) Щас другие посмотрю)
10 Wobland
 
08.04.13
17:10
шо, никто не видит, что (1) можно спокойно конструктору подсовывать?
11 Dionis Sergeevich
 
08.04.13
17:11
(9) Не забудь в самом хорошем варианте указать подстроку поиска.
12 НафНаф
 
08.04.13
17:11
(10) некошерно, ИЛИ часто убивает использование индекса
13 Dionis Sergeevich
 
08.04.13
17:12
(10) Тоже красивый вариант =))
14 Borteg
 
08.04.13
17:12
(10) плюется сильно очень)пытаюсь разобраться.
15 GANR
 
08.04.13
17:14
ПостроительЗапроса
16 Borteg
 
08.04.13
17:37
(6) мало того что в мозгу меня от  циклит, так и не могу понять че не работает)))
17 Зойч
 
08.04.13
17:38
(15)+100500
18 Borteg
 
08.04.13
17:39
(6) а все)отлично работает)и вправду изящно)
19 Borteg
 
08.04.13
17:41
|   И Сотрудники.Подразделение = &Подразделение";

Запрос.Текст = СтрЗаменить(Запрос.Текст,?(Подразделение = Справочники.ПодразделенияОрганизации.ПустаяСсылка(),"И Сотрудники.Подразделение = &Подразделение","Круто"),"");

вот так получилось
20 Borteg
 
08.04.13
17:47
Кстати а ТабличнаяЧасть.Загрузить() очищает ТЧ перед загрузкой? а то у меня очистки нету я нажимаю 2 раза кнопку а то все обновляется
21 Borteg
 
08.04.13
17:47
Вопрос снят СП в помощь))
22 Borteg
 
08.04.13
17:47
Спасибо всем за помощь!
23 Dionis Sergeevich
 
08.04.13
17:52
(19) вроде там надо было делать по другому..

|   И УсловиеПодразделения";

Запрос.Текст = СтрЗаменить(Запрос.Текст, "УсловиеПодразделения", ?(Подразделение = Справочники.ПодразделенияОрганизации.ПустаяСсылка(), "Истина","Сотрудники.Подразделение = &Подразделение"));
24 Borteg
 
08.04.13
17:53
(23) Можно и так)Главное что метод я понял)
25 Dionis Sergeevich
 
08.04.13
17:53
Хотя и твой вариант должен работать =) но он более замудрен чтоли =)
26 Dionis Sergeevich
 
08.04.13
17:54
(24) Грац =) Успехов