Имя: Пароль:
1C
 
Вопрос по запросу к регистру
0 cyberandr
 
27.12.19
16:33
Всем привет! Подскажите есть регистр сведений периодический с измерением сотрудник ресурсами должность и подразделение сотрудника. Есть некий документ (допсоглашения к контракту) документ со списком сотрудников и датой "ДатаС" на которую надо найти должность и подразделение сотрудника. делаю таким образом

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

СГРУППИРОВАТЬ ПО
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.ДолжностьПодразделения

В итоге если ДополнительноеСоглашениеККонтрактуСведения.ДатаС = РаботникиОрганизацийСрезПоследних.Период то есть было движение по регистру (например документном кадровое перемещение) то все ок, а вот если нет то тогда я получаю null. Вот тут я что-то застрял...
1 cyberandr
 
27.12.19
16:35
сорри запрос такой (выше поиски путей)
ВЫБРАТЬ
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник КАК Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта КАК НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта КАК ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения КАК ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС КАК ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения КАК НомерСоглашения,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.ДолжностьПодразделения КАК ДолжностьПодразделений
ИЗ
    Документ.ДополнительноеСоглашениеККонтракту.Сведения КАК ДополнительноеСоглашениеККонтрактуСведения
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(, ) КАК РаботникиОрганизацийСрезПоследних
        ПО ДополнительноеСоглашениеККонтрактуСведения.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
            И ДополнительноеСоглашениеККонтрактуСведения.ДатаС = РаботникиОрганизацийСрезПоследних.Период
            
ГДЕ
    ДополнительноеСоглашениеККонтрактуСведения.Ссылка = &ДокументСсылка

СГРУППИРОВАТЬ ПО
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.ДолжностьПодразделения
2 ZDenis
 
27.12.19
16:41
(0) Делай запрос не к "СрезуПоследних", а к самому регистру
3 polosov
 
27.12.19
16:43
(0) Не надо соединять с виртуальными таблицами.
Выбери данные из РС с нужными тебе отборами во временную таблицы и потом соединяй с документом.
А в целом по запросу гугли что-нибудь вроде "Курсы валют на разные даты 1с"
4 cyberandr
 
27.12.19
16:46
ВЫБРАТЬ
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник КАК Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта КАК НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта КАК ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения КАК ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС КАК ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения КАК НомерСоглашения,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    РаботникиОрганизаций.ДолжностьПодразделения КАК ДолжностьПодразделений
ИЗ
    Документ.ДополнительноеСоглашениеККонтракту.Сведения КАК ДополнительноеСоглашениеККонтрактуСведения
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
        ПО ДополнительноеСоглашениеККонтрактуСведения.Сотрудник = РаботникиОрганизаций.Сотрудник
            И ДополнительноеСоглашениеККонтрактуСведения.ДатаС = РаботникиОрганизаций.Период
ГДЕ
    ДополнительноеСоглашениеККонтрактуСведения.Ссылка = &ДокументСсылка

СГРУППИРОВАТЬ ПО
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.ДолжностьПодразделения

тот же результат. Я над ним уже неделю бьюсь. Сначала в основном переводы были и вроде все почти ок, а вот теперь изменения окладов пошли и встали
5 ZDenis
 
27.12.19
16:47
(4) ПО ДополнительноеСоглашениеККонтрактуСведения.Сотрудник = РаботникиОрганизаций.Сотрудник
            И ДополнительноеСоглашениеККонтрактуСведения.ДатаС >= РаботникиОрганизаций.Период
6 ZDenis
 
27.12.19
16:51
7 pechkin
 
27.12.19
16:53
в зупе вообще к регистрам просто так не нужно лезть.
нужно апи юзать
8 cyberandr
 
27.12.19
16:54
(5) да игрался так в (0) но тогда выдает все подразделения сотрудника за все время работы,а не последнее -поэтому пытался ограничить датой документа -увы нет
(6) спасибо почитаю сейчас
9 cyberandr
 
27.12.19
17:42
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник КАК Сотрудник,
    МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта КАК НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта КАК ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения КАК ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения КАК НомерСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС КАК ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаПо КАК ДатаПо,
    ДополнительноеСоглашениеККонтрактуСведения.ДокументОснование КАК ДокументОснование
ПОМЕСТИТЬ Врем2
ИЗ
    Документ.ДополнительноеСоглашениеККонтракту.Сведения КАК ДополнительноеСоглашениеККонтрактуСведения
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
        ПО ДополнительноеСоглашениеККонтрактуСведения.Сотрудник = РаботникиОрганизаций.Сотрудник
            И ДополнительноеСоглашениеККонтрактуСведения.ДатаС >= РаботникиОрганизаций.Период
ГДЕ
    ДополнительноеСоглашениеККонтрактуСведения.Ссылка = &ДокументСсылка

СГРУППИРОВАТЬ ПО
    ДополнительноеСоглашениеККонтрактуСведения.Сотрудник,
    ДополнительноеСоглашениеККонтрактуСведения.НомерКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаКонтракта,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаНачалаСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.НомерСоглашения,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаС,
    ДополнительноеСоглашениеККонтрактуСведения.ДатаПо,
    ДополнительноеСоглашениеККонтрактуСведения.ДокументОснование
;

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

СГРУППИРОВАТЬ ПО
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.ДолжностьПодразделения,
    Врем2.Сотрудник,
    Врем2.Период,
    Врем2.НомерКонтракта,
    Врем2.ДатаКонтракта,
    Врем2.ДатаНачалаСоглашения,
    Врем2.НомерСоглашения,
    Врем2.ДатаС,
    Врем2.ДатаПо,
    Врем2.ДокументОснование

Вроде такой вариант прошел всем спасибо