Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с запросом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
kosalex
Делаю отчёт по стажу на предприятии.

Все хорошо, но есть одно но, вот мой запрос:
ВЫБРАТЬ
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема,
    ФизическиеЛица.Наименование
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
        ПО ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Ссылка = ФизическиеЛица.Ссылка


есть сотрудники у которых была ситуация: "Приём в орг" -> "Увольнение с орг" -> "Приём в орг", тогда в отчет попадают одни и те же физ.лица. Помогите модифицировать запрос, чтобы был одно физ лицо.
Ardi
Физлицо одно, а дат сколько?
kosalex
Цитата(Ardi @ 27.02.14, 14:25) необходимо зарегистрироваться для просмотра ссылки
Физлицо одно, а дат сколько?


ФизЛицо одно,а дат может быть сколько угодно, он же может раз 10 увольняться и приниматься, а стаж нужно взять за все его отработанное время на предприятии.
pablo
По запросу:
ВЫБРАТЬ
    Минимум(ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема),
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Наименование
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
СГРУППИРОВАТЬ ПО
   ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Наименование

Но считать таким образом стаж будет ... несколько экстравагантно
kosalex
Цитата(pablo @ 27.02.14, 14:42) необходимо зарегистрироваться для просмотра ссылки
По запросу:
ВЫБРАТЬ
    Минимум(ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема),
    ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Наименование
ИЗ
    Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
СГРУППИРОВАТЬ ПО
   ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо.Наименование

Но считать таким образом стаж будет ... несколько экстравагантно



хм))экстровагантно))?

к примеру, история увольнения и приёма сотрудника. приём в 2000 год, уволен в 2001 году, прием в 2005 году и уволен в 2010 году. и того стаж должен получиться 6 лет. а в вашем варианте получиться 9 лет, верно?))) это и есть экстровагантность?))
pablo
Вопрос был:
Цитата
Помогите модифицировать запрос, чтобы был одно физ лицо.

Выше указанный запрос это делает. Но он не даст ответ на вопрос о стаже, так как одним запросом тут не справиться. Видится мне old.gif : тут несколько подзапросов должно быть.
topitop
а что за конфигурация? уточните.


 ! 

Правила, п.11
 


попробуйте капнуть в эту сторону.
vadim007
Цитата(topitop @ 27.02.14, 16:27) необходимо зарегистрироваться для просмотра ссылки
а что за конфигурация? уточните.
попробуйте капнуть в эту сторону.

Накапайте и мне...
Petre
А зачем там справочник физлица? Вам ведь только стаж нужен, а не весь список физлиц.
И если конфа типовая, то там связь с физлицами по сотрудникам.
logist
Цитата(Petre @ 27.02.14, 17:06) необходимо зарегистрироваться для просмотра ссылки
И если конфа типовая

Гадалка подсказывает, что там ЗУП.
kosalex
ЗУП (2.1.32.1). Есть РС "ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы" в нем и храниться когда принят когда уволен.
Стаж нужно считать для сотрудников которые в данный момент работают на предприятии. Если сотрудник был уволен и принят несколько раз на предприятие, то и стаж его нужно сложить.

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

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Физлицо

УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Физлицо.Наименование
kosalex
Господа, подскажите. Выбираються все физ лица, а нужно выбирать тех которые работают в данное время на предприятии. Как это сделать в моём запросе?
World1С
ГДЕ
   НЕ ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы1.ДатаОкончания ЕСТЬ NULL

или
ГДЕ
   НЕ ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы1.ДатаОкончания = &ПустаяДата
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.