Имя: Пароль:
1C
 
Получить таблицу значений в ячейке результата запроса не для табличных частей, возможно?
0 Гений 1С
 
гуру
22.06.21
13:06
Вот классический запрос, который в ячейку строки запроса выдает таблицу значений:

ВЫБРАТЬ
    ПоступлениеТоваровНаСклад.Ссылка КАК Ссылка,
    ПоступлениеТоваровНаСклад.Товары.(
        Номенклатура КАК Номенклатура,
        Количество КАК Количество,
    ) КАК Товары
ИЗ
    Документ.ПоступлениеТоваровНаСклад КАК ПоступлениеТоваровНаСклад

А можно такую же штуку получить не для табличной части, а для произвольной таблицы значений?

Пробую, не выходит:

ВЫБРАТЬ
    1 КАК П1,
    "А" КАК П2
ПОМЕСТИТЬ Т

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    2,
    "Б"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка, (П1, П2) КАК П
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Т КАК Т
        ПО (ИСТИНА)
1 Вафель
 
22.06.21
13:06
Никак
2 Йохохо
 
22.06.21
13:08
обход по группировкам и на нужном уровне выгрузить()
3 Гений 1С
 
гуру
22.06.21
13:10
(1) сукко
(2) Вот как раз этого и хотелось избежать
4 Chameleon1980
 
22.06.21
13:45
зачем, если не секрет?
5 Chameleon1980
 
22.06.21
13:46
ааа. обычно так к тч обращаются при печати
ты хочешь не долго думая подсунуть свое в печать?
6 PLUT
 
22.06.21
13:51
(0) СКД умеет
7 PLUT
 
22.06.21
13:54
+(6) (0) "учись студент, а то будешь всю жизнь ключи подавать"

https://infostart.ru/1c/articles/1116759/
8 Гений 1С
 
гуру
22.06.21
14:37
(6) мне не в СКД
9 Гений 1С
 
гуру
22.06.21
14:40
(4) есть HTTP-запрос по остаткам, например
по структуре в JSON надо выдавать так:
товар, общий остаток
-- склад, остаток
-- склад, остаток

Можно конечно, группировкой, но в лом.

Я в конечном итоге так вышел (обе выборки упорядочены по номенклатуре):

    Строка = РезультатыЗапросаОстатки.Выбрать();
    СтрокаДеталиОстатков = РезультатыЗапросаОстаткиДетально.Выбрать();
    СтрокаДеталиОстатков.Следующий(); //Позиционируем на первую строку
    Пока Строка.Следующий() Цикл                    
        Пока Строка.Номенклатура = СтрокаДеталиОстатков.Номенклатура Цикл
            ...
            Если НЕ Строка.Следующий() Тогда Прервать; КонецЕсли;
        КонецЦикла;
    КонецЦикла;


И там еще в этом обмене парочка таких приколов, когда надо к товару подзапросы делать.

А группировкой не хочу, потому что там limit и offset, что само по себе на 1С непросто сделать.
10 Said_We
 
22.06.21
14:46
(0)

Вот это "изобретение" от 1С засовывать в поле целую ТЗ.

ПоступлениеТоваровНаСклад.Товары.(
        Номенклатура КАК Номенклатура,
        Количество КАК Количество,
    ) КАК Товары

Выбирай по группировкам и засовывай в тебе необходимую структуру далее структуру в JSON.
11 Гений 1С
 
гуру
22.06.21
14:53
(10) мне нужно не табличную часть, а произвольную таблицу, КЭП
12 PLUT
 
22.06.21
15:00
(11) ну так пакетные запросы обычно юзают. если отсортируешь по номенклатуре, то можно результат пакета выгрузить в ТЗ и по индексу нужную строку получать

ну там типа ТЗОстатки[индекс].Склад, ТЗОстатки[индекс].Остаток
13 PLUT
 
22.06.21
15:01
(12) фигню написал про получение остатков по складам из ТЗ по индексу :)
14 TormozIT
 
гуру
22.06.21
15:04
(0) Нельзя
15 Said_We
 
22.06.21
15:09
(11) Я так и написал, что ТЗ произвольную не получишь, а только то что 1С придумало в случае выборки из табличной части как в примере (0) или (10).
Выборки с группировками. Подготавливай ТЗ и запихивай в JSON. Можно в виде функции.

ВыборкаГруппировка = РезультатыЗапросаОстатки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Строка.Следующий() Цикл
     ...
     Структура.ТЗ = Функция_ВернутьТЗПоГруппировке( ВыборкаГруппировка.Выбрать() )
     ...
КонецЦикла;
16 Said_We
 
22.06.21
15:11
Не всё твое поправил :-) Думаю мысль понятна...

ВыборкаГруппировка = РезультатыЗапросаОстатки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаГруппировка.Следующий() Цикл
     ...
     Структура.ТЗ = Функция_ВернутьТЗПоГруппировке( ВыборкаГруппировка.Выбрать() )
     ...
КонецЦикла;
17 Ненавижу 1С
 
гуру
22.06.21
15:25
Я бы и в тч такое запретил
18 Said_We
 
22.06.21
15:36
(17) Согласен.
19 Гений 1С
 
гуру
22.06.21
15:40
(15) нельзя, там критична скорость (в этой задаче)
(17) (18) Почему?
20 Вафель
 
22.06.21
15:41
Для скорости лучше плоской выборки и отслеживания изменения ключевых полей ничего нет
21 Said_We
 
22.06.21
15:50
(19) В (15) нормальная скорость. Плоская выборка без поиска внутри. Никаких лишних проверок.
Структуру ТЗ заранее до первого цикла выборки подготовить. Далее выгружай пустую ТЗ в новую ТЗ. По соответствию имен полей ТЗ заполняй. Функция 5-ть строк и не зависит от структуры ТЗ.
22 Said_We
 
22.06.21
15:52
(0) Что бы использовать в выборках запроса группировки в тексте запроса должны быть итоги. Где они?
23 Гений 1С
 
гуру
22.06.21
16:47
(21) группировка усЛожняет, нафиг