Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Июн 2021, 09:37
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Условия в запросе.  (Прочитано 3717 раз)

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

Оффлайн ksander-fars

  • **
  • Регистрация: 2016-05-04
  • Сообщений: 78
  • РЕПУТАЦИЯ: 1
  • КПД: 1%
  • Профессия: Ученик 1С
Здраствуйте! Конф ЗУП 2.5

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

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

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


Оффлайн ksander-fars

  • **
  • Регистрация: 2016-05-04
  • Сообщений: 78
  • РЕПУТАЦИЯ: 1
  • КПД: 1%
  • Профессия: Ученик 1С
Всё очень просто, сделал вот так:

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

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • *****
  • Регистрация: 2010-11-06
  • Сообщений: 5748
  • РЕПУТАЦИЯ: 1105
  • КПД: 19%
  • Красная армия всех сильней!
    • Skype: cska-fanat-kz81
  • Профессия: Разработчик 1С
сделайте условие для должности тоже В ИЕРАРХИИ() и будет вам счастье
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн ksander-fars

  • **
  • Регистрация: 2016-05-04
  • Сообщений: 78
  • РЕПУТАЦИЯ: 1
  • КПД: 1%
  • Профессия: Ученик 1С
сделайте условие для должности тоже В ИЕРАРХИИ() и будет вам счастье
По сотрудникам всё норм выводится, кроме того что он захватывает ещё и уволенных. Как отсеять уволенных? По условию ДатаВремя(1,1,1) не помогает...
Вот код
Запрос = Новый Запрос;

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


Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
| ИЛИ (СмежныеПрофессииСотрудниковОрганизацийСрезПоследних.Должность1 В ИЕРАРХИИ(&Должность)

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

Оффлайн ksander-fars

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

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

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

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

Последний раз редактировалось: ksander-fars; 09 Дек 2016, 09:10

Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
| ИЛИ (

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
72 Сообщений
LexaK
62 Сообщений
antoneus antoneus
31 Сообщений
Ивашка
27 Сообщений
KATERINA 861
23 Сообщений
neek666
22 Сообщений
alexandr_ll
15 Сообщений
SSC
15 Сообщений
Алексей_1985_06
11 Сообщений
pouyo
8 Сообщений

* Кто онлайн

  • Точка Гостей: 220
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск