8.х Учет выходных дней в отчете

Тема в разделе "Система компоновки данных (СКД)", создана пользователем nastena_r_v, 11 янв 2016.

  1. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    УПП 8.3 (обычное приложение)1.3.9.5
    Добрый день, создаю отчет по соц.отпускам на СКД. Подскажите пожалуйста, как можно, что если у человека за период, на который он "взял" без содержания попали выходные дни, то их не считать.
    Для определения данных по сотрудникам использую Р.С. состояния сотрудников организаций.
    Графики работ у сотрудников разные, присутствует и сменный и пятидневка.
    В документе по соц.отпускам нет данных по количеству дней, есть только данные с какого и по какое человек отсутствовал, и по какой причине.
    Если код нужен, могу выложить, отчет создается как внешний.
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    без содержания чем оформляете?
  3. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Не понятен вопрос. Если необходимы наработки отчета, то вот запрос:

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

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Каким документом у Вас оформляется отпуск без содержания? вы у себя ведете только кадровый учет расчет ЗП ведете?
  5. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Оформляется "Невыходом в организации", но мне необходимо использовать данный регистр, по документу соц.отпуска, чтоб в дальнейшем я могла убрать выходные дни и из отпуска по уходу за ребенком.
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Ну при такой постановке вопроса.
    1.вам сначала на дату начала вашего отпуска надо получить график работы сотрудника.
    2. Затем уже по графику надо получить количество не рабочих дней за период.

    На СКД можно решить через 3 набора данных с передачей в наборы в качестве параметров поля
  7. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    А производственный календарь здесь участвовать должен?
    немного не понятно конечно, по поводу 3 наборов...

    И... как получить график на дату отпуска? Я теоретически представляю, а как воплотить не знаю
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    да. должен.
    1 набор - это ваш РС состояние сотрудников откуда сотрудник дата нач и дата завершения
    2 набор это срез по РС Сотрудники организаций на дату начала и сотрудника что бы получить график работы сотрудника на дату начала вашего отпуска
    3. набор это рег производвенный календарь, вы из него получаете количество не рабочих денй по графику за период, график и перилод из вторго набора передаете
  9. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Ну вот допустим, у меня в первом наборе есть данный, имеющийся сейчас набор, в котором выходит сотрудник, дата приема, рабочий год, и количество дней, по которым сотрудник отсутствовал, НО количество идет с выходными днями.
    Я предполагаю, что во втором наборе мне надо добавить справочники по графикам и сотрудникам, и как-то получить график на время данного отпуска?
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    не ну вы преполагаеет то правильно что Вам надо получить, только вы должны думать и понимать откуда Вы будете это получать.
    1.Откуда вы возмете на каком графике работает Сотрудник?
    2. Откуда взять какие дни по этому графику не рабочие
  11. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Вот... Первый вопрос очень хороший ))) пока не знаю от куда...
  12. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Ну вот же я вам и пишу что в СКд например такую задачу можно решить когда есть два набора и данные из первого в вашем случае это Состояния сотрудников являются парамером для второго запроса - это будет РаботникиОрганизацйСрез последних на дату начал отпуска.
    Можно конечно и не через наборы, а запросом через ВТ.
  13. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Следующий вопрос, а как указать для РС.РаботникиОрг.Ср.Посл. в параметр данные моей первой ВТ????
    П.С., Вы уж извините, за допрос, но я только учусь... )))
  14. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    НУ тогда либо поиском по форуму или в инетет что то типа
    Остатки по складам на каждый день СКД
    или
    Связь наборов по параметру СКД.
    Уже просто не раз писал и примеры выкладывал
  15. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Вот смотрите, если я сделаю, примерно так (как в коде), то получу график на данный момент. А как сделать так, чтоб график брался тот, который был на дату начала отпуска?
    Код:
    ВЫБРАТЬ
        ВложенныйЗапрос.Сотрудник КАК Сотрудник,
        ВложенныйЗапрос.ДатаПриемаНаРаботу,
        ВложенныйЗапрос.Регистратор,
        ВложенныйЗапрос.Состояние,
        ВложенныйЗапрос.Период,
        ВложенныйЗапрос.ПериодЗавершения,
        ВложенныйЗапрос.СостояниеЗавершения,
        ВложенныйЗапрос.КоличествоДней,
        ВложенныйЗапрос.РабочийГод КАК РабочийГод,
        РаботникиОрганизацийСрезПоследних.ГрафикРаботы
    ИЗ
        (ВЫБРАТЬ
            СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
            СотрудникиОрганизаций.ДатаПриемаНаРаботу КАК ДатаПриемаНаРаботу,
            СостояниеРаботниковОрганизаций.Регистратор КАК Регистратор,
            СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
            СостояниеРаботниковОрганизаций.Период КАК Период,
            СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения,
            СостояниеРаботниковОрганизаций.СостояниеЗавершения КАК СостояниеЗавершения,
            РАЗНОСТЬДАТ(СостояниеРаботниковОрганизаций.Период, СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ) КАК КоличествоДней,
            ГОД(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ГОД), СЕКУНДА, РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, СостояниеРаботниковОрганизаций.Период, СЕКУНДА)), ГОД)) КАК РабочийГод
        ИЗ
            РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                ПО СостояниеРаботниковОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
        ГДЕ
            СостояниеРаботниковОрганизаций.Регистратор ССЫЛКА Документ.ОтпускаОрганизаций
            И СостояниеРаботниковОрганизаций.Состояние.Ссылка В(&Ссылка)) КАК ВложенныйЗапрос
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних
            ПО ВложенныйЗапрос.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
  16. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Ну я же Вам написал если в СКД то можно соединением двух наборов через параметр. А если запросом то там через виртуальные таблицы. Типа того как получить остаток по складу на каждый день запросом. только там склад и дата и вам на него остаток получить, а у вас сотрудник и дата и на него график получить.
    --- Объединение сообщений, 12 янв 2016 ---
    Вот по сути та же тема только там подразделение надо получить
    --- Объединение сообщений, 12 янв 2016 ---
    http://1c-pro.ru/threads/kak-v-zapr...sotrudnika-na-raznuju-datu.56313/#post-369072
  17. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Смотрите, сделала с помощью ВТ, да, данные по графику на начало отпуска выходят, но не по всем документам, а почему-то по некоторым, возможно что-то не правильно? Или добавить надо?

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

    Вложения:

    Последнее редактирование: 13 янв 2016
  18. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Вы видно не разобрались что делает запрос в примерах, а начали по шаблону лепить свое.
    1. Вот скажите зачем Вам тут левое соединение

    Код:
    ВЫБРАТЬ
        РаботникиОрганизаций.ГрафикРаботы КАК ГрафикРаботы,
        РаботникиОрганизаций.Период КАК Период,
        РаботникиОрганизаций.Сотрудник КАК Сотрудник
    ПОМЕСТИТЬ ВТ_Графики
    ИЗ
        РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
            ПО РаботникиОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
    ;
    есил вы ничего из второй таблице в выборку не берете.
    2. Там если пример смотрели то там берется Максимум и когда идет соединение то не по равно а Больше или равно. Там просто надо понимать что для чего делается
  19. TopicStarter Overlay
    nastena_r_v
    Offline

    nastena_r_v

    Регистрация:
    19 авг 2015
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    В первом смотрела, если не брать справочник сотрудников, то данные почему-то не отображаются, а 2) да, я согласная, я много чего не понимаю, но не понятно, для чего максимум и для чего больше или равно
  20. Draco
    Offline

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

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

    или на листочек выписать табллички и смотреть что сделать один запрос с табличкой что другой и т.д рисуя свзяи. Либо на курсы.

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