Вход | Регистрация
 

Получить Сотрудников через физлиц в запросе

Получить Сотрудников через физлиц в запросе
Я
   cyberandr
 
31.01.20 - 13:09
Всем привет! У меня в ЗУПе поставлена задача найти сотрудников по физлицам (из платежных документов). Сотрудники понятно бывают уволенные, принятые и еще договорники( которые могут быть и нашими сотрудниками)
Попробовал сделать таким образом - по физлицам находим кто договорник, кто в штате и кто уволен(последнее увольнение). А дальше если сотрудник в штате -значит считаем его, если не но договорник -тогда он ну и в конце тогда уволенный. Для этого сделал в запросе общее объединение, но почему-то он задваевает строки.  

/code
ВЫБРАТЬ
    ПлатежноеПоручениеИсходящееРаботники.Физлицо КАК Физлицо,
    ПлатежноеПоручениеИсходящееРаботники.Сумма КАК Сумма
ПОМЕСТИТЬ ФизЛица
ИЗ
    Документ.ПлатежноеПоручениеИсходящее.Работники КАК ПлатежноеПоручениеИсходящееРаботники
ГДЕ
    ПлатежноеПоручениеИсходящееРаботники.Ссылка В
            (ВЫБРАТЬ
                ПлатежноеПоручение.Ссылка
            ИЗ
                Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручение
            ГДЕ
                ПлатежноеПоручение.ДатаПеречисления = &Нашадата
                И ПлатежноеПоручение.Проведен
                И НЕ ПлатежноеПоручение.детскиеПособия
                И НЕ ПлатежноеПоручение.ПометкаУдаления)
;

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

СГРУППИРОВАТЬ ПО
    ФизЛица.Физлицо,
    СотрудникиОрганизаций.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ФизЛица.Физлицо,
    NULL,
    СотрудникиОрганизаций.Ссылка,
    NULL,
    ДАТАВРЕМЯ(1, 1, 1)
ИЗ
    ФизЛица КАК ФизЛица
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        ПО ФизЛица.Физлицо = СотрудникиОрганизаций.Физлицо
ГДЕ
    СотрудникиОрганизаций.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)

СГРУППИРОВАТЬ ПО
    ФизЛица.Физлицо,
    СотрудникиОрганизаций.Ссылка

ОБЪЕДИНИТЬ ВСЕ

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

СГРУППИРОВАТЬ ПО
    ФизЛица.Физлицо,
    СотрудникиОрганизаций.Ссылка
;
   RomanYS
 
1 - 31.01.20 - 13:14
(0) Что значит задваивает. Ты же ищешь первых, вторых, третьих - никаких приоритетов нет.
Возможно через соединение нужно было делать.
   Gucci76
 
2 - 31.01.20 - 13:14
А не проще получить сотрудников по движению ведомости?
Или надо до проведения найти сотрудников?
   Gucci76
 
3 - 31.01.20 - 13:15
Например Регистр накопления "Бухгалтерские взаиморасчеты с сотрудниками" содержит поле СОТРУДНИК
   Gucci76
 
4 - 31.01.20 - 13:16
Регистр накопления "Взаиморасчеты с сотрудниками" тоже
   cyberandr
 
5 - 31.01.20 - 13:18
(3) увы нет я только что смотрел -физлицо
   cyberandr
 
6 - 31.01.20 - 13:18
и взаиморасчеты не подойдут - там есть некоторые ограничения на сам документ
   cyberandr
 
7 - 31.01.20 - 13:22
(1) Планировал Типа Иванов И.И  NULL   ИвановРаботающий   ИвановУволенный
Петров А.А, ПетровДоговорник Петровработающий NULL.  а в следующей части запроса приоритеты  раставить. А получилось
Иванов И.И  NULL   ИвановРаботающий   NULL   
Иванов И.И  NULL   NULL   ИвановУволенный
   RomanYS
 
8 - 31.01.20 - 13:23
(5) Неплохо бы сразу уточнять версию ЗУП, по-умолчанию предполагается что сейчас это 3.1
   Gucci76
 
9 - 31.01.20 - 13:24
(5) есть в ЗУП 3.1 в регистре накопления "Бухгалтерские взаиморасчеты с сотрудниками" поле СОТРУДНИК
   RomanYS
 
10 - 31.01.20 - 13:25
(7) Так тебе нужно 3 соединения, а не объединение 3 запросов.
А естьNULL избавит от необходимости "следующей части запроса"
   cyberandr
 
11 - 31.01.20 - 13:29
Да сорри она не 3.1 Еще на обычных формах.
(10) я изначально так и планировал, но идея получить "Иванов И.И  NULL   ИвановРаботающий   ИвановУволенный" показалась мне хорошей и не понятно что не срабатывает в объединении.
   RomanYS
 
12 - 31.01.20 - 13:32
(11) В объединение все отрабатывает как должно. У тебя неправильные ожидания
   karpik666
 
13 - 31.01.20 - 13:33
(0) жесть, для таких целей есть регистр сведений Работники организаций, и данные о состоянии сотрудника, работает или уволен
   Sayan_mi
 
14 - 31.01.20 - 13:36
И ещё на одно физ. лицо сотрудников может быть несколько.
   cyberandr
 
15 - 31.01.20 - 13:40
Да именно - я выбираю "основное".  По поводу регистров изначально пользовался регистром состояния пока не обнаружил что у некоторых действующих сотрудников нет записей.
   unenu
 
16 - 31.01.20 - 13:58
КадровыйУчетРасширенный.ТаблицаСотрудниковОрганизации(ФизическоеЛицо, Организация, Период,
ФизическоеЛицо - может быть ссылка, массив, список, неопределено 

хватит костыли лепить
   cyberandr
 
17 - 31.01.20 - 14:15
(16) нет такого модуля в моей зуп :(

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.