Имя: Пароль:
1C
1С v8
Помогите с запросом
0 AnisaL
 
18.07.19
15:06
Добрый день!
Как в запросе к справочнику Контрагенты прилипить его первое контактное лицо ?
1 novichok79
 
18.07.19
15:08
конфигурация? платформа?
2 AnisaL
 
18.07.19
15:09
(1) УНФ 1.6.17, связь с контактным лицом идет через регистр "СвязиКонтрагентКонтакт"
3 novichok79
 
18.07.19
15:20
накидал за 5 минут на старой УНФ

ВЫБРАТЬ
    Т.Период КАК Период,
    Т.Контрагент КАК Контрагент,
    Т.Контакт КАК Контакт,
    Т.Должность КАК Должность,
    Т.СвязьНедействительна КАК СвязьНедействительна,
    Т.Порядок КАК Порядок,
    Т.Автор КАК Автор
ПОМЕСТИТЬ ВТ_Связь
ИЗ
    РегистрСведений.СвязиКонтрагентКонтакт.СрезПоследних КАК Т
ГДЕ
    НЕ Т.СвязьНедействительна
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Связь.Контрагент КАК Контрагент,
    МИНИМУМ(ВТ_Связь.Порядок) КАК Порядок
ПОМЕСТИТЬ ВТ_МинимальныйПорядок
ИЗ
    ВТ_Связь КАК ВТ_Связь

СГРУППИРОВАТЬ ПО
    ВТ_Связь.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Период КАК Период,
    Т.Контрагент КАК Контрагент,
    Т.Контакт КАК Контакт,
    Т.Должность КАК Должность,
    Т.Автор КАК Автор
ИЗ
    ВТ_Связь КАК Т
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МинимальныйПорядок КАК ВТ_МинимальныйПорядок
        ПО (Т.Контрагент = ВТ_МинимальныйПорядок.Контрагент
                И Т.Порядок = ВТ_МинимальныйПорядок.Порядок)
4 novichok79
 
18.07.19
15:22
с конфигой не очень знаком, но я думаю, что принцип понятен
5 AnisaL
 
19.07.19
07:56
(3) Спасибо большое!
6 AnisaL
 
19.07.19
08:21
Вот какой запрос я написала, только он не работает, подскажите:
ВЫБРАТЬ
    Контрагенты.Ссылка КАК Ссылка,
    СвязиКонтрагентКонтактСрезПоследних.Контакт КАК Контакт
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 СрезПоследних.Контакт,СрезПоследних.Контрагент из РегистрСведений.СвязиКонтрагентКонтакт.СрезПоследних КАК СрезПоследних) КАК СвязиКонтрагентКонтактСрезПоследних
        ПО Контрагенты.Ссылка = СвязиКонтрагентКонтактСрезПоследних.Контрагент
ГДЕ
    Контрагенты.Ссылка = &Ссылка
7 Случайный прохожий
 
19.07.19
08:28
(6) "ПЕРВЫЕ 1" - зачем это?
8 AnisaL
 
19.07.19
08:29
(7) Мне нужно выбрать первое контактное лицо у контрагента
9 Случайный прохожий
 
19.07.19
08:32
(8) Понял. Неправильно. Так писать нельзя. УНФ нет под рукой, но там вроде был реквизит "ОсновноеКонтактноеЛицо". Затерли уже или нет?
10 КнОпка
 
19.07.19
08:41
ВЫБРАТЬ ПЕРВЫЕ 1 СрезПоследних.Контакт,СрезПоследних.Контрагент из РегистрСведений.СвязиКонтрагентКонтакт.СрезПоследних(&Период, Ссылка = &Ссылка) КАК СрезПоследних

зачем соединение со справочником контрагент ?)
11 AnisaL
 
19.07.19
08:48
(10) мне надо у каждого контрагента выбрать одно контактное лицо
12 AnisaL
 
19.07.19
08:48
(9) да, есть
13 Случайный прохожий
 
19.07.19
09:29
14 AnisaL
 
19.07.19
09:56
(13) Да, спасибо! Вот это мне и нужно
15 novichok79
 
19.07.19
10:14
(11) у меня в запросе оно и было
(12) почему нельзя использовать этот реквизит? если конкретно первые, то с самым ранним порядком. я написал готовый запрос, который надо прилефтджойнить с таблице контрагентов.
16 AnisaL
 
19.07.19
11:47
(15) спасибо! Да я ваш запрос и использовала, а то что написали в (13) мне просто интересно было, что оказывается это называется корреляционным запросом
17 AnisaL
 
19.07.19
11:50
(15) да, я поняла, что там надо прилефтджойнить таблицу контрагентов
18 novichok79
 
19.07.19
12:39
(16) разве? я, конечно, не эксперт. но, насколько я знаю, корреляционый запрос - это вложенный запрос, который вычисляется каждый раз при проходе строки родительского запроса, по причине того, что вложенный запрос ссылается на поля из родительского запроса.
типа такого:

SELECT employee_number, name
   FROM employees emp
   WHERE salary > (
     SELECT AVG(salary)
       FROM employees
       WHERE department = emp.department)
19 AnisaL
 
19.07.19
14:00
(18) Да, верно
20 ДенисЧ
 
19.07.19
14:05
(16) (18) Дерёвня...

Коррелированный запрос...
Какой, а не что делающий...
21 novichok79
 
19.07.19
14:47
(20) ну что ж теперь поделаешь - трудности перевода Correlated subquery
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший