Имя: Пароль:
1C
 
Выборка и вывод номенклатуры с учетом иерархии
0 Большое Пузо
 
21.04.09
12:55
Собственно сабж, интересует пример чтобы разобраться как вывести к примеру справочник номенклатура с его иерархией, то есть чтобы можно было развернуть и свернуть, короче как во всех отчетах. Данные выводить как я понял надо в поле табличного документа а как выбрать и вывести придумать не могу, думаю лучшим вариантом будет простой пример.
Ут 10.3.3.3 платформа последняя.
1 IronDemon
 
21.04.09
12:57
Конструктор выходной формы, в запросе итоги по иерархии.
2 Aprobator
 
21.04.09
13:15
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка КАК Номенклатура
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура ИЕРАРХИЯ
   |АВТОУПОРЯДОЧИВАНИЕ";
   
   РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
3 Большое Пузо
 
21.04.09
13:19
(2) Ну это выбрать
А как запихать все это в поле табличного документа?
4 Aprobator
 
21.04.09
13:26
РезультатЗапроса - имя реквизита формы связанного с твоим табличным полем. Еще вроед у табличного поля есть свойство, которое позволяет выводите дерево значений.
5 Aprobator
 
21.04.09
13:29
+4 ТабличноеПоле, а не поле табличного документа. Тогда этот запрос выведет все врасиво.
6 Aprobator
 
21.04.09
13:31
а вывод в поле табличного документа придется прописывать ручками.
7 Aprobator
 
21.04.09
13:34
(+6) Все зависит от того для чего тебе это требуется.
8 Большое Пузо
 
21.04.09
13:36
(7) Это будет отчет, будет еще куча колонок, причем их количество будет изменяемое, ну к примеру (колонки Номенклатура и выбранные пользователем типы цен).
9 Большое Пузо
 
21.04.09
13:36
+7 Поэтому и поле табличного документа, чтобы сделать макет и заполнять
10 Большое Пузо
 
21.04.09
13:41
Не догоняю с выводом, желательно пример
11 Большое Пузо
 
21.04.09
13:47
и надо чтобы это все добро еще сворачивалось по группам
12 Aprobator
 
21.04.09
13:48
ты отчет без использования СКД пишешь?
13 Большое Пузо
 
21.04.09
13:53
(12) что такое СКД?
14 Большое Пузо
 
21.04.09
13:54
предполагаю что Система компоновки данных
15 ZZeRRo
 
21.04.09
14:34
Что то вроде того:
РЗ = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
НачатьАвтогруппировкуСтрок();
Для каждого Стр1 из РЗ.Строки Цикл
   Обл.Параметры.Заполнить(Стр1);
   ТабДок.Вывести(Обл,1);
   Для каждого Стр2 из Стр1.Строки Цикл
      Обл.Параметры.Заполнить(Стр2);
      ТабДок.Вывести(Обл,2);
  КонецЦикла;
КонецЦикла;
ЗакончитьАвтогруппировкуСтрок()
16 Большое Пузо
 
28.04.09
21:18
(15) Ну это для глубины 2, а если она не ограниченна?
17 ZZeRRo
 
29.04.09
10:00
в параметр i в ТабДок.Вывести(Обл,i) передавай нужную "глубину"
18 svent0vit
 
29.04.09
10:09
ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетали = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

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

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
19 svent0vit
 
29.04.09
10:10
ну это "Если ВыборкаРезультат.Результат <> "ПУСТО" Тогда" - конечно вам не нужно
20 svent0vit
 
29.04.09
10:11
(12), как только в СКД появится возможность рулить группировками, тада и будем такие отчеты писать в ней
21 Большое Пузо
 
04.05.09
13:37
(18) Спасибо. Но если сказать честно, то совсем ничего не понял.
Если кому не тяжело киньте рабочий примерчик в мыло, так мне будет проще разобраться. мыло bolshoe_puzo(на)ngs.ru
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший