Версия для печати темы (https://pro1c.org.ua/index.php?s=560220183ba3aac3eb29967ec65250a2&showtopic=41240)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Как проверить сотрудника на открытый больничный

Автор: martynovalena 23.10.17, 9:48

ЗУП, 2.5 (2.5.123.1)

Мне в результате запроса нужно проверить может ли сотрудник быть отправлен в командировку.

В запросе нужно проверить на наличие у него ,в период командировки, больничного. Сложность в том что больничный может быть еще не закрыт

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.Текст =

 "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                   |    КомандировкиОрганизацийРаботникиОрганизации.НомерСтроки,
                   |    КомандировкиОрганизацийРаботникиОрганизации.Сотрудник,
                   |    КомандировкиОрганизацийРаботникиОрганизации.ДатаНачала,
                   |    КомандировкиОрганизацийРаботникиОрганизации.ДатаОкончания
                   |ПОМЕСТИТЬ ВТПериодыДляПроверки
                   |ИЗ
                   |    Документ.КомандировкиОрганизаций.РаботникиОрганизации КАК КомандировкиОрганизацийРаботникиОрганизации
                   |ГДЕ
                   |    КомандировкиОрганизацийРаботникиОрганизации.Ссылка = &Ссылка
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    СостояниеРаботниковОрганизаций.Регистратор КАК ПервичныйДокумент,
                   |    ВТПериодыДляПроверки.НомерСтроки КАК НомерСтроки,
                   |    СостояниеРаботниковОрганизаций.Сотрудник,
                   |    СостояниеРаботниковОрганизаций.Период КАК ПериодНачало,
                   |    ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ, -1) КАК ПериодКонец,
                   |    ВТПериодыДляПроверки.ДатаОкончания
                   |ИЗ
                   |    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПериодыДляПроверки КАК ВТПериодыДляПроверки
                   |        ПО СостояниеРаботниковОрганизаций.Сотрудник = ВТПериодыДляПроверки.Сотрудник
                   |            И (ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ, -1) >= ВТПериодыДляПроверки.ДатаНачала)
                   |            И (СостояниеРаботниковОрганизаций.Период <= ВТПериодыДляПроверки.ДатаОкончания)
                   |            И (СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ПособиеПриДолечивании))
                   |            И (СостояниеРаботниковОрганизаций.Регистратор <> &Ссылка)
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ВТПериодыДляПроверки.НомерСтроки,
                   |    СостояниеРаботниковОрганизаций.Регистратор,
                   |    СостояниеРаботниковОрганизаций.Сотрудник,
                   |    СостояниеРаботниковОрганизаций.Период,
                   |    СостояниеРаботниковОрганизаций.ПериодЗавершения,
                   |    ВТПериодыДляПроверки.ДатаОкончания
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    НомерСтроки,
                   |    ПервичныйДокумент
                   |ИТОГИ ПО
                   |    НомерСтроки
                   |АВТОУПОРЯДОЧИВАНИЕ";



 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 4,5
 

Автор: martynovalena 24.10.17, 14:30

В чем причина? Я все еще никак не разберусь с этим запросом.

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

Ошибка :Временная Таблица "Заболевшие " уже существует

Автор: logist 24.10.17, 14:54

Цитата(martynovalena @ 24.10.17, 15:30) *
Ошибка :Временная Таблица "Заболевшие " уже существует

Эта временная таблица уже помещена в предыдущем запросе:
Цитата(martynovalena @ 24.10.17, 15:30) *
ПроверкаБольничных.МенеджерВременныхТаблиц=Запрос.МенеджерВременныхТаблиц;


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua