8.х ЗУП Регистр состояния сотрудников организаций

Тема в разделе ""1С:Зарплата и управление персоналом ЗУП"", создана пользователем rshakiro, 15 май 2013.

  1. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Бодрого дня всем. Имеется ЗУП 2.5.66.2. Дергаю данные из регистра сведений "Состояние сотрудников организаций" за месяц, для загрузки в другую программу всех отклонений... Проблема с некоторыми сотр., у которых кадровым документом "неявки и болезни" введены несколько больничных (см.рис.), мне нужно у сотрудника разделить на 2 периода:
    - болеет с 08.04.13г по 17.04.13г
    - болеет с 20.04.13г по 26.04.13г
    что можно придумать??
    Сейчас у меня эти периоды выходят:

    - болеет с 08.04.13г по 27.04.13г
    - болеет с 20.04.13г по 27.04.13г

    Вложения:

  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    если не принципиально все это сделать водном запросе, то тупо можно взять обоходим этот регистр сведений в цикле и запоминать пердыдущее состояние сотрудника болееи тлт нет

    Как только болеет - добавляете дату в ТЗ и запоминаете это состояние, и идете дальше сравниваете это состояние (обеет с текущим), если отличается например Болеет <> здоров, то берете дату тек состояни и минус день и добавили в ТЗ.
    И т.д обычный цикл с проверкой предыдущего значения
  3. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    Я бы примерно так стала подбирать:
    Код:
    
    ВЫБРАТЬ
    СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
    СостояниеРаботниковОрганизаций.Состояние,
    СостояниеРаботниковОрганизаций.Период КАК Период,
    СостояниеРаботниковОрганизаций.ПериодЗавершения,
    СостояниеРаботниковОрганизаций.СостояниеЗавершения,
    МИНИМУМ(СостояниеРаботниковОрганизаций1.Период) КАК Период1
    ПОМЕСТИТЬ ВТ
    ИЗ
    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций1
    ПО СостояниеРаботниковОрганизаций.Сотрудник = СостояниеРаботниковОрганизаций1.Сотрудник
    И СостояниеРаботниковОрганизаций.Период = СостояниеРаботниковОрганизаций1.Период
    СГРУППИРОВАТЬ ПО
    СостояниеРаботниковОрганизаций.СостояниеЗавершения,
    СостояниеРаботниковОрганизаций.ПериодЗавершения,
    СостояниеРаботниковОрганизаций.Состояние,
    СостояниеРаботниковОрганизаций.Сотрудник,
    СостояниеРаботниковОрганизаций.Период
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ.Сотрудник КАК Сотрудник,
    ВТ.Состояние,
    ВТ.Период КАК ДатаНачалаСостояния,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ЕСТЬNULL(ВТ.ПериодЗавершения, ВТ.Период1), ДЕНЬ), СЕКУНДА, -1) КАК ДатаОкончанияСостояния
    ИЗ
    ВТ КАК ВТ
    УПОРЯДОЧИТЬ ПО
    Сотрудник,
    ДатаНачалаСостояния
    И дальше отсечь нужные состояния. Можно тут же в запросе.
  4. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Спасибо, буду пробовать...
  5. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Решил задачку таким образом:
    Код:
    ///в цикле включил проверку
    Если Выборка.Состояние = Перечисления.СостоянияРаботникаОрганизации.Заболевание Тогда
    ДатаНачалаБолезни = Выборка.ДатаНачалаСостояния;
    а = 1;
    ИначеЕсли Выборка.Состояние = Перечисления.СостоянияРаботникаОрганизации.Работает Тогда
    ДатаКонцаБолезни = Выборка.ДатаНачалаСостояния - 3600;                                             
    ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
    ОбластьДетальныхЗаписей.Параметры.ТабНомер = ТабНомер;
    ОбластьДетальныхЗаписей.Параметры.Период1с7 = ДатаНачалаБолезни;
    ОбластьДетальныхЗаписей.Параметры.ПериодЗавершения1с7 = ДатаКонцаБолезни;
    ОбластьДетальныхЗаписей.Параметры.СостояниеИзмен = СостояниеИзмен;
    ТабДок.Вывести(ОбластьДетальныхЗаписей, Выборка.Уровень());
    КонецЕсли;
    
    Если а > 0 Тогда
    
    Иначе
    ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
    ОбластьДетальныхЗаписей.Параметры.ТабНомер = ТабНомер;
    ОбластьДетальныхЗаписей.Параметры.Период1с7 = Выборка.ДатаНачалаСостояния;
    ОбластьДетальныхЗаписей.Параметры.ПериодЗавершения1с7 = Выборка.ДатаОкончанияСостояния;
    ОбластьДетальныхЗаписей.Параметры.СостояниеИзмен = СостояниеИзмен;
    ТабДок.Вывести(ОбластьДетальныхЗаписей, Выборка.Уровень());
    КонецЕсли;
    
    Если Выборка.Состояние = Перечисления.СостоянияРаботникаОрганизации.Работает Тогда
    а = 0;
    КонецЕсли;
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Гу что то того что я Выше писал
  7. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    ага, поставили на путь истинный ))))
  8. sashasasha89
    Offline

    sashasasha89 Опытный в 1С

    Регистрация:
    20 сен 2015
    Сообщения:
    387
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Подскажите есть ли отчет в 1с зуп 2.5 где можно посмотреть состояния сотрудников? Кто когда был в отпуске, на больничном, прогулы и неявки.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.638
    Симпатии:
    948
    Баллы:
    204
    Прям одного отчета что бы все это увижеть нет.
    В отчете списки сотрудников организации который выкручивается на дату а не за период - там есть состояние т.е на любой день вы можете узнать что у вас столько болеют столько в отпуске и т.д
    А так что за период - нет
  10. sashasasha89
    Offline

    sashasasha89 Опытный в 1С

    Регистрация:
    20 сен 2015
    Сообщения:
    387
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Я нашел хороший внешний отчет. Но там маленько бы его подработать и рекламу убрать, но автор на модуль поставил пароль.

Поделиться этой страницей