Имя: Пароль:
1C
1С v8
Дерево подчиненных документов
0 alf2006x
 
01.11.21
16:51
Всем доброго дня.
Ищу помощи в следующем вопросе.

Формирую дерево документов для того, чтобы можно было галками выбрать нужные и выгрузить в XML.
Вроде все ничего, но не хватает красоты в моем решении.
Делаю объединением запрос в три вида документов: ЗаказПокупателя, РТУ и СФВ.
Получаю массив доков каждый из которых привязан к заказу (отдельное поле в каждом из объединенных подзапросов).
Кладу всё в ВТ1.
После чего делаю выборку из ВТ1 с итогами по ЗаказПокупателя и выгружаю в дерево на форме (УФ).

[url=https://radikal.ru][img]https://b.radikal.ru/b10/2111/e4/a6f340026fda.png[/img][/url]

Дерево получается вроде ничё так, но:
1. Данные о заказе и закрывашках (РТУ, СФВ) находятся в разных Колонках. А хочется в одной.
2. Колонка СуммаДокумента у заказа пустая (видимо так как группирую по нему). А нужно вывести СумммуДокумента из самого заказа.

Может есть у кого какие идеи?
1 alf2006x
 
01.11.21
16:55
Чё-то картинка не взлетела... (
2 alf2006x
 
01.11.21
16:57
3 mistеr
 
01.11.21
17:01
(0) СКД со своей иерархией и выводом в ДЗ.
4 DrShad
 
01.11.21
17:03
в дереве колонка составного типа
в корне заказ, в ветках "закрывашки"

ну с суммами поймешь уже
5 alf2006x
 
01.11.21
17:04
Ок, пробую, спасибо.
6 alf2006x
 
01.11.21
17:10
(3) Если у меня это обычная обработка - как СКД к ней примотать? Программно вызывать что ли (пока не очень умею)?
7 Ёпрст
 
01.11.21
17:11
(0) в итоги пихай основной документ, в дет записях будут "закрывашки".. всё будет в одной колонке
8 alf2006x
 
01.11.21
17:15
(7) ЧЯДНТ:

&НаСервере
Процедура ОбновитьДеревоДокументовНаСервере()
    
    ДеревоДокументыПоставщика = РеквизитФормыВЗначение("ДокументыПоставщика2");
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПокупателя.Ссылка КАК СсылкаНаДокумент,
        |    ""Заказ покупателя "" + ЗаказПокупателя.Номер КАК ДокументПоставщика,
        |    ЗаказПокупателя.Дата КАК ДатаДокумента,
        |    ЗаказПокупателя.СуммаДокумента КАК СуммаДокумента,
        |    ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
        |    ЗаказПокупателя.Ссылка В (&ВыбранныеДокументы) КАК Пометка
        |ПОМЕСТИТЬ ВТ1
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Ссылка,
        |    ""Реализация товаров и услуг "" + РеализацияТоваровУслуг.Номер,
        |    РеализацияТоваровУслуг.Дата,
        |    РеализацияТоваровУслуг.СуммаДокумента,
        |    РеализацияТоваровУслуг.Сделка,
        |    РеализацияТоваровУслуг.Ссылка В (&ВыбранныеДокументы)
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    СчетФактураВыданный.Ссылка,
        |    ""Счет-фактура выданный "" + СчетФактураВыданный.Номер,
        |    СчетФактураВыданный.Дата,
        |    СчетФактураВыданный.СуммаДокумента,
        |    СчетФактураВыданный.ДокументОснование.Сделка,
        |    СчетФактураВыданный.Ссылка В (&ВыбранныеДокументы)
        |ИЗ
        |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ ПЕРВЫЕ 100
        |    ВТ1.СсылкаНаДокумент,
        |    ВТ1.ЗаказПокупателя,
        |    ВТ1.ДокументПоставщика,
        |    ВТ1.ДатаДокумента,
        |    ВТ1.СуммаДокумента КАК СуммаДокумента,
        |    ВТ1.Пометка
        |ИЗ
        |    ВТ1 КАК ВТ1
        |ГДЕ
        |    НЕ ВТ1.СсылкаНаДокумент = ВТ1.ЗаказПокупателя
        |
        |УПОРЯДОЧИТЬ ПО
        |    ВТ1.ЗаказПокупателя.Дата УБЫВ,
        |    ВТ1.ЗаказПокупателя.Номер УБЫВ
        |ИТОГИ ПО
        |    ЗаказПокупателя";
    
    Запрос.УстановитьПараметр("ВыбранныеДокументы", Новый Массив);
    
    ДеревоДокументыПоставщика = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    
    ЗначениеВРеквизитФормы(ДеревоДокументыПоставщика, "ДокументыПоставщика2");
    
КонецПроцедуры
9 Ёпрст
 
01.11.21
17:18
(7) не, так не выйдет. У тебя в запросе уже всё в разных колонках.
При таком подходе - тут только руками формировать дерево, обходя итоги запроса, где все доки будешь пихать в одну колонку
10 alf2006x
 
01.11.21
17:22
(9) Я открыт на эксперименты. Готов ввязаться в любую авантюру, лишь бы в итоге получилось красиво.
Может какие идеи есть?
Руками то оно конечно можно, но ведь хочется красоты и изящества (в кои-то веке).
11 alf2006x
 
01.11.21
17:24
А ещё скорости! (как я мог забыть по это)
12 alf2006x
 
01.11.21
17:25
Может как-то журнал документов использовать?
Галки туда реально прикрутить? И группировать вокруг заказа?
13 alf2006x
 
01.11.21
17:28
Или может галки лучше примотать к структуре подчиненности (куда выводить все заказы)?
14 серый КТУЛХУ
 
01.11.21
17:28
ты не выгружай. ты создавай ДЗ а потом обходи запрос и заполняй его как надо.
15 alf2006x
 
01.11.21
17:29
(14) А пожалуй!...
16 alf2006x
 
01.11.21
17:30
(14) В скорости это ведь не сильно проиграет выгрузке?
17 mistеr
 
01.11.21
18:08
(6) Добавить макет типа СКД. Программно вызвать несложно, примеров полно
18 pechkin
 
01.11.21
21:04
Чтобы галочка красиво отображалась - делай ее в группе с 1 колонкой
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший