Имя: Пароль:
1C
1С v8
Сложности с ТабДок.Присоединить()
0 drcrasher
 
17.06.15
17:02
Многоуважаемый Олл.

Столкнулся со странным:
заполняю массив табличными документам, потом вывожу его в результирующий таб.док.

Код вывода:
    РезДок = Новый ТабличныйДокумент;
    Ширина = 1;
    Для каждого мОбласть Из МассивОбластей Цикл
        Если Ширина = 1 Тогда
            РезДок.Вывести(мОбласть);
        Иначе
            РезДок.Присоединить(мОбласть);
        КонецЕсли;
        
        Ширина = Ширина + 1;
        Если Ширина = 5 Тогда
            Ширина = 1;
        КонецЕсли;
    КонецЦикла;


Так сделано в печати ценников и там работает хорошо.

Но у меня выводит следующим образом:
1
2 3 4 5
6
7 8 9 0

что я делаю не так?
1 Господин ПЖ
 
17.06.15
17:05
условия не там по циклу
2 drcrasher
 
17.06.15
17:06
А подробнее?
3 Господин ПЖ
 
17.06.15
17:09
(2) а жеваной морковкой в рот не поплевать?

на такое не хватает мозгов - метлу в руки
4 drcrasher
 
17.06.15
17:17
(3) я так понимаю, что тут тоже ошибка?

                Если ТекСтолбец = 0 Тогда
                    ТабДокумент.Вывести(ОбластьЦенника);
                Иначе
                    ТабДокумент.Присоединить(ОбластьЦенника);
                КонецЕсли;

                ТекСтолбец = ТекСтолбец + 1;

                Если ТекСтолбец = 5 Тогда
                    ТекСтрока  = ТекСтрока + 1;
                    ТекСтолбец = 0;
                КонецЕсли;
5 Зеленый пень
 
17.06.15
17:23
(0) Сдается мне, тут не весь код. Ищи ошибку в другом месте.
6 Господин ПЖ
 
17.06.15
17:27
(4) не... наврал я

походу у тебя это из-за областей сложенных в массив

точнее из-за их описания
7 Господин ПЖ
 
17.06.15
17:29
если области такие:

    м = ПолучитьМакет("Макет");
    обл = м.ПолучитьОбласть("Строка");//!!
    
    МассивОбластей = Новый Массив;
    Для лч = 1 По 10 Цикл
    
        МассивОбластей.Добавить(обл);
    
    КонецЦикла;
    
    РезДок = Новый ТабличныйДокумент;
    Ширина = 1;
    Для каждого мОбласть Из МассивОбластей Цикл
        Если Ширина = 1 Тогда
            РезДок.Вывести(мОбласть);
        Иначе
            РезДок.Присоединить(мОбласть);
        КонецЕсли;
        
        Ширина = Ширина + 1;
        Если Ширина = 6 Тогда
            Ширина = 1;
        КонецЕсли;
    КонецЦикла;
    
    РезДок.Показать();

то они выведутся все в столбик:
1
2
3
4
5
6
7
8
9
10

а если так:

    м = ПолучитьМакет("Макет");
    обл = м.ПолучитьОбласть("Строка|Колонка"); //!!
    
    МассивОбластей = Новый Массив;
    Для лч = 1 По 10 Цикл
    
        МассивОбластей.Добавить(обл);
    
    КонецЦикла;
    
    РезДок = Новый ТабличныйДокумент;
    Ширина = 1;
    Для каждого мОбласть Из МассивОбластей Цикл
        Если Ширина = 1 Тогда
            РезДок.Вывести(мОбласть);
        Иначе
            РезДок.Присоединить(мОбласть);
        КонецЕсли;
        
        Ширина = Ширина + 1;
        Если Ширина = 6 Тогда
            Ширина = 1;
        КонецЕсли;
    КонецЦикла;
    
    РезДок.Показать();

то по 5 в строку:

1 2 3 4 5
6 7 8 9 10
8 drcrasher
 
17.06.15
17:35
(7) и в первом и во втором случае выводилось одинаково, как в (0).

в МассивОбластей лежат ТабличныйДокумент'ы.

Сделал примерно так:
Если КолвоКолонок = 1 Тогда
            РезДок.Вывести(мОбласть.ПолучитьОбласть(1,1,мОбласть.ВысотаТаблицы, мОбласть.ШиринаТаблицы));
        Иначе
            РезДок.Присоединить(мОбласть.ПолучитьОбласть(1,1,мОбласть.ВысотаТаблицы, мОбласть.ШиринаТаблицы));
        КонецЕсли;

и наступило щщасте.

Всем спасибо.