Как узнать количество строк в столбце с "ЗначениеЗаполнено" без цикла ОФ

1. ShuSU 63 06.06.19 08:51 Сейчас в теме +0.05 $m
Есть ТабличнаяЧасть.Количество() которая определяет количество строк в таблице. А как без цикла узнать количества заполненных строк в таблице?
Если работать с циклом, то каждое действие вызывает цикл, а это сильно грузит процесс.

Процедура ИндикацияСопоставление(Товары)
	ИндикаторСоп = ЭлементыФормы.Индикатор1;
	ИндикаторСоп.Значение = 0;
	ИндикаторСоп.МаксимальноеЗначение=Товары.Количество();
	КоличествоЗаполненыхСтрок=0;
	
		Для Каждого СтрокаТ из Товары Цикл
			Если ЗначениеЗаполнено(СтрокаТ.Номенклатура) Тогда

	    	КоличествоЗаполненыхСтрок = Число(КоличествоЗаполненыхСтрок)+1;
			
			КонецЕсли;
		КонецЦикла;
	ИндикаторСоп.Значение = КоличествоЗаполненыхСтрок;
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. Dream_kz 129 06.06.19 08:54 Сейчас в теме +0.02 $m
(1)
Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
КоличествоПустыхСтрок = Товары.НайтиСтроки(Отбор).Количество();
ShuSU; Pavel Rodinchenko; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 06.06.19 08:54 Сейчас в теме +0.02 $m
(1)
Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
КоличествоПустыхСтрок = Товары.НайтиСтроки(Отбор).Количество();
ShuSU; Pavel Rodinchenko; +2 Ответить
4. ShuSU 63 06.06.19 09:23 Сейчас в теме
(2)
Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
КоличествоПустыхСтрок = Товары.НайтиСтроки(Отбор).Количество();

Как то так.

Процедура ИндикацияСопоставление(Товары)
	ИндикаторСоп = ЭлементыФормы.Индикатор1;
	ИндикаторСоп.Значение = 0;
	ИндикаторСоп.МаксимальноеЗначение=Товары.Количество();	
	Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
	КоличествоПустыхСтрок = Товары.НайтиСтроки(Отбор).Количество();
	КоличествоЗаполненыхСтрок=Товары.Количество()-КоличествоПустыхСтрок;
	ИндикаторСоп.Значение = КоличествоЗаполненыхСтрок;

КонецПроцедуры
Показать

Только через ПустуюСсылку можно отобрать как я понял?.

Вызов процедуры делаю через ТоварыПриВыводеСтроки. Через что еще можно вызывать что бы срабатывало при заполнение?
3. valerasv 136 06.06.19 09:14 Сейчас в теме +0.01 $m
(1)Передать таблицу параметром в запрос и запросом.

ВЫБРАТЬ
ТаблицаДанных.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_ТаблицаДанных
ИЗ
&ТаблицаДанных КАК ТаблицаДанных
;

////////////////////////////////////////////////////////////­//////////////////
ВЫБРАТЬ
КОЛИЧЕСТВО(ВТ_ТаблицаДанных.Номенклатура) КАК Номенклатура
ИЗ
ВТ_ТаблицаДанных КАК ВТ_ТаблицаДанных
ГДЕ
НЕ(ВТ_ТаблицаДанных.Номенклатура ЕСТЬ NULL
ИЛИ ВТ_ТаблицаДанных.Номенклатура = НЕОПРЕДЕЛЕНО
ИЛИ ВТ_ТаблицаДанных.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка))
5. SlavaKron 06.06.19 09:26 Сейчас в теме
Вы заблуждаетесь, если думаете, что подобный цикл сильно грузит процесс. Включите замер производительности и посмотрите на какой строке тратится больше всего времени.
6. ShuSU 63 06.06.19 09:31 Сейчас в теме
(5)Сам цикл не спорю.
но у меня эта процедура в ТоварыПриВыводеСтроки запускается. и получается даже когда таблицу прокручиваешь, начинается повторять процедуру.
Прикрепленные файлы:
7. SlavaKron 06.06.19 09:33 Сейчас в теме +0.01 $m
(6) Нельзя работать с элементами формы в событии при ВыводеСтроки, это вызывает зацикливание.
9. ShuSU 63 06.06.19 09:43 Сейчас в теме
(7)Это я заменил. Из-за чего и задался вопросом как по другому с меньшими жертвами.
8. VictorRGB2 14 06.06.19 09:34 Сейчас в теме +0.01 $m
а зачем вам в ПриВыводеСтрок то? вызовите один раз после завершения чтения\заполнения тч и в ПриИзменении в случае если изменили ПустаяСсылка на значение и будет все быстро и без зацикливания
10. ShuSU 63 06.06.19 09:46 Сейчас в теме
(8) Так наверное и сделаю. лень блин. или в одно место поставить, или по всем процедурам кидать))).
11. ShuSU 63 06.06.19 09:55 Сейчас в теме
Всем Спасибо. Вопрос закрыт.
Оставьте свое сообщение

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