Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как вывести часть данных иерархического справочника?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Vofka
Я может быть туплю, т.к. конец дня, но что-то не могу придумать элегантное решение следующей задачи. Есть, например, в расходной накладной список товаров с количеством и прочим. Нужно на печать вывести данные в таком виде:

Группа 1
-- Группа 2
---- Товар из накладной 1 , количество 1
Группа 3
-- Группа 4
---- Товар из накладной 2 , количество 5

Надеюсь, понятно?

Начал я крутить рекурсию (получаю результат в виде дерева значений и работаю с ним), всякие другие приколы, а потом подумал, может я чего-то не знаю либо же просто туплю: может есть средства платформы, которые эти заботы берут на себя либо какой-то стандартный алгоритм для таких вещей. Погуглил, ничего интересного не нашел: кроме рекурсии ничего нету. Кто решал такое - расскажите как решали.
Ardi
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    1 КАК Поле1
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В(&Ссылки)

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка
ИТОГИ ПО
    Ссылка ИЕРАРХИЯ

Выводить на печать те значения где Поле1 = Null

Или то же самое с запросом к табличной части документа и всеми полями тч.
Но выводить все группы
и элементы без Null.
Vofka
Не понял, честно говоря.
alex040269
если вывод в табличный документ, то можно использовать группировку строк.
Ardi
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.Цена,
    РеализацияТоваровУслугТовары.Сумма
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка = &Ссылка
ИТОГИ ПО
    Номенклатура ИЕРАРХИЯ
.........................
Для Каждого СтрокаРезультата Из РезультатТаблица Цикл
Если СтрокаРезультата.Номенклатура.ЭтоГруппа или СтрокаРезультата.Количество <> Null Тогда
Сообщить(""+СтрокаРезультата.Номенклатура.ЭтоГруппа +";            "+СтрокаРезультата.Номенклатура);
КонецЕсли;
КонецЦикла;


Результат обхода строк:
Да; Футляры и чехлы
Да; Футляры и чехлы для струнных инструментов
Да; Футляры для альта
Нет; Футляр для альта 24105VA
Да; Аксессуары
Да; Аксессуары для струнных инструментов
Да; Струны
Да; Струны для скрипки
Да; Струны для скрипки JARGAR
Нет; Струны для скрипки JARGAR, комплект
Да; Струны для альта
Да; Струны для альта THOMASTIK
Да; Струны для альта THOMASTIK PRAZISION
Нет; Струны для альта THOMASTIK PRAZISION, комплект
Нет; Струна для альта До THOMASTIK PRAZISION
Нет; Струна для альта Ля THOMASTIK PRAZISION



Результат запроса в виде ТЗ:


В виде дерева:
Vofka
Ardi, жму палец за то, что не поленились отписать. Само решение ещё не проверял, на досуге поэкспериментирую.

ЗЫ. свой вопрос я решил с помощью рекурсии и "любви", но вариант выше, как писал, попробую обязательно и рассмотрю другие хорошие варианты, если кто предложит smile.gif
Acid
Если это отчет, то зачем таблица значений? система компоновки это умеет.
Vofka
Это не отчет, это печатная форма. Сама форма нельзя сказать, что сложная, но через компоновку её накрутить сильно геморно будет: надо будет макет свой создавать со всеми вытекающими. 47046430.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.