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

Нужна помощь с запросом: на каждую запись регистра сведений повторить записи из справочник

Нужна помощь с запросом: на каждую запись регистра сведений повторить записи из справочник
Я
   vdeemer
 
25.04.19 - 10:34
Доброго времени суток!
Помогите, пожалуйста, составить следующий запрос по вводным:
Есть справочники Пользователи и ПоказателиАктивности, регистр КоэффициентыПоказателейАктивностиПользователей (измерения Пользователь и Показатель, ресурс ЗначениеПоказателя).

Нужна выборка записей вида {Пользователь:ПоказательАктивности:ЗначениеПоказателя}, но на каждого пользователя из регистра надо вывести ВСЕ записи из справочника показателей. Если для какого-то показателя активности для данного пользователя нет записи в регистре, то значение показателя = NULL.

Такое возможно сделать запросом?
Спасибо.
 
 
   1Сергей
 
1 - 25.04.19 - 10:35
Обычные левые сеодинения
   vdeemer
 
2 - 25.04.19 - 10:36
(1) пробовал, не выходит
   1Сергей
 
3 - 25.04.19 - 10:38
(2) Я думаю наши отношения уже перешли на новый уровень - не стесняйся, показывай запрос
   vdeemer
 
4 - 25.04.19 - 10:39
ВЫБРАТЬ
    СпрПоказатели.Ссылка
ПОМЕСТИТЬ ВТ_Показатели
ИЗ
    Справочник.ТРК_ПоказателиАктивности КАК СпрПоказатели
;

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

ВЫБРАТЬ
    ЗначенияПоказателей.Показатель,
    ЗначенияПоказателей.Пользователь,
    ЗначенияПоказателей.Коэффициент,
    ВТ_Показатели.Ссылка
ИЗ
    ВТ_Показатели КАК ВТ_Показатели
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияПоказателейПоВидамАктивности.СрезПоследних КАК ЗначенияПоказателей
        ПО ВТ_Показатели.Ссылка = ЗначенияПоказателей.Пользователь
   vdeemer
 
5 - 25.04.19 - 10:39
(3) Ахаха, я уже писал в это время
   patria0muerte
 
6 - 25.04.19 - 10:39
Сначала перемножь таблицы Пользователи и Показатели, помести во временную, потом левым соединением к ней цепляй регистр
   1Сергей
 
7 - 25.04.19 - 10:40
(4) так надо к Пользователям соединять всё остальное, если нужны все пользователи
   vdeemer
 
8 - 25.04.19 - 10:40
(6) тогда вылезут все пользователи, а они мне не нужны
   patria0muerte
 
9 - 25.04.19 - 10:41
Ну сначала отбери пользователей как тебе надо, потом (46
   patria0muerte
 
10 - 25.04.19 - 10:41
*Потом (6)
   vdeemer
 
11 - 25.04.19 - 10:41
на каждого пользователя, который есть в записях регистра, нужно вывести все записи справочника показателей
   vdeemer
 
12 - 25.04.19 - 10:41
Разве (9) (10) <> (4)?
   catena
 
13 - 25.04.19 - 10:43
(12)Не равно. Отбери из регистра всех пользователей и скрещивай их со всеми показателями
   vdeemer
 
14 - 25.04.19 - 10:43
(12) не то, сам понял))
в общем, сначала выбрать РАЗЛИЧНЫЕ пользователи, потом перемножить, потом...
Сейчас попробую
   vdeemer
 
15 - 25.04.19 - 10:43
(13) ага, (14)
   patria0muerte
 
16 - 25.04.19 - 10:43
(12) Хм, да. Равно упустил момент, что "на каждого пользователя из регистра". Тогда (4) пойдет вполне
   vdeemer
 
17 - 25.04.19 - 10:46
(16) не, не подходит. Надо (14)
   Simod
 
18 - 25.04.19 - 10:55
ВЫБРАТЬ
    СПР_Пользователи.Ссылка КАК Пользователь,
    СПР_ПоказателиАктивности.Ссылка КАК Показатель,
    РС_КоэффициентыПоказателейАктивностиПользователей.ЗначениеПоказателя КАК Значение
ИЗ
    Справочник.Пользователи КАК СПР_Пользователи
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПоказателиАктивности КАК СПР_ПоказателиАктивности
        ПО Истина
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КоэффициентыПоказателейАктивностиПользователей КАК РС_КоэффициентыПоказателейАктивностиПользователей
        ПО СПР_Пользователи.Ссылка = РС_КоэффициентыПоказателейАктивностиПользователей.Пользователь
        И СПР_ПоказателиАктивности.Ссылка = РС_КоэффициентыПоказателейАктивностиПользователей.Показатель
   vdeemer
 
19 - 25.04.19 - 10:57
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЗначенияПоказателейПоВидамАктивности.Пользователь
ПОМЕСТИТЬ ВТ_Пользователи
ИЗ
    РегистрСведений.ЗначенияПоказателейПоВидамАктивности.СрезПоследних(&ДатаСреза, ) КАК ЗначенияПоказателейПоВидамАктивности
;

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

ВЫБРАТЬ
    ВТ_Пользователи.Пользователь,
    ТРК_ПоказателиАктивности.Ссылка КАК Показатель
ПОМЕСТИТЬ ВТ_Умножение
ИЗ
    ВТ_Пользователи КАК ВТ_Пользователи,
    Справочник.ТРК_ПоказателиАктивности КАК ТРК_ПоказателиАктивности 
;

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

ВЫБРАТЬ
    ВТ_Умножение.Пользователь КАК Пользователь,
    ВТ_Умножение.Показатель КАК Показатель,
    ЕСТЬNULL(ЗначенияПоказателей.Коэффициент, 0) КАК Коэффициент
ИЗ
    ВТ_Умножение КАК ВТ_Умножение
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияПоказателейПоВидамАктивности.СрезПоследних(&ДатаСреза, ) КАК ЗначенияПоказателей
        ПО ВТ_Умножение.Пользователь= ЗначенияПоказателей.Пользователь
            И ВТ_Умножение.Показатель = ЗначенияПоказателей.Показатель

УПОРЯДОЧИТЬ ПО
    Пользователь,
    Показатель
   Simod
 
20 - 25.04.19 - 10:57
Сорри, не увидел, что по пользователя из регистра. Но думаю общая идея понятна.
   vdeemer
 
21 - 25.04.19 - 11:00
(20) ага, проверяю
так-то (19) дает то, что надо
   vdeemer
 
22 - 25.04.19 - 11:06
(20) работает, спасибо
Всем спасибо, (18) и (19) - рабочий запрос


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