Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
5 / 5 / 0
Регистрация: 20.08.2012
Сообщений: 79
1
1C 8.x

Как в запросе поставить условие ?

31.07.2014, 20:16. Показов 2586. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый. Запутался. Есть запрос в запросе получаем даты когда человек ушел в отпуск (СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения) интересует дата окончания отпуска. Так вот из этой даты нужно вычесть один день, я сделал так : ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1)
Но нужно сделать условие на проверку, вдруг человек НЕ в отпуске тогда дата будет равна неопределенно а если вычесть из этого 1 то будет ошибка.
Сделал так:
1C
1
2
3
4
КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения ЕСТЬ NULL 
  | ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения
  | ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1) 
  |    КОНЕЦ КАК ПериодЗавершения
Но чет нефурычит это условие, подскажите что не так ?




Если надо то вот весь запрос:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
ВЫБРАТЬ
                 |  СотрудникиОрганизаций.Код КАК ТабельныйНомер,
                 |  СотрудникиОрганизаций.Физлицо.СтраховойНомерПФР КАК СтраховойНомерПФР,
                 |  ФИОФизЛицСрезПоследних.Фамилия,
                 |  ФИОФизЛицСрезПоследних.Имя,
                 |  ФИОФизЛицСрезПоследних.Отчество,
                 |  СотрудникиОрганизаций.Физлицо.ДатаРождения КАК ДатаРождения,
                 |  СотрудникиОрганизаций.ДатаПриемаНаРаботу,
                 |  СотрудникиОрганизаций.ДатаУвольнения,
                 |  СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код КАК Подразделение1,
                 |  СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код КАК Должность,
                 |  ВложенныйЗапрос.ПериодЗавершения КАК ДатаОкончанияОтпуска,
                 |  ВложенныйЗапрос.Период КАК ДатаНачалаОтпуска,
                 |  СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
                 |  СотрудникиОрганизаций.Ссылка КАК Сотрудник,
                 |  СотрудникиОрганизаций.ВидЗанятости,
                 |  СотрудникиОрганизаций.Физлицо.Код КАК КодФЛ,
                 |  СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Ссылка КАК ПодразделениеСсылка
                 |ИЗ
                 |  РегистрСведений.ФИОФизЛиц.СрезПоследних(&Период, ) КАК ФИОФизЛицСрезПоследних
                 |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                 |          ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Период КАК Период,
                 |              ВЫБОР
                 |                  КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения ЕСТЬ NULL 
                 |                      ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения
                 |                  ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения, ДЕНЬ, -1)
                 |              КОНЕЦ КАК ПериодЗавершения,
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК Состояние,
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник
                 |          ИЗ
                 |              РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&Период, ПериодЗавершения <= &Период) КАК СостояниеРаботниковОрганизацийСрезПоследних
                 |          ГДЕ
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Состояние.Ссылка В(&Состояния)) КАК ВложенныйЗапрос
                 |          ПО СотрудникиОрганизаций.Ссылка = ВложенныйЗапрос.Сотрудник.Ссылка
                 |      ПО ФИОФизЛицСрезПоследних.ФизЛицо.Ссылка = СотрудникиОрганизаций.Физлицо.Ссылка
                 |          И (НЕ ФИОФизЛицСрезПоследних.ФизЛицо.ПометкаУдаления)
                 |ГДЕ
                 |  СотрудникиОрганизаций.ДатаПриемаНаРаботу <> &ПустаяДата
                 |  И (СотрудникиОрганизаций.ДатаУвольнения = &ПустаяДата
                 |          ИЛИ СотрудникиОрганизаций.ДатаУвольнения > &Дата2014)
                 |  И НЕ СотрудникиОрганизаций.ПометкаУдаления
                 |  И СотрудникиОрганизаций.Организация = &Учреждение";
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2014, 20:16
Ответы с готовыми решениями:

Как сделать условие в запросе
Здраствуйте, мне нужно сделать условие Если ... тогда ... иначе в запросе, я сделал такую...

условие в запросе 7.7
Если в запросе я хочу сделать условие: |Условие (Покупатель в СписокПокупателей); Какого...

Условие в запросе
Можете подсказать, нужно поставить такое условие в запросе есть реквизит пустое значение тогда...

Условие в запросе
Помогите, пожалуйста!!! Я пишу отчет, который должен выводить таблицу с колонками: Товар,заявки,...

4
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
31.07.2014, 22:36 2
max815, условие на NULL нужно прописывать после соединения основной таблицы с данным регистром:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ВЫБРАТЬ
                 |  СотрудникиОрганизаций.Код КАК ТабельныйНомер,
                 |  СотрудникиОрганизаций.Физлицо.СтраховойНомерПФР КАК СтраховойНомерПФР,
                 |  ФИОФизЛицСрезПоследних.Фамилия,
                 |  ФИОФизЛицСрезПоследних.Имя,
                 |  ФИОФизЛицСрезПоследних.Отчество,
                 |  СотрудникиОрганизаций.Физлицо.ДатаРождения КАК ДатаРождения,
                 |  СотрудникиОрганизаций.ДатаПриемаНаРаботу,
                 |  СотрудникиОрганизаций.ДатаУвольнения,
                 |  СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код КАК Подразделение1,
                 |  СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код КАК Должность,
                 |  ВЫБОР
                 |                  КОГДА ВложенныйЗапрос.ПериодЗавершения ЕСТЬ NULL 
//правда в чем суть этого? Тут Null будет, ничего?
                 |                      ТОГДА ВложенныйЗапрос.ПериодЗавершения
                 |                  ИНАЧЕ ДОБАВИТЬКДАТЕ(ВложенныйЗапрос.ПериодЗавершения, ДЕНЬ, -1)
                 |              КОНЕЦ КАК ДатаОкончанияОтпуска,
                 |  ВложенныйЗапрос.Период КАК ДатаНачалаОтпуска,
                 |  СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
                 |  СотрудникиОрганизаций.Ссылка КАК Сотрудник,
                 |  СотрудникиОрганизаций.ВидЗанятости,
                 |  СотрудникиОрганизаций.Физлицо.Код КАК КодФЛ,
                 |  СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Ссылка КАК ПодразделениеСсылка
                 |ИЗ
                 |  РегистрСведений.ФИОФизЛиц.СрезПоследних(&Период, ) КАК ФИОФизЛицСрезПоследних
                 |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                 |          ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Период КАК Период,
                 |              СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения КАК ПериодЗавершения,
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК Состояние,
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник КАК Сотрудник
                 |          ИЗ
                 |              РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&Период, ПериодЗавершения <= &Период) КАК СостояниеРаботниковОрганизацийСрезПоследних
                 |          ГДЕ
                 |              СостояниеРаботниковОрганизацийСрезПоследних.Состояние.Ссылка В(&Состояния)) КАК ВложенныйЗапрос
                 |          ПО СотрудникиОрганизаций.Ссылка = ВложенныйЗапрос.Сотрудник.Ссылка
                 |      ПО ФИОФизЛицСрезПоследних.ФизЛицо.Ссылка = СотрудникиОрганизаций.Физлицо.Ссылка
                 |          И (НЕ ФИОФизЛицСрезПоследних.ФизЛицо.ПометкаУдаления)
                 |ГДЕ
                 |  СотрудникиОрганизаций.ДатаПриемаНаРаботу <> &ПустаяДата
                 |  И (СотрудникиОрганизаций.ДатаУвольнения = &ПустаяДата
                 |          ИЛИ СотрудникиОрганизаций.ДатаУвольнения > &Дата2014)
                 |  И НЕ СотрудникиОрганизаций.ПометкаУдаления
                 |  И СотрудникиОрганизаций.Организация = &Учреждение";
1
5 / 5 / 0
Регистрация: 20.08.2012
Сообщений: 79
01.08.2014, 11:44  [ТС] 3
Если ничего нет то, пусто тогда продолжить а если попала дата тогда вычесть из нее один день. Не помогло !

Добавлено через 9 минут
Ладно допустим бог с ним запросом. В модуле нашел где эта "дата" появляется. Написал так но чет синтаксис проверку немогу пройти.
В области циула где эта каша вся перебирается написал:
Если СтрокаРезультат.ДатаОкончанияОтпуска = неопределено Тогда
СтрокаРезультат.ДатаОкончанияОтпуска Иначе
КонецДня (СтрокаРезультат.ДатаОкончанияОтпуска -1)
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
01.08.2014, 11:53 4
давайте с алгоритма начнём? И создадим нормальный запрос.
Нас интересует РС СостояниеРаботниковОрганизаций с ресурсом Состояние В (&СписокОтпусков),
Срез на какую-то дату,
Несколько реквов из Справочника.СотрудникиОрганизаций. Не стесняемся указывать через точку: Сотрудник.ФизЛицо.Пол
Ну, а ФИО придётся левым соединением со среза РС, употребляя функцию IsNull(РС_ФИО.Фамилия,"")
Так?
1
5 / 5 / 0
Регистрация: 20.08.2012
Сообщений: 79
03.08.2014, 19:02  [ТС] 5
Модеры спасибо за Ваш отклик, все я сам разобрался, тему можно закрыть !
0
03.08.2014, 19:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2014, 19:02
Помогаю со студенческими работами здесь

Условие иерархии в запросе
Здравствуйте. Делаю обработку, для показа списка номенклатуры по группам. Появилась проблема....

Условие отбора в запросе
Всем, здравстуйте. В табличной части документа есть поле с типом значения дата. Не получается...

Условие и выбор в запросе
Добрый день. Есть у меня такой работающий запрос: Запрос.Текст = &quot;ВЫБРАТЬ ...

Правильное условие в запросе
Привет. Проблема плевая, но меня чет так сильно затупило, что я уже готов спросить (видимо пару...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru