Имя: Пароль:
1C
1С v8
Вывод иерархического справочника в отчет
, ,
0 padaril
 
12.10.11
22:54
Пытаюсь сделать примерно следующее:

Процедура ДействияФормыВыполнить(Кнопка)
   ТабДок = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   ОблСтрока = Макет.ПолучитьОбласть("Строка");
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    Номенклатура.Ссылка КАК Ссылка
                         |ИЗ
                         |    Справочник.Номенклатура КАК Номенклатура
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    Ссылка ИЕРАРХИЯ
                         |АВТОУПОРЯДОЧИВАНИЕ");
   Рез = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
   НачатьАвтогруппировкуСтрок();
   й=1;
   ВывестиСтроки(Рез, й);
   ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Показать();
КонецПроцедуры

Процедура ВывестиСтроки(Стр, й)
   Для каждого Стр[й] из Стр.Строки Цикл
       ОблСтрока.Параметры.Заполнить(Стр[й]);
       ТабДок.Вывести(ОблСтрока,й);
       ВывестиСтроки(Стр[й], й+1);
   КонецЦикла;    
КонецПроцедуры



Ругается в строке "Для каждого Стр[й] из Стр.Строки Цикл" :
{Обработка.ПрайсЛист.Форма.Форма(27,17)}: Ожидается символ '='
   Для каждого Стр<<?>>[й] из Стр.Строки Цикл (Проверка: Толстый клиент (обычное приложение))
1 DrShad
 
12.10.11
22:56
откуда такой стиль написания кода!?
2 DrShad
 
12.10.11
22:58
да и СКД давно уже в легкую выводит такие отчеты
3 mikecool
 
12.10.11
23:00
Стр[й] заменить на Стр везде
и (2) +1 или построитель
4 sanja26
 
12.10.11
23:01
[й] зачем?
5 padaril
 
12.10.11
23:02
"Стр[й] заменить на Стр везде"
и что же это получится?
6 mikecool
 
12.10.11
23:03
(5) получится хоть что то уподобоваримое
7 mikecool
 
12.10.11
23:03
+6 хорошо, замени на СтрИ
8 mikecool
 
12.10.11
23:04
+7 и почитай про описание Для Каждого
9 padaril
 
12.10.11
23:04
Для каждого Стр1 из РЗ.Строки Цикл
   Обл.Параметры.Заполнить(Стр1);
   ТабДок.Вывести(Обл,1);
   Для каждого Стр2 из Стр1.Строки Цикл
      Обл.Параметры.Заполнить(Стр2);
      ТабДок.Вывести(Обл,2);
  КонецЦикла;
КонецЦикла;

пытаюсь модернизировать
10 sanja26
 
12.10.11
23:05
Вместо Стр.Строки -> Стр ?
11 padaril
 
12.10.11
23:13
Как сделать, если не знаю глубину иерархии?
12 padaril
 
12.10.11
23:15
что-то ничего не приходит в голову умного
13 padaril
 
12.10.11
23:25
Всем спасибо, помогло:


Процедура ДействияФормыВыполнить(Кнопка)
   ТабДок = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   ОблСтрока = Макет.ПолучитьОбласть("Строка");
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    Номенклатура.Ссылка КАК Ссылка,
                         |    Номенклатура.Код КАК Код
                         |ИЗ
                         |    Справочник.Номенклатура КАК Номенклатура
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    Код ИЕРАРХИЯ
                         |АВТОУПОРЯДОЧИВАНИЕ");
   Рез = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
   ТабДок.НачатьАвтогруппировкуСтрок();
   й=1;
   ВывестиСтроки(Рез, й, ТабДок, Макет);
   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Показать();
КонецПроцедуры

Процедура ВывестиСтроки(Стр, й, ТабДок, Макет)
   Для каждого Стр1 из Стр.Строки Цикл
       ОблСтрока = Макет.ПолучитьОбласть("Строка");
       ОблСтрока.Параметры.Заполнить(Стр1);
       ТабДок.Вывести(ОблСтрока,й);
       ВывестиСтроки(Стр1, й+1, ТабДок, Макет);    
   КонецЦикла;    
КонецПроцедуры
14 mikecool
 
12.10.11
23:43
убери из ВывестиСтроки
ОблСтрока = Макет.ПолучитьОбласть("Строка");
передавай ее параметром, только перед установкой параметров их надо чистить (?)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший