![]() |
|
Ячейки табличного документа | ☑ | ||
---|---|---|---|---|
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"+Право; Возврат АдресОбласти; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |