ЗУП 2.5 Косячное Левое соединение РС #811569


#0 by atlantika
с некоторого времени сотрудник работал внешним совместителем. Уволен 30.11.2017. С 01.12.2017 принят как на основное место работы. Есть вот такой кусочек запроса: Опытным путем выявлено что проблема с условии ВложенныйЗапрос.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) ВОПРОС: почему при запросе по сотруднику основного места работы в соединении из состояний подтягивает сотрудника по совместительству уволенного? и как следствие сотрудник не попадает в отбор?? Элементы сотрудников созданы корректно, документы перепроведены, визуально все красиво и правильно!! Прошу не судить строго, если где то туплю - я в декрете ))
#1 by vicof
В документах точно два сотрудника правильно выбраны?
#2 by atlantika
перепроверяла пока только в режиме предприятия. Каждый документ, каждую строчку...
#3 by atlantika
на всякий случай и в увольнении и в приеме перевыбрала сотрудников и перепровела - результат без изменений.
#4 by Alexandr_U1982
1. Оставить в запросе только строчки, относящиеся к регистру "РаботникиОрганизаций". Добавить в выборку поля "Период" и "ПериодЗавершения" из регистра "РаботникиОрганизаций. Условие "ВложенныйЗапрос.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение" убрать. Выполнить запрос, результат запроса выгрузить в таблицу. Найти в таблице обоих сотрудников и посмотреть, что находится в полях "Период", "ПериодЗавершения" и "ПричинаИзмененияСостояния". 2. Вернуть в запрос условие "ВложенныйЗапрос.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение". Выполнить запрос, результат запроса выгрузить в таблицу. Найти в таблице обоих сотрудников и посмотреть, что находится в полях "Период", "ПериодЗавершения" и "ПричинаИзмененияСостояния". 3. Сравнить значения полей "Период", "ПериодЗавершения" и "ПричинаИзмененияСостояния" по требуемым сотрудникам из пунктов 1 и 2. Подумать над тем, есть ли отличия и почему они возникли. 4. Добавить соединение с регистром "СостояниеРаботниковОрганизаций" в запрос из пункта 1. В список выбираемых полей добавить поле "Состояние" из регистра "СостояниеРаботниковОрганизаций". Условия на это поле не добавлять. Выполнить запрос, выгрузить в таблицу посмотреть значения полей "Период", "ПериодЗавершения", "ПричинаИзмененияСостояния" и "Состояние" по требуемым сотрудникам. 5. В запрос из пункта 4 добавить условие "ВложенныйЗапрос.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)". Выполнить запрос, выгрузить в таблицу посмотреть значения полей "Период", "ПериодЗавершения", "ПричинаИзмененияСостояния" и "Состояние" по требуемым сотрудникам. 6. В запрос из пункта 4 добавить условие "ВложенныйЗапрос.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком)". Выполнить запрос, выгрузить в таблицу посмотреть значения полей "Период", "ПериодЗавершения", "ПричинаИзмененияСостояния" и "Состояние" по требуемым сотрудникам. 7. В запрос из пункта 4 добавить условия "ВложенныйЗапрос.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам) И ВложенныйЗапрос.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком)". Выполнить запрос, выгрузить в таблицу посмотреть значения полей "Период", "ПериодЗавершения", "ПричинаИзмененияСостояния" и "Состояние" по требуемым сотрудникам. 8. Сравнить результаты из пунктов 5, 6, 7. Подумать над различиями результатов.
#5 by atlantika
спасибо. Все попробую. ))
#6 by atlantika
если убрать все три условия отбора - показывает обоих сотрудников. Все как положено: у старого причина изменения - увольнение, у нового прием, последнее изменение состояния у старого сотр.  на октябрь - выход на работу... у нового сотр. нет записей. в части РС.Состояния - показывает девственно чистые поля. Если поставить условие по уволенным - показывает только нового сотрудника. Если поставить второе или третье условие - показывает старого сотрудника. по новому сотруднику нет ни одного документа БЛ или отпуска по уходу за ребенком! Картина меняется после даты отпуска 29.12 - там состояние на один деть ставится "в ежегодном отпуске", по завершению - "работает", и после этой даты показывает корректно данные на любую следующую дату даже со всеми тремя условиями. Делаю вывод, что в РС.Состояний есть некорректная запись, не видимая пользователю... и простым запросом. Как искать и исправлять?
#7 by Alexandr_U1982
Скорее всего в РС.СостоянияРаботникаОрганизации нет некорректной записи, не видимой пользователю. Скорее всего, там вообще нет никаких записей по новому сотруднику до 29.12. Предполагаю (проверить сейчас не могу), что соединение таблиц регистров для нового сотрудника в поле "ВложенныйЗапрос.Состояние" возвращает значение "NULL". Соответственно, при добавление любых условий на поле "ВложенныйЗапрос.Состояние" из результата запроса выбрасываются строчки со знаением "NULL" в поле "ВложенныйЗапрос.Состояние". Можно попробовать заменить условие: на условие: "ВложенныйЗапрос.Состояние ЕСТЬ NULL
#8 by atlantika
Это помогло!! Спасибо вам огромное!!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С