Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2024, 15:51

Условия в запросе.

Автор ksander-fars, 08 дек 2016, 08:25

0 Пользователей и 1 гость просматривают эту тему.

ksander-fars

Здраствуйте! Конф ЗУП 2.5

Создал вот такой запрос
ВЫБРАТЬ
СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
СотрудникиОрганизаций.Должность,
СотрудникиОрганизаций.ПодразделениеОрганизации,
СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1,
СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2,
СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3
ИЗ
РегистрСведений.СмежныеПрофессииСотрудниковОрганизаций.СрезПоследних КАК СмежныеПрофессииСотрудниковОрганизацийСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ПО СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка
ГДЕ
СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 <> &ПустаяДолжность
И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
И СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)
        И СотрудникиОрганизаций.Должность = И СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)

УПОРЯДОЧИТЬ ПО
Сотрудник
АВТОУПОРЯДОЧИВАНИЕ


Как мне правильно переделать запрос так, что бы если в параметр &Должность ничего из формы не передаётся выводились все записи по подразделению? В данный момент необходимо указывать оба параметра (&Подразделение и &Должность) для работы отчета.

ksander-fars

Всё очень просто, сделал вот так:

Запрос.Текст =
"ВЫБРАТЬ
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| СотрудникиОрганизаций.Должность,
| СотрудникиОрганизаций.ПодразделениеОрганизации,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации3,
| СотрудникиОрганизаций.ДатаУвольнения
|ИЗ
| РегистрСведений.СмежныеПрофессииСотрудниковОрганизаций.СрезПоследних КАК СмежныеПрофессииСотрудниковОрганизацийСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ПО СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка
|ГДЕ
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 <> &ПустаяДолжность
| И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)";
Если Должность <> Справочники.ДолжностиОрганизаций.ПустаяСсылка() Тогда
Запрос.Текст = Запрос.Текст +
" И СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)
| И СотрудникиОрганизаций.Должность = &Должность";
Иначе
Запрос.Текст = Запрос.Текст +
        " И СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)";
КонецЕсли;
Запрос.Текст = Запрос.Текст +
" УПОРЯДОЧИТЬ ПО
| Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";

cska-fanat-kz

сделайте условие для должности тоже В ИЕРАРХИИ() и будет вам счастье
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ksander-fars

Цитата: cska-fanat-kz от 08 дек 2016, 10:09
сделайте условие для должности тоже В ИЕРАРХИИ() и будет вам счастье
По сотрудникам всё норм выводится, кроме того что он захватывает ещё и уволенных. Как отсеять уволенных? По условию ДатаВремя(1,1,1) не помогает...
Вот код

Запрос = Новый Запрос;

Запрос.Текст = 
"ВЫБРАТЬ
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| СотрудникиОрганизаций.Должность,
| СотрудникиОрганизаций.ПодразделениеОрганизации,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации3,
| СотрудникиОрганизаций.ДатаУвольнения
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СмежныеПрофессииСотрудниковОрганизаций.СрезПоследних КАК СмежныеПрофессииСотрудниковОрганизацийСрезПоследних
| ПО СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка
|ГДЕ
| СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)
| И СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 В ИЕРАРХИИ(&ПустаяДолжность)
| И СотрудникиОрганизаций.ДатаУвольнения = ДатаВремя(1,1,1)";
Если Должность <> Справочники.ДолжностиОрганизаций.ПустаяСсылка() Тогда
Запрос.Текст = Запрос.Текст +
" И СотрудникиОрганизаций.Должность В ИЕРАРХИИ(&Должность)
| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 В ИЕРАРХИИ(&Должность)
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2 В ИЕРАРХИИ(&Должность)
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3 В ИЕРАРХИИ(&Должность))";
КонецЕсли;
Запрос.Текст = Запрос.Текст +
" УПОРЯДОЧИТЬ ПО
| Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";



alex0402

Цитата: ksander-fars от 09 дек 2016, 08:40| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 В ИЕРАРХИИ(&Должность)

здесь скобка не там.
Спасибо за Сказать спасибо

ksander-fars

Точнее код вот такой

Запрос.Текст = 
"ВЫБРАТЬ
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| СотрудникиОрганизаций.Должность,
| СотрудникиОрганизаций.ПодразделениеОрганизации,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации1,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации2,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3,
| СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.ПодразделениеОрганизации3,
| СотрудникиОрганизаций.ДатаУвольнения
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СмежныеПрофессииСотрудниковОрганизаций.СрезПоследних КАК СмежныеПрофессииСотрудниковОрганизацийСрезПоследних
| ПО СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка
|ГДЕ
| СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделение)
| И СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 = &ПустаяДолжность
| И СотрудникиОрганизаций.ДатаУвольнения = &ПустаяДата";
Если Должность <> Справочники.ДолжностиОрганизаций.ПустаяСсылка() Тогда
Запрос.Текст = Запрос.Текст +
" И СотрудникиОрганизаций.ДатаУвольнения = &ПустаяДата
| И СотрудникиОрганизаций.Должность = &Должность
| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 = &Должность
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2 = &Должность
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3 = &Должность)";
КонецЕсли;
Запрос.Текст = Запрос.Текст +
" УПОРЯДОЧИТЬ ПО
| Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";

Добавлено: 09 дек 2016, 09:04


Цитата: alex0402 от 09 дек 2016, 08:56
Цитата: ksander-fars от 09 дек 2016, 08:40| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 В ИЕРАРХИИ(&Должность)

здесь скобка не там.

Скобка там, объединяет несколько условий в одно.

                И СотрудникиОрганизаций.ДатаУвольнения = &ПустаяДата
| И СотрудникиОрганизаций.Должность = &Должность
| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 = &Должность
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность2 = &Должность
| ИЛИ СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность3 = &Должность)

Т.е. если хоть одно условие срабатывает то истина иначе ложь. И тем более ни как не влияет на мой взгляд на проблему выборки уволенных сотрудников. Почему они выбираются? Такое происходит только при выборке сотрудников по должности. Если должность не указывать то выбираются все сотрудники подразделения и уволенных там нет.

alex0402

Цитата: ksander-fars от 09 дек 2016, 08:59| ИЛИ (

срабатывает этот или и плевать ему уволен или нет!
Спасибо за Сказать спасибо

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск