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

Группировка строк в запросе

Группировка строк в запросе
Я
   Janna26
 
14.09.20 - 13:33
Добрый день всем. Не могу решить одну проблему. Очень прошу помощи.
Суть такая. Есть запрос к регистру сведений. вот пример
ВЫБРАТЬ
    ДопСвойства.Ном КАК Ном,
    ВЫБОР
        КОГДА ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство1)
            ТОГДА ДопСвойства.Значение
        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.Значения.ПустаяСсылка)
    КОНЕЦ КАК Значение1,
    ВЫБОР
        КОГДА ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство2)
            ТОГДА ДопСвойства.Значение
        ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.Значения.ПустаяСсылка)
    КОНЕЦ КАК Значение2
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства

На выходе получаю таблицу https://ibb.co/qRdsLvT
А мне нужно что бы таблица схлопывалась по номенклатуры, на примере ссылки что бы в первой строке было Ном1 Значение 1 Значение 2. Это реально сделать запросом или СКД?
   ДенисЧ
 
1 - 14.09.20 - 13:35
Два запроса и объединить все
   dka80
 
2 - 14.09.20 - 13:39
(1) null или пустая ссылка со значением не схлопнутся
Выбираешь номенклатуру и к ней двумя левыми соединениями свойства делаешь
   Janna26
 
3 - 14.09.20 - 13:44
(1) Так я тоже пробовала, не помогает.
(2) Через Левое соединение тоже.
   dka80
 
4 - 14.09.20 - 13:44
(3) не верю. Давай запрос
   Janna26
 
5 - 14.09.20 - 13:47
(4) ВЫБРАТЬ
    ДопСвойства.Ном КАК Ном
ПОМЕСТИТЬ Вт_товар
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства
;

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

ВЫБРАТЬ
    Вт_товар.Ном КАК Ном,
    ДопСвойства.Значение КАК Свойство1,
    ДопСвойства1.Значение КАК Свойство2
ИЗ
    Вт_товар КАК Вт_товар
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопСвойства КАК ДопСвойства
        ПО Вт_товар.Ном = ДопСвойства.Ном
            И (ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство1))
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопСвойства КАК ДопСвойства1
        ПО Вт_товар.Ном = ДопСвойства1.Ном
            И (ДопСвойства1.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство2))
   dka80
 
6 - 14.09.20 - 13:48
(5) мда...
Ну хотя бы так поправь уж
ВЫБРАТЬ различные
    ДопСвойства.Ном КАК Ном
ПОМЕСТИТЬ Вт_товар
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства
   Janna26
 
7 - 14.09.20 - 13:48
На выходе лучше результат, но теперь данные задваиваются, по тому что в регистре 3 измерения, а связь можно сделать только по 2
   Janna26
 
8 - 14.09.20 - 13:49
(6) вот я дура.......
   Janna26
 
9 - 14.09.20 - 13:58
(6) нет всё таки не дура :)) в общем так "различные срабатывают" но на маленькой выборке
   Ёпрст
 
10 - 14.09.20 - 13:59
(9) а чем маленькая от большой отличается в плане  (6) ?
   dka80
 
11 - 14.09.20 - 14:00
(9) см (8), а потом результат временной таблицы выведи в консоль запросов и убедись, что в Вт_товар у тебя нет дублей, а если дубли есть, то убедись, что это точно дубли, а не разная номенклатура с одинаковым названием (например, по коду)
   Janna26
 
12 - 14.09.20 - 14:00
(10) я просто в консоле проверила и мне показало правильно, потом когда начала разбираться то вышло что не так.
   lEvGl
 
13 - 14.09.20 - 14:05
если правильно понял суть запроса, то
выбор когда свойство = перечисление Тогда
когда свойство = перечисление2
иначе
пустаяссылка

зачем два запроса и зачем 2 когда разделены? при таком раскладе он будет дважды выбирать
   Janna26
 
14 - 14.09.20 - 14:05
(11) https://ibb.co/hKF7dVH вот результат выборки, https://ibb.co/Kh8mSS7 вот что в регистре. Получается что Ном2 Значение3 дублируется, так же у ном 1 Значение 2 дублируется
   lEvGl
 
15 - 14.09.20 - 14:06
(14) объедини два условия в одно
   lEvGl
 
16 - 14.09.20 - 14:07
эммм... все такие неправильно понял, с одной колонкой не пойдет?
   lEvGl
 
17 - 14.09.20 - 14:08
потом развернуть эту колонку в Колонки СКД
   dka80
 
18 - 14.09.20 - 14:08
(14) это что за конфигурация??? 1С Бордель? Как у одной номенклатуры может быть несколько одинаковых свойств?
   Janna26
 
19 - 14.09.20 - 14:08
(14) Нужно несколько колонок, а можно такое как нить на СКД сделать?
   Janna26
 
20 - 14.09.20 - 14:09
(18) Это я для примера просто сделала.
   dka80
 
21 - 14.09.20 - 14:09
И какой результат у тебя должен быть при таких значениях регистра? Выложи ожидаемый результат
   lEvGl
 
22 - 14.09.20 - 14:11
желание в (0) - ерунда, задача скорее всего в другом
   Janna26
 
23 - 14.09.20 - 14:11
(21) результат должен быть такой https://ibb.co/pQKwfGB сколько строк в регистре столько значений и в таблице
   dka80
 
24 - 14.09.20 - 14:13
А почему у тебя Свойство2 Значение2 встало рядом со Свойство1 Значение1, а не со Свойство1 Значение2? Чувствуешь, что у тебя добавляется элемент случайности в результате?
   Janna26
 
25 - 14.09.20 - 14:15
(24) Это не особо важно, оно может встать с Значение 2 и Значение2, просто там было одно лишние, и надо как то это сделать. Может это можно как то решить через СКД?
   lEvGl
 
26 - 14.09.20 - 14:16
ну и разверни колонку в горизонталь в СКД
   lEvGl
 
27 - 14.09.20 - 14:16
на пересечении ресурс - значение
   lEvGl
 
28 - 14.09.20 - 14:19
и что то приведенный запрос не соответствует желаемому на картинке
ВЫБРАТЬ
    Вт_товар.Ном КАК Ном,
    ДопСвойства.Значение КАК Свойство1,
    ДопСвойства1.Значение КАК Свойство2
ИЗ
    Вт_товар КАК Вт_товар
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопСвойства КАК ДопСвойства
        ПО Вт_товар.Ном = ДопСвойства.Ном
            И (ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство1))
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопСвойства КАК ДопСвойства1
        ПО Вт_товар.Ном = ДопСвойства1.Ном
            И (ДопСвойства1.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство2))

где тут значение?
   Janna26
 
29 - 14.09.20 - 14:20
(27) на СКД я решила вот так https://ibb.co/FV57Qt6 но это всё равно не правильно, по тому что там только по одной строке с номенклатурой, я добилась этого с помощью https://ibb.co/GRr7pyY
   Janna26
 
30 - 14.09.20 - 14:21
(28) в таблицу попадают лишние данные
 
 Рекламное место пустует
   Janna26
 
31 - 14.09.20 - 14:24
(27) А если убрать с ресурса "ТаблицуЗначений" то СКД вывод всего 2 строки вместо 4-х https://ibb.co/FX5LLgW , не могу понять почему так происходит, но и детальные записи тоже ужасно выглядят.
   lEvGl
 
32 - 14.09.20 - 14:31
на этой картинке русским по белому https://ibb.co/pQKwfGB

Номенклатура Свойство1 Свойство2
ведро        10 литров пластиковое
ведро        15 литров

хоть это и бредовое нечто, но получиться должно
в скд Новая Таблица, в строках Номенклатура, в колонках Свойство, в ресурсах Значение, ресурс в выбранные поля для отчета
   lEvGl
 
33 - 14.09.20 - 14:32
ну и запрос как в (13) писал
   Janna26
 
34 - 14.09.20 - 14:34
(32) так не получается, я скриншот в (31) выложила, как это выгялядит. Должно быть
ведро        10 литров пластиковое
ведро        15 литров
А получается 
ведро        10 литров пластиковое
СКД каким то образом убирает нужные строки.
   dka80
 
35 - 14.09.20 - 14:38
Выбери все свойства1 и прономеруй строки
Выбери все свойства2 и прономеруй строки
Далее выбираешь номенклатуру и к ней левым соединением свойства1 по номенклатуре, а к свойства1 левым соединением свойства2 по номенклатуре и номеру строки
   Janna26
 
36 - 14.09.20 - 14:39
(33) вот запрос если делать через СКД https://yadi.sk/i/5t4bpACRo1TUkw вот так выглядят ресурсы https://yadi.sk/i/TRtU5f9pCbhRcA я убрала из выражения всё что бы не было количества скажем. Настройки самые примитивные https://yadi.sk/i/2IXg5HylMg9tsg и на выходе получаем фигню https://yadi.sk/i/2IXg5HylMg9tsg а если вместо ном вывести "Детальные записи" то таблица получается большой, что тоже не верно https://yadi.sk/i/GlJutiFIK0onjA
   Janna26
 
37 - 14.09.20 - 14:47
(35) сделала
ВЫБРАТЬ РАЗЛИЧНЫЕ

    ДопСвойства.Ном КАК Ном
ПОМЕСТИТЬ Вт_товар
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДопСвойства.Ном КАК Ном,
    ДопСвойства.Свойство КАК Свойство,
    ДопСвойства.Значение КАК Значение,
    АВТОНОМЕРЗАПИСИ() КАК НомерСтроки
ПОМЕСТИТЬ ВТ_свойство1
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства
ГДЕ
    ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство1)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДопСвойства.Ном КАК Ном,
    ДопСвойства.Свойство КАК Свойство,
    ДопСвойства.Значение КАК Значение,
    АВТОНОМЕРЗАПИСИ() КАК НомерСтроки
ПОМЕСТИТЬ ВТ_свойство2
ИЗ
    РегистрСведений.ДопСвойства КАК ДопСвойства
ГДЕ
    ДопСвойства.Свойство = ЗНАЧЕНИЕ(Перечисление.Свойства.Свойство2)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Вт_товар.Ном КАК Ном,
    ВТ_свойство1.Значение КАК Свойство1,
    ВТ_свойство2.Значение КАК Свойство2
ИЗ
    Вт_товар КАК Вт_товар
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_свойство1 КАК ВТ_свойство1
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_свойство2 КАК ВТ_свойство2
            ПО ВТ_свойство1.Ном = ВТ_свойство2.Ном
                И ВТ_свойство1.НомерСтроки = ВТ_свойство2.НомерСтроки
        ПО Вт_товар.Ном = ВТ_свойство1.Ном

На выходе потерялась запись из Ном2 https://yadi.sk/i/70G_snfAbsbVwA
   dka80
 
38 - 14.09.20 - 14:52
Ну включи немножко голову. Я ж не вижу полностью, что ты хочешь сделать. Пропала ном2 потому что у него нет Свойства1, а я тебе написал левым соединением к Свойству1.
   Janna26
 
39 - 14.09.20 - 14:56
(38) Так есть же свойство1 у Ном2, и я вроде так и сделала, К Номенклатуре левым соединением свойство 1 и к свойству 1 левым соединением Свойство 2
   Janna26
 
40 - 14.09.20 - 14:59
(38) мне нужно вот как тут https://yadi.sk/i/MiH0-cuMvWT-xA вот это почти идеальный вариант, но при этом что бы Ном 1 и Ном 2 были двумя строками.
   Janna26
 
41 - 14.09.20 - 15:09
Я всё равно уверена что это можно как то решить на уровне СКД, только вот как не понятно...
   Жан Пердежон
 
42 - 14.09.20 - 15:34
Покажи регистр "ДопСвойства", откуда там несколько значений одного свойства для одной номенклатуры
   dka80
 
43 - 14.09.20 - 15:36
(42) (14)
   Janna26
 
44 - 14.09.20 - 15:37
(42) я примерно накидала, регистр, мне это нужно для немного другой задачи.
   Жан Пердежон
 
45 - 14.09.20 - 15:50
(44) Почему у тебя в результате должно быть

Ном1-Значение1-Значение2
Ном1-Значение2-NULL

а не
Ном1-Значение2-Значение2
Ном1-Значение1-NULL
или не
Ном1-Значение2-Значение2
Ном1-Значение1-Значение2

?
   Жан Пердежон
 
46 - 14.09.20 - 16:05
последний запрос в (37):

ВЫБРАТЬ
    ЕСТЬNULL(ВТ_свойство1.Ном, ВТ_свойство2.Ном) КАК Ном,
    ВТ_свойство1.Значение КАК Свойство1,
    ВТ_свойство2.Значение КАК Свойство2
ИЗ
    ВТ_свойство1 КАК ВТ_свойство1
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_свойство2 КАК ВТ_свойство2
    ПО ВТ_свойство1.Ном = ВТ_свойство2.Ном
        И ВТ_свойство1.НомерСтроки = ВТ_свойство2.НомерСтроки


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