Имя: Пароль:
1C
1С v8
Коллеги, подскажите по сопоставлению в запросе
0 yabashu
 
02.08.23
19:12
Есть запрос:
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ДанныеСостоянийСотрудников.Состояние КАК Состояние,
    |    ДанныеСостоянийСотрудников.Сотрудник КАК Сотрудник,
    |    ДанныеСостоянийСотрудников.Начало КАК Начало,
    |    ДанныеСостоянийСотрудников.Окончание КАК Окончание
    |ПОМЕСТИТЬ втСотрудникиНеНаРаботе
    |ИЗ
    |    РегистрСведений.ДанныеСостоянийСотрудников КАК ДанныеСостоянийСотрудников
    |ГДЕ
    |    &ТекущаяДата МЕЖДУ ДанныеСостоянийСотрудников.Начало И КОНЕЦПЕРИОДА(ДанныеСостоянийСотрудников.Окончание, ДЕНЬ)
    |    И НЕ ДанныеСостоянийСотрудников.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Работа)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ДанныеСостоянийСотрудников.Состояние КАК ТекущееСостояние,
    |    ДанныеСостоянийСотрудников.Сотрудник КАК Сотрудник,
    |    ДанныеСостоянийСотрудников.Начало КАК Начало,
    |    ДанныеСостоянийСотрудников.Окончание КАК Окончание
    |ПОМЕСТИТЬ втТекущееСостояниеСотрудников
    |ИЗ
    |    РегистрСведений.ДанныеСостоянийСотрудников КАК ДанныеСостоянийСотрудников
    |ГДЕ
    |    ДанныеСостоянийСотрудников.Окончание = ДАТАВРЕМЯ(1, 1, 1)
    |    И НЕ ДанныеСостоянийСотрудников.Сотрудник В
    |                (ВЫБРАТЬ
    |                    вт.Сотрудник
    |                ИЗ
    |                    втСотрудникиНеНаРаботе КАК вт)
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    втСотрудникиНеНаРаботе.Состояние,
    |    втСотрудникиНеНаРаботе.Сотрудник,
    |    втСотрудникиНеНаРаботе.Начало,
    |    втСотрудникиНеНаРаботе.Окончание
    |ИЗ
    |    втСотрудникиНеНаРаботе КАК втСотрудникиНеНаРаботе
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицСостояний.Сотрудник КАК Сотрудник,
    |    ТаблицСостояний.ТекущееСостояние КАК ТекущееСостояние,
    |    ТаблицСостояний.Начало КАК Начало,
    |    ТаблицСостояний.Окончание КАК Окончание,
    |    МАКСИМУМ(ПриемНаРаботуДополнительныеРеквизиты.Значение) КАК Рекрутер
    |ИЗ
    |    втТекущееСостояниеСотрудников КАК ТаблицСостояний
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботу КАК ПриемНаРаботу
    |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботу.ДополнительныеРеквизиты КАК ПриемНаРаботуДополнительныеРеквизиты
    |                ПО ПриемНаРаботу.Ссылка = ПриемНаРаботуДополнительныеРеквизиты.Ссылка
    |                    И (ПриемНаРаботуДополнительныеРеквизиты.Свойство = &Расш_Рекрутер)
    |            ПО Сотрудники.Ссылка = ПриемНаРаботу.Сотрудник
    |        ПО ТаблицСостояний.Сотрудник = Сотрудники.Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицСостояний.Сотрудник,
    |    ТаблицСостояний.ТекущееСостояние,
    |    ТаблицСостояний.Начало,
    |    ТаблицСостояний.Окончание";

    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
    Запрос.УстановитьПараметр("Расш_Рекрутер", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Расш_Рекрутер"));

Подскажите, почему Сотрудник и его Рекрут(Реквизит(Тип = Справочники.Сотрудники, который находится в ДопРеквизитах Документа ПриемНаРаботу) при выборке запроса никак не связаны?
Сотрудник выбирается, а рекрут абсолютно чужой. В чем ошибка?
1 shpioleg
 
02.08.23
19:59
Ну если видишь, что не понимаешь. Упрости для начала последний запрос. Выкинь соединение со справочником сотрудники. Зачем оно здесь? Оставь только соединение ТаблицСостояний с Документом Прием на работу по Сотруднику и глянь, что получается. Потом уже пробуй получать доп.реквизит.
2 SleepyHead
 
03.08.23
05:47
А еще есть документ "Прием на работу списком".

Так что ты бы для начала озвучил, что какую проблему решаешь, а уже потом можно говорить о запросе.