Имя: Пароль:
1C
1С v8
Сложить строки в запросе
,
0 ONE1
 
12.08.22
17:24
https://ibb.co/mBTthSs
люди добрые, помогите. Можно ли как-то сложить строки одного объекта в одну?
Нужно для динамического списка, чтобы не ругался "Обнаружено дублирование ключевых значений в колонках"
1 DayDreamer
 
12.08.22
17:27
что мешает через Объединить?
2 PR
 
12.08.22
17:28
(1) Сколько раз?
3 PR
 
12.08.22
17:29
+(2) И как фильтровать по одному элементу?
4 FN
 
12.08.22
17:30
(0) три левых соединения к основной таблице
5 Fragster
 
гуру
12.08.22
17:36
такая ошибка говорит о том, что это динамический список. а в нем характеристики и так поддерживаются, просто вытащить на форму надо.
6 ONE1
 
12.08.22
17:43
Выведены на форму поля, но т.к. в запросе 3 раза одна ссылка встречается дин. список выдаёт ошибку
7 AlvlSpb
 
12.08.22
17:44
(0) Это динамический список, как понимаю. Как устанавливаешь параметры Распечатано, Выдано, Отдано?
8 ONE1
 
12.08.22
17:46
Список.Параметры.УстановитьПараметр, передаю планывидовхарактеристик.дополнительныерек. НайтиПоНаименованию
9 PR
 
12.08.22
17:50
А, так просто три свойства что ли, то есть три левых соединения
И тебе не стыдно спрашивать такую легкотню?
10 AlvlSpb
 
12.08.22
17:52
(9) Да тут дело в том, что по идеи должно работать так как он указал, без костылей с соединениями
11 AlvlSpb
 
12.08.22
17:53
(8) Ну считаем что опечатался "УстановитьЗначениеПараметра", а не "УстановитьПараметр"?
12 Said_We
 
12.08.22
17:53
Выбрать
     т.ссылка
    ,МАКС(т.Распечатано)
    ,МАКС(т.ВыданоНаСклад)
    ,МАКС(т.ОтданоКлиенту)
...
сгрупировать по
    т.Ссылка
13 AlvlSpb
 
12.08.22
17:54
А сделай-ка запрос к регистру доп сведения без отборов или просто посмотри. Там нет каких-либо задвоений?
14 Said_We
 
12.08.22
17:56
(13) Конечно есть. Даже затроение есть. Когда и распечатали и выдали на склад и клиенту.
15 Said_We
 
12.08.22
17:58
16 MaQo
 
12.08.22
18:06
Король костылей:
выгружаешь результат запроса в таблицу значений и обрабатываешь каждую строку, создавая новую таблицу, где строки будут созданы сразу со всеми параметрами

Тз1 = Запрос.Выполнить().Выгрузить();
СтрПр = Неопределено;
Тз2 = Новый ТаблицаЗначений;
Для каждого Стр из Тз1 Цикл
    Если СтрПр <> Стр Тогда
        СтрТз2 = Тз2.Добавить();
        СтрТз2 = Стр;
    Иначе
        Если Стр.ВыданоНаСклад <> Неопределено Тогда
            СтрТз2.ВыданоНаСклад = Стр.ВыданоНаСклад;
        КонецЕсли;
        Если Стр.отданоКлиенту<> Неопределено Тогда
            СтрТз2.отданоКлиенту= Стр.отданоКлиенту;
        КонецЕсли;
    КонецЕсли;
    СтрПр = Стр
КонецЦикла;
17 Garykom
 
гуру
12.08.22
18:09
(0) Архитектурная ошибка детектед.
Почему три булевых доп.сведения вместо одного с тремя разными статусами?
18 PR
 
12.08.22
18:09
(10) Да тут дело в том, что его запрос говно изначально
Выбирать нужно три раза, в каждом одно свойство
И потом группировать по объекту в одну строку вместо трех
Ну или (что логичнее) сразу выбирать объекты из родной таблицы или различные из таблицы свойств, а потом к ней уже цеплять слева три соединения
19 Garykom
 
гуру
12.08.22
18:10
(16) Нахер так?
Три подзапроса и объединить
20 Garykom
 
гуру
12.08.22
18:11
(18) Это уже вкусовщина
21 Garykom
 
гуру
12.08.22
18:11
(20)+ Чтобы получить все доки даже без статусов
22 AlvlSpb
 
12.08.22
18:15
Правильно в (12). У него ошибка не потому, что три раза вызывается значение (свойства-то разные), а в том что объект.ссылка - трижды одинаковый. Просто сгруппировать по ссылке в запросе как в (12) и должно работать
23 AlvlSpb
 
12.08.22
18:20
ВЫБРАТЬ
    ДополнительныеСведения.Объект КАК Объект,
    МАКСИМУМ(ВЫБОР
            КОГДА ДополнительныеСведения.Свойство = &РеспечатаноЗадание
                ТОГДА ДополнительныеСведения.Значение
        КОНЕЦ) КАК РеспечатаноЗадание,
    МАКСИМУМ(ВЫБОР
            КОГДА ДополнительныеСведения.Свойство = &ВыданоНаСклад
                ТОГДА ДополнительныеСведения.Значение
        КОНЕЦ) КАК ВыданоНаСклад,
    МАКСИМУМ(ВЫБОР
            КОГДА ДополнительныеСведения.Свойство = &ОтданоКлиенту
                ТОГДА ДополнительныеСведения.Значение
        КОНЕЦ) КАК ОтданоКлиенту    
ИЗ
    РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения

СГРУППИРОВАТЬ ПО
    ДополнительныеСведения.Объект
24 Garykom
 
гуру
12.08.22
18:20
(22) операция группировки очень затратная
25 PR
 
12.08.22
18:24
(23) Хочется блевануть, если честно
Сделай такое на таблице с сотней тысяч записей
26 1Сергей
 
12.08.22
18:28
Как уже сказали, правильно сделать три левых соединение к таблице документа
27 Said_We
 
13.08.22
11:58
(24), (25), (26) Читайте внимательно про затратные операции в (15). Удивитесь.
28 ONE1
 
15.08.22
10:16
(12) Помогло, всем ❤
29 Simod
 
15.08.22
17:21
(0) Делай нормальный запрос к таблице документа, а остальное:
https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/?sphrase_id=316520
30 rudnitskij
 
15.08.22
18:41
Непонятно, зачем на каждое свойство одного объекта отдельная строка в регистре сведений?
31 Said_We
 
16.08.22
00:14
(30) Из интересов вашего аккаунта:
"Роберт Шекли:"Чтобы правильно задать вопрос, нужно знать бOльшую часть ответа" -------------------------------------------------------- Судя по вопросам, некоторые не знают и 5%".

Без обид, но тут как раз к месту. :-)

Это же 1С тут есть составные типы. Есть планы видов характеристик. И как всё это в СУБД хранится не так важно, так как запросы в 1С всё равно пишутся по структуре метаданных.
32 AXZ
 
16.08.22
14:05
(0) Узнай какие поля у тебя дублируются, все остальные группируй, эти - через агрегатные функции