Имя: Пароль:
1C
1С v8
Ячейки табличного документа
0 pochemu
 
06.07.15
13:40
Как узнать ячейки, которые входят именованную область табличного документа?

Цель у меня такая: Делаю групповую печать документов (внеш. обработка) с возможностью привязки любого количества рисунков к любой печатной форме. Распечатал в обработке типовую ТОРГ-12 к примеру и решил дополнить её печатью и подписью. Для этого в обработке в этой распечатке он добавил рисунок, ну а я хочу привязать его координаты к области, которая под ним находится. Чтобы затем уже автоматом печаталось на том месте...
Сложность в определении этой области. Для этого нужно знать размеры областей в миллиметрах. Пытаюсь узнаю это так:

Рисунок.Расположить(ОбъектВ.ТабДок.Область("R1C1:R1C2"));
ВысотаОбласти = Рисунок.Высота;

Но, чтобы заработал этот механизм нужно правильно определять адрес области. Я пока этого не могу сделать...
А если просто вставить именованную область вместо "R1C1:R1C2", это размеры с какого-то пня оказываются пустыми.
1 DTXqueque
 
06.07.15
13:43
Так ты обзовин область в макете. Её и получай, лепи рисунок, добавляй к ТД.
2 pochemu
 
06.07.15
13:48
(1) Зачем мне макет?  С самим готовым табличным документом играюсь, результатом типовой печати.
Или скажи конрретнее, может чего-то не догоняю, как это можно в ТабДокументе обзвонить ячейки, чтобы узнать какие в область именованную входят? В свойствах ячейки вроде не прописано, к какой области она принадлежит...
3 Euguln
 
06.07.15
13:49
(2) Тупо по координатам, верх, лево и т.д.
4 DTXqueque
 
06.07.15
13:50
(2) В результирующем табдоке только одна область - он сам.
5 pochemu
 
06.07.15
13:52
(4) Там можно обратись к любой области, что вышла на печать по имени = ) ТабДок.Область(ИмяОбласти)
6 pochemu
 
06.07.15
13:54
(3) у областей координаты указаны не в миллиметрах, а у рисунка в миллиметрах. Убил бы разработчиков, стандарта на размеры даже нет..
7 pochemu
 
06.07.15
13:55
Вес день в труху из-за какой-то фигни. В других средах разработки это делается на "Раз-два".
8 DTXqueque
 
06.07.15
14:01
(5) Я думал, ты хочешь к области по имени обращаться типа "Шапка"/"СтрокаТаблицы".

(6) Имеет смысл просить пользователя выбрать область, в которую он хочет поместить рисунок. Тогда проблем не будет.
9 pochemu
 
06.07.15
14:09
(3) Хм. Кажется придумал таки (может это и имел ввиду).
У области известны Верх, Лево, Низ, Право, соответственно можно обойти все ячейки ТабДок и вычислить какие входят в область. А там уже и миллиметры узнаю.
10 hhhh
 
06.07.15
14:44
(9) там можно как в ворде, например пишешь в область текст: "здесь будет рисунок"

и потом типа ОбластьРисунка = Чтототам.НайтиТекст("здесь будет рисунок");
11 pochemu
 
06.07.15
14:59
(10) Мне нельзя изменять типовые документы) Определил адрес таким образом в итоге:

Функция ОпределитьЯчейкиОбласти(Область,ТабДок)
    
    АдресОбласти = Неопределено;
    
    НомСтр=1;
        
    //Пока НомСтр <= ТабДок.ВысотаТаблицы Цикл
    //    НомКол=1;
    //    Пока НомКол <= ТабДок.ШиринаТаблицы Цикл
    //        ИмяОбласти = "R"+НомСтр+"C"+НомКол;
    //        Ячейка = ТабДок.Область(ИмяОбласти);
    //        
    //        Если Ячейка.Лево = Область.Лево И Ячейка.Верх-1 = Область.Верх Тогда
    //            АдресОбласти = ИмяОбласти;
    //        КонецЕсли;        
    //        
    //        Если Ячейка.Низ = Область.Низ И Ячейка.Право = Область.Право Тогда
    //            АдресОбласти = ":" + ИмяОбласти;
    //        КонецЕсли;
    //        НомКол= НомКол+1;
    //    КонецЦикла;
    //    НомСтр=НомСтр+1;
    //КонецЦикла;
    Лево = Область.Лево;
    Право = Область.Право;
    Если Область.Лево = 0 Тогда
        Лево = 1;    
    КонецЕсли;
    Если Область.Право = 0 Тогда
        Право = ТабДок.ШиринаТаблицы;    
    КонецЕсли;
    АдресОбласти =  "R"+Область.Верх+"C"+Лево + ":" + "R"+Область.Низ+"C"+Право;
    
    Возврат АдресОбласти;
    
КонецФункции
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс