Имя: Пароль:
1C
 
Странности с присоединением табличного документа
0 Гений 1С
 
гуру
11.11.22
09:53
Есть блоки ячеек размером 12 (ширина) * 9 (высота) - в табличных документах.
Добавляю текст в ячейку (13,1) получается ширина блока уже 13.

Далее вывожу в результат-табличный документ первый блок. Ширина 13.
Присоединяю второй блок. Ширина внезапно 25, а не 26. Т.е. при присоединении используется начальная ширина блока. Это как?

Приходится еще раз переполучать блок из самого себя, но уже с шириной 13.
1 mikecool
 
11.11.22
09:56
второй блок на что ссылается?
2 Гений 1С
 
гуру
11.11.22
09:57
(1) аналогичный 9*13, все эти блоки нарезаются из одного большого документа (MXL с марками)
3 Гений 1С
 
гуру
11.11.22
09:57
блоки не пересекаются
4 Гений 1С
 
гуру
11.11.22
09:57
можно в принципе, тест замутить.
5 RomanYS
 
11.11.22
09:58
(0) код покажи
6 Гений 1С
 
гуру
11.11.22
10:12
(5) Не вопрос, нате:


    ТРезультат = Новый ТабличныйДокумент();
    
    Для Каждого Строка ИЗ ТЗ Цикл
        
        ТекТабличныйДокумент = Т.ПолучитьОбласть(Строка.НачальнаяСтрока, 1, Строка.КонечнаяСтрока, 12);
        
        РезШирина = ТекТабличныйДокумент.ШиринаТаблицы + 1;
        РезВысота = ТекТабличныйДокумент.ВысотаТаблицы + 1;
        
        ОбластьПраво = ТекТабличныйДокумент.Область(1, РезШирина, РезВысота, РезШирина);
        ОбластьНиз = ТекТабличныйДокумент.Область(РезВысота, 1, РезВысота, РезШирина);
        
        ОбластьПраво.Текст = " ";
        ОбластьПраво.ШиринаКолонки = 2;
        ОбластьНиз.Текст = " ";
        ОбластьНиз.ВысотаСтроки = 5;
        
        Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.ЧастыйПунктир, 1);
        
        ОбластьПраво.ГраницаСправа = Линия;
        ОбластьНиз.ГраницаСнизу = Линия;

        
        
        СНовой = Истина;
        
        Если ЗначениеЗаполнено(Строка.НомерМарки) И (Строка.НомерМарки - 1) % 3 = 0 Тогда
            СНовой = Истина;
        КонецЕсли;
        Если НЕ Строка.ЭтоМарка Тогда
            СНовой = Истина;
        КонецЕсли;
        
        Если СНовой Тогда
            ТРезультат.Вывести(ТекТабличныйДокумент);
        Иначе
            ТРезультат.Присоединить(ТекТабличныйДокумент);
        КонецЕсли;
        
    КонецЦикла;



Это код, где добавляемая мною вертикальная колонка убивается.

Я потом просто поменял (благо справа место пустое есть в макете исходном ):

        ТекТабличныйДокумент = Т.ПолучитьОбласть(Строка.НачальнаяСтрока, 1, Строка.КонечнаяСтрока, 13);

7 НафНаф
 
11.11.22
12:28
Научись уже отличать область макета от области табачного документа
8 НафНаф
 
11.11.22
12:28
(7) табличного
9 RomanYS
 
11.11.22
12:37
(7) макета как такового у него здесь нет.
ТекТабличныйДокумент - это ТД и по логике он должен расширяться при изменении внешних областей, вопрос (0) вполне обоснован, если конечно этот код дает описанный результат
10 Гений 1С
 
гуру
11.11.22
13:45
(9) вот видишь Наф-Наф, тебе дело говорят. Тест что лле напейсать.
11 RomanYS
 
11.11.22
14:06
(10) а что там писать..
Сообщить("ширина результата " + ТРезультат.ШиринаТаблицы+", ширина выводимого ТД "+ТекТабличныйДокумент.ШиринаТаблицы);
            ТРезультат.Присоединить(ТекТабличныйДокумент);
Сообщить("ширина результата " + ТРезультат.ШиринаТаблицы);
Основная теорема систематики: Новые системы плодят новые проблемы.