Вход | Регистрация
 

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

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

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

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

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

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

ОБЪЕДИНИТЬ

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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


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