8.х Простой отчет по отпускам

Тема в разделе "Система компоновки данных (СКД)", создана пользователем impulse, 14 окт 2014.

  1. TopicStarter Overlay
    impulse
    Offline

    impulse Опытный в 1С

    Регистрация:
    16 июн 2013
    Сообщения:
    65
    Симпатии:
    4
    Баллы:
    29
    создал простой отчет по отпускам сотрудников на СКД для ЗУП 2.5. Попросили добавить еще подразделение Организации для сотрудника. Исправил запрос, но до ума его довести не получается. Дело в том, что в документе КадровоеПеремещениеОрганизаций сотрудник может быть перемещен несколько раз, т. е. на какого-то сотрудника есть документ по перемещению (возможно не один), а может и нет. Как исправить запрос, чтобы для сотрудника указывалось подразделение по последнему (актуальному по дате) документу, а то в результате запроса в таблице сотрудники задваиваются или затраиваются в зависимости от того сколько раз он был перемещен, ну это в принципе и нормально потому как ЛЕВОЕ СОЕДИНЕНИЕ так и работает.

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

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Перестаньте брать данные из документа. Есть регистр "КадроваяИсторияСотрудников". Кажется так называется.
  3. TopicStarter Overlay
    impulse
    Offline

    impulse Опытный в 1С

    Регистрация:
    16 июн 2013
    Сообщения:
    65
    Симпатии:
    4
    Баллы:
    29
    О, спасибо большое! Регистр сведений работники организаций как раз подойдет.
    Но все-таки интересно как в таких случаях поступают с запросом, когда одному условию соединения удовлетворяют несколько, а взять надо последний.
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Учите запросы. Я в свое время просто взял книжку "Запросы для простых смертных". И сидел по ней разбирался. Делается очень легко. Сначала получаете все необходимые данные заносите во временную таблицу, а потом уже делаете соединение. Но забудьте про это. Ваш запрос в корне не правильный, т.к. данные тянутся из документа. Для этого есть регистры.
  5. TopicStarter Overlay
    impulse
    Offline

    impulse Опытный в 1С

    Регистрация:
    16 июн 2013
    Сообщения:
    65
    Симпатии:
    4
    Баллы:
    29
    Ага, значит все-таки временная таблица... Ну с перемещениями теперь понятно, заменим регистром, а разве можно будет регистром заменить документ ОтпускаОрганизацийРаботникиОрганизации, если надо знать дату документа, ссылку на него и прочие реквизиты?
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Есть регистратор. Может и другие измерения. Написать отчет не тяжело, когда знаешь, что данные, которые тебе нужны хранятся там то, там то. А если не знаешь, то нужно анализировать базу. Анализировать регистры. Анализировать запись данных в эти регистры, условия и т.д. Блин, люблю анализировать :D
    impulse нравится это.
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Если у Вас СКД, то это решается черезх второй набор данных В котором как раз будет запрос к РС РаботникиОрганизации,СрезПоследних(&ДатаСреза) и свзять первого набора данных со вторым по параметру.
    Т.е из первого надора данных будет передаваться во второй парметр &Дата среза.

    Поищите на форуме или в инете уже писал ни раз. Аналог этому Получение остатков на каждую дату периода даже если н ебыло движений или получение курса валют на каждую дату. Но остатки более распространены.
    impulse нравится это.
  8. TopicStarter Overlay
    impulse
    Offline

    impulse Опытный в 1С

    Регистрация:
    16 июн 2013
    Сообщения:
    65
    Симпатии:
    4
    Баллы:
    29
    Ок, спасибо за ответы.

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