Имя: Пароль:
1C
1С v8
Цикл по ячейкам таблицы табличного дока
0 PsyTech
 
25.01.13
14:46
Всем привет!

Как правильно сделать обход ячеек таблицы табличного дока?
Известно количество строк и колонок таблицы и, если все ячейки имели бы такие имена: "R21C2", то нет проблем. Но когда попадаются объединенные ячейки: "R21C7:R21C9" - как тут быть?
1 Рэйв
 
25.01.13
14:47
Зачем?
2 pessok
 
25.01.13
14:49
(0) пятничное телепатирование. УО надо сделать?
3 PsyTech
 
25.01.13
15:02
(1) В табличном доке пользователем заполняется таблица, которую потом нужно в ТЧ сохранить.
4 pessok
 
25.01.13
15:32
(3) тогда надо идти не по колонкам а по расшифровкам ТД
5 PsyTech
 
25.01.13
15:45
(4)
ОбластьСтрока = ТабличныйДокумент.Область("R"+(Стр+1));
Расш = ОбластьСтрока.Расшифровка;

Как сделать, чтоб Расшифровка была доступна для чтения?
6 pessok
 
25.01.13
15:47
(5) в смысле? расшифровка - это структура. вот из нее и бели все, что надо
7 х86
 
25.01.13
15:49
(0)разъобъедини ячейки
8 PsyTech
 
25.01.13
15:53
(6) Она = неопределено всегда. Справка молчит об этом.
9 PsyTech
 
25.01.13
15:54
(7) Как тогда понять - ск их там было объединено?
10 НЕА123
 
25.01.13
16:37
(9)
имена объединенных ячеек одинаков
т.е., в случае из (0)) у ячеек "R21C7", "R21C8" и т.д. одно имя
"R21C7:R21C9"
11 НЕА123
 
25.01.13
16:39
в (10) не совсем корректно написано, но, надеюсь, что понятно.
12 PsyTech
 
25.01.13
16:49
(11) Не совсем понятно)
Если я в цикле по колонкам получаю область с именем "R21C7" - откуда узнать, что она входит в состав области "R21C7:R21C9"?
13 Ёпрст
 
гуру
25.01.13
16:51
(0) обходи по номеру колонки/строки или по поименованным ячейкам
14 Ёпрст
 
гуру
25.01.13
16:51
и никогда не пользуй запись типа "RnCm"
15 НЕА123
 
25.01.13
16:53
(12)
ОбластьСИменемR21C7.ИМЯ = "R21C7:R21C9"
ЗЫ
так и думал, что (10) не поймут...
16 PsyTech
 
25.01.13
16:53
(13) Это как, если не так: "R21C7" ?
17 Megas
 
25.01.13
16:55
(3) Вообще не так надо.
Там то ли событие то ли ещё чего типа "изменения" вот в этот момент и вписывай в свою таблицу.
18 pessok
 
25.01.13
16:56
(0) а может все таки стоит результат запроса обрабатывать, не?))
19 Megas
 
25.01.13
16:57
Я типа того задачу делал

// При изменеии поля в Табличном документе
Процедура ТабДокПриИзмененииСодержимогоОбласти(Элемент, Область)
   Перем ИмяЯчейки;
   МногострочнаяСтрока = СтрЗаменить(СтрЗаменить(Область.Имя,"C",Символы.ПС),"R",Символы.ПС);
   
   НомерСтроки  = СтрПолучитьСтроку(МногострочнаяСтрока,2);
   НомерКолонки = СтрПолучитьСтроку(МногострочнаяСтрока,3);
   
   ЗаписатьИзменениеВТз(НомерКолонки,Область.Расшифровка,Область.Значение);
   
   РассчитатьРасчитываемыеКолонки(НомерСтроки,НомерКолонки,Область.Значение);
КонецПроцедуры
20 pessok
 
25.01.13
16:57
(19) это не то, это ты предлагаешь при тыке в документ писать, а ему надо весь отчет, насколько все поняли
21 PsyTech
 
28.01.13
08:14
(20) Да, всю таблицу нужно получить после заполнения.
22 mzelensky
 
28.01.13
09:13
(0) не совсем понял в чем проблема, если у тебя известны:

"Известно количество строк и колонок таблицы"

???

Просто обходишь циклом ячейки. Если в имени ячейки встречается ":", то ячейка состовная. Тебе в (15) об этом говорили.

Т.е. если имя "R21C7" - ячейка без объединения
Если "R21C7:R21C9" - есть ":", значит объединенная. Можно еще Обрабатывать сами "R" и "C" (их количество).
23 Ёпрст
 
гуру
28.01.13
09:24
(0)
   
аутор, делай так и привет:

ТвояОбласть    = ТабДок.ПолучитьОбласть();
Для к = 1 По ТвояОбласть.ВысотаТаблицы   Цикл
  Сообщить(ТвояОбласть.Область(к,1,к,1).Текст;)
КонецЦикла;

Ну и заместо 1 - номер нужной колонки вестимо.
усё.
24 PsyTech
 
28.01.13
10:10
Короче такой выход нашел:
Именуем области колонок и строк и обращаемся в цикле вот так:
ОбластьЯчейка = ТабличныйДокумент.Область("Строка"+СчСтр+"|Колонка"+СчКол);
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.