Есть ТабличнаяЧасть.Количество() которая определяет количество строк в таблице. А как без цикла узнать количества заполненных строк в таблице?
Если работать с циклом, то каждое действие вызывает цикл, а это сильно грузит процесс.

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

    Для Каждого СтрокаТ из Товары Цикл
    Если ЗначениеЗаполнено(СтрокаТ.Номенклатура) Тогда

    КоличествоЗаполненыхСтрок = Число(КоличествоЗаполненыхСтрок)+1;

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

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

    КонецПроцедуры
```

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

Вызов процедуры делаю через ТоварыПриВыводеСтроки. Через что еще можно вызывать что бы срабатывало при заполнение?
---
Передать таблицу параметром в запрос и запросом.

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

////////////////////////////////////////////////////////////­//////////////////
ВЫБРАТЬ
 КОЛИЧЕСТВО(ВТ_ТаблицаДанных.Номенклатура) КАК Номенклатура
ИЗ
 ВТ_ТаблицаДанных КАК ВТ_ТаблицаДанных
ГДЕ
 НЕ(ВТ_ТаблицаДанных.Номенклатура ЕСТЬ NULL
    ИЛИ ВТ_ТаблицаДанных.Номенклатура = НЕОПРЕДЕЛЕНО
    ИЛИ ВТ_ТаблицаДанных.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка))
---
Вы заблуждаетесь, если думаете, что подобный цикл сильно грузит процесс. Включите замер производительности и посмотрите на какой строке тратится больше всего времени.
---
Сам цикл не спорю.
но у меня эта процедура в ТоварыПриВыводеСтроки запускается. и получается даже когда таблицу прокручиваешь, начинается повторять процедуру.
---
Нельзя работать с элементами формы в событии при ВыводеСтроки, это вызывает зацикливание.
---
Это я заменил. Из-за чего и задался вопросом как по другому с меньшими жертвами.
---
а зачем вам в ПриВыводеСтрок то? вызовите один раз после завершения чтения\заполнения тч и в ПриИзменении в случае если изменили ПустаяСсылка на значение и будет все быстро и без зацикливания
---
Так наверное и сделаю. лень блин. или в одно место поставить, или по всем процедурам кидать))).
---
Всем Спасибо. Вопрос закрыт.