Как перебрать ячейки выделенной области табличного документа

1. VitusBering 6 30.01.17 10:03 Сейчас в теме
Добрый день!
Есть поле табличного документа. В нем имеются различные объединенные ячейки, у каждой из которых есть свой документ в расшифровке.
Подскажите, как можно подсчитать количество ячеек в выделенной области этого поля табличного документа с учетом объединения ячеек (или документов в расшифровках)?
Найденные решения
6. VitusBering 6 31.01.17 12:36 Сейчас в теме
В поле табличного документа отображается календарь занятости ресурсов (в строках время, в столбцах ресурсы). Некоторые ячейки при этом объединены, что меня изначально смутило.
Хотелось в выборке выделенных областей получить выборку объединенных ячеек, а не просто перебирать каждую ячейку в выделенной области и анализировать ее содержимое.
В ходе экспериментов выяснилось, что свойства объединенной ячейки хранятся в первой ячейке из объединенных. Поскольку задачей был именно подсчет общего количества заполненных определенной информацией ячеек, простой перебор меня устроил.

Вот кусок кода, который вставил в процедуру ТабличныйДокументПриАктивизацииОбласти()

КоличествоЯчеек = 0;
	
	Для Каждого Обл Из ТабличныйДок.ВыделенныеОбласти Цикл
		
		Для СчВерт = Обл.Верх По Обл.Низ Цикл
			Для СчГориз = Обл.Лево По Обл.Право Цикл
				
				Ячейка = ТабличныйДок.Область(СчВерт,СчГориз,СчВерт,СчГориз);
				
				Если ЗначениеЗаполнено(Ячейка.Текст) Тогда
					КоличествоЯчеек = КоличествоЯчеек+1;
				КонецЕсли;	
				
			КонецЦикла;
		КонецЦикла;
		
	КонецЦикла;
	
	Элементы.НадписьКоличество.Заголовок = КоличествоЯчеек;
Показать


Почему упомянул о расшифровке - это просто как вариант решения. Думал может через ее методы можно получить выборку сразу расшифровок например.
leles; Pashach; redtram; daho; YPermitin; a_a_burlakov; B2B; necropunk; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. necropunk 11 30.01.17 12:07 Сейчас в теме
Подпишусь, пожалуй. Есть одна задачка в "на когда-нибудь", где неплохо бы "пользовательские выделения" разобрать :)
3. E_Johnny 31.01.17 04:00 Сейчас в теме
Используй связку "ОбъектФормы.Таблица.ВыделенныеСтроки"
4. E_Johnny 31.01.17 04:06 Сейчас в теме
А точнее так:
&НаКлиенте
Процедура уууууууууууууууууууууууукакаяпроцедура()

ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
	
	Если ВыделенныеСтроки.Количество() = 1 Тогда
		
		ДанныеСтроки = Элементы.Список.ДанныеСтроки(ВыделенныеСтроки[0]);
		
		ррр=Строка(ДанныеСтроки.Контрагент);
Показать


5. necropunk 11 31.01.17 10:54 Сейчас в теме
(4) Это при работе с табличным полем, да. Но тут вопрос, я так понимаю именно в работе с табличным документом.

(1) Вообще, когда я копал эту тему, у табличного документа есть свойство "ВыделенныеОбластиТабличногоДокумента", там находятся области, которые пользователь навыделял. Каждую область можно, в принципе, обходить обычным образом, как табличный документ.
У меня там с другим проблема возникла, с расшифровкой, когда пользователь убирает группировку и она становится не видна в расшифровке, как однозначно получить необходимый реквизит, например, если пользователь выделил детальную запись с количеством на остатке, а получить надо группировку Склад. В общем, долгая история :)
6. VitusBering 6 31.01.17 12:36 Сейчас в теме
В поле табличного документа отображается календарь занятости ресурсов (в строках время, в столбцах ресурсы). Некоторые ячейки при этом объединены, что меня изначально смутило.
Хотелось в выборке выделенных областей получить выборку объединенных ячеек, а не просто перебирать каждую ячейку в выделенной области и анализировать ее содержимое.
В ходе экспериментов выяснилось, что свойства объединенной ячейки хранятся в первой ячейке из объединенных. Поскольку задачей был именно подсчет общего количества заполненных определенной информацией ячеек, простой перебор меня устроил.

Вот кусок кода, который вставил в процедуру ТабличныйДокументПриАктивизацииОбласти()

КоличествоЯчеек = 0;
	
	Для Каждого Обл Из ТабличныйДок.ВыделенныеОбласти Цикл
		
		Для СчВерт = Обл.Верх По Обл.Низ Цикл
			Для СчГориз = Обл.Лево По Обл.Право Цикл
				
				Ячейка = ТабличныйДок.Область(СчВерт,СчГориз,СчВерт,СчГориз);
				
				Если ЗначениеЗаполнено(Ячейка.Текст) Тогда
					КоличествоЯчеек = КоличествоЯчеек+1;
				КонецЕсли;	
				
			КонецЦикла;
		КонецЦикла;
		
	КонецЦикла;
	
	Элементы.НадписьКоличество.Заголовок = КоличествоЯчеек;
Показать


Почему упомянул о расшифровке - это просто как вариант решения. Думал может через ее методы можно получить выборку сразу расшифровок например.
leles; Pashach; redtram; daho; YPermitin; a_a_burlakov; B2B; necropunk; +8 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот