Добрый день! Имеются 2 табличные части - Продукция и Запасы. Табличные части связаны реквизитами: в Продукции реквизит НомерСтроки, в Запасах реквизит НомерСтрокиПродукция.
Например,
Таблица Продукция имеет следующий вид:
1; Продукция1
2; Продукция2
Можно ли запросом получить строки следующего вида из двух таблиц?
1; Продукция1; (Запас1Продукции1, Запас2Продукции1)
2; Продукция2; (Запас1Продукции2, Запас2Продукции2)
Что-то похожее на выборку из таблицы с табличной частью
(2) да это выход, соединить 2 таблицы и вывести итоги. Но у меня дальше в дерево по итогам неправильно выводится, если есть одинаковый корень, но разная спецификация. В общем, там все сложнее, чем в описанном в вопросе примере)
Мне нужно, чтобы именно в одну строку все было, как в примере
(3)В общем случае - нельзя.
Если запасов по продукции какое-то фиксированное небольшое количество, то левыми соединениями по количеству уникальных запасов можно сделать.
Можно ли запросом получить строки следующего вида из двух таблиц?
1; Продукция1; (Запас1Продукции1, Запас2Продукции1)
2; Продукция2; (Запас1Продукции2, Запас2Продукции2)
(11) Я сразу соглашусь, что я что-то не понимаю, но я вроде бы вижу, что я получил такой результат, как и предполагал (это левый результат в скриншоте). То, что вы описываете, это больше похоже на правый результат на скриншоте
(14) Согласен. Но Итоги я не могу сделать, потому что у меня все ломается в дальнейшем выводе в дерево, если есть один корень, но дальше "внутренности" по спецификациям разные. Если только оставлять детальные записи и ставить заглушку, что-то типо если значение номенклатуры по предыдущей строке равно значение по номенклатуре по текущей строке выборки, тогда не создавать новую строку дерева. Но как-то читабельнее, мне кажется, описать это таким полем запроса и вложенной выборкой обойти результат этого поля
ТЗ.Индексы.Добавить("Продукция");
СписокПродукции = ТЗ.Скопировать(, "Продукция");
СписокПродукции.Свернуть("Продукция");
СписокПродукции = СписокПродукции.ВыгрузитьКолонку("Продукция");
Для Каждого Продукция Из СписокПродукции Цикл
СтрокаДерева = ДеревоЗначений.Строки.Добавить();
СтрокаДерева.Продукция = Продукция;
Отбор = Новый Структура("Продукция", Продукция);
МассивЗапасов = ТЗ.НайтиСтроки(Отбор);
Для Каждого СтрокаЗапас ИЗ МассивЗапасов Цикл
СтрокаДереваЗапас = СтрокаДерева.Строки.Добавить();
СтрокаДереваЗапас.Продукция = СтрокаЗапас.Запас;
..............
КонецЦикла;
КонецЦикла;
ТЗ.Индексы.Удалить("Продукция");
Показать
Если уровней много, то цикл в процедуру завернуть и вызывать ее рекурсивно.