Имя: Пароль:
1C
 
Вывод динамических колонок в табличный документ
0 DimMar
 
27.08.07
16:53
Задача: Надо вывести в табличный документ таблицу значений
Номенклатура | Недостаток | Склад1 | ... | Склад n , то есть колонка склад динамическая, а первые две статические.
Пытаюсь вывести, выводится че попало. Как только не пробовал, и через Присоединить и  просто выводил области через "|", ни че не выходит.
Может что-то неправильно делаю. В 7.7 было просто:
ВывестиСекцию и ПрисоединитьСекцию - любой отчет по секциям склеить очень просто, а тут не выходит. Уже все мануалы перечитал, ни че не нашел нужного.
Если кто знает, как это сделать, напишите, пожалуйста, код вывода например Шапки и одной строки.
Заранее спасибо
1 Flipper
 
27.08.07
17:00
покажи, что ужо сделал...
2 IronDemon
 
27.08.07
17:05
Выводи таблицу через построитель
3 АСанСаныч
 
27.08.07
17:09
Набирай во вспомогательный табдок строчку присоединением, а затем выводи его(табдок) в основной документ
4 DimMar
 
27.08.07
17:10
ТабДок=Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Отчет");
   //Область=Макет.ПолучитьОбласть("Шапка");
   ИмяКолонки="Номенклатура";
   Обл=Макет.ПолучитьОбласть("Шапка|"+ИмяКолонки);
   ТабДок.Вывести(Обл);
   Для каждого Кол Из ТЗПечать.Колонки Цикл
       Если  Кол.Имя="Недостаток" Тогда
           ИмяКолонки=Кол.Имя;
           Обл=Макет.ПолучитьОбласть("Шапка|"+ИмяКолонки);
           Область=ТабДок.Присоединить(Обл);
           ТабДок.Вывести(Область);
       Иначе
           Если Кол.Имя<>"Номенклатура" Тогда
               ИмяКолонки="Шапка|Склад";              
               Обл=Макет.ПолучитьОбласть(ИмяКолонки);
               Обл.Параметры.Склады=Кол.Имя;
                               Область=ТабДок.Присоединить(Обл);
               ТабДок.Вывести(Область);
           КонецЕсли;
       КОнецЕсли;
   КонецЦикла;
   //Для каждого Стр Из ТЗПечать Цикл
   //    Если Кол.Имя="Номенклатура" ИЛИ Кол.Имя="Недостаток" Тогда
   //        ИмяКолонки=Кол.Имя;
   //        Обл=Макет.Область("Строка|"+ИмяКолонки);
   //    Иначе
   //        ИмяКолонки="Склад";              
   //        Обл=Макет.ПолучитьОбласть(ИмяКолонки);
   //        Обл.Параметры.КОличество=Стр[ПолучитьИмяТекСклада(Кол.Имя)];
   //    КОнецЕсли;
   //    ТабДок.Вывести(Обл);        
   //КонецЦикла;
   ТабДок.Показать();

Это уже наверно 20-й вариант, так что, если честно, я уже немного в них запутался. В этом варианте похоже присоединяется каждый раз весь табличный документ в релультате получается че попало. Вывод строки я закоментировал, и без него фигня получилась
5 hhhh
 
27.08.07
17:13
Выбрось

ТабДок.Вывести(Область);

это совершенно лишнее.
6 hhhh
 
27.08.07
17:16
Область - это у тебя получившийся табличный документ и ты его выводишь второй раз.
7 DimMar
 
27.08.07
17:16
Набирай во вспомогательный табдок строчку присоединением, а затем выводи его(табдок) в основной документ

Я определил в макете три секции вертикальных - Номенлатура,Недостаток,Склад
и две горизонтальных Шапка и СТрока.
Если получать пересечение областей "ВертикальнаяСекция|Гориз-яСекция" то выводиться секции Номенклатура и Недостаток нормально а Склад выводиться один раз, хотя я его в цикле вывожу два раза.
8 Flipper
 
27.08.07
17:22
(5) +1
9 DimMar
 
27.08.07
17:36
(5) и (6) Большое спасибо, все получилось, действительно
ТабДок.Вывести(Область); нужна только при выводе первой секции в строке.