Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с запросом

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.