Как программно определить количество видимых строк в табличном поле на обычных формах?

Программист 1С v8.3 (Обычные формы) Промышленность, строительство и АПК
← На главную

При разработке автоматизированных рабочих мест (АРМ) для производственных цехов, где интерфейс управления ограничен только сканером штрихкодов, часто возникает потребность в специфической навигации. В частности, разработчикам требуется знать, сколько строк табличного поля помещается в текущую область видимости экрана, чтобы корректно выполнять программную прокрутку при сканировании. Рассмотрим, как решить эту задачу в среде 1С на обычных формах.

Использование события ПриВыводеСтроки для подсчета строк

Самым надежным способом определения количества строк, отображаемых пользователю, является использование стандартного события табличного поля ПриВыводеСтроки. Это событие генерируется платформой непосредственно в момент отрисовки каждой отдельной строки на экране. Таким образом, если строка попала в видимую область, событие будет вызвано.

Чтобы вычислить количество видимых строк, выполним следующие действия:

  1. Создадим переменную модуля формы, например КоличествоВидимыхСтрок, и установим ей начальное значение 0.
  2. При начале обновления таблицы (например, перед выполнением процедуры прокрутки) сбросим счетчик в 0.
  3. В обработчике события ПриВыводеСтроки будем инкрементировать значение этого счетчика.

Рассмотрим пример реализации:


// В модуле формы
Перем СчетчикСтрок Экспорт;

Процедура ТабличноеПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    СчетчикСтрок = СчетчикСтрок + 1;
КонецПроцедуры

Процедура ПриНачалеРаботыСоСканером()
    СчетчикСтрок = 0;
    // ... логика обновления таблицы ...
    Сообщить("На экране отображается строк: " + СчетчикСтрок);
КонецПроцедуры

Важно понимать, что этот метод фиксирует все строки, которые система пытается отрисовать. Если в таблице отображается строка даже частично, она все равно попадет в этот счетчик, что обычно является желаемым поведением для задач навигации.

Почему не стоит полагаться на фиксированную высоту строки?

В условиях производственного учета данные в ячейках часто имеют разную длину, из-за чего высота строк в табличном поле может динамически меняться. Попытки вычислить количество видимых строк делением высоты окна на фиксированное число (высоту строки) приведут к ошибкам отображения. Использование же события ПриВыводеСтроки позволяет получать актуальные данные в реальном времени, независимо от настроек шрифта, разрешения экрана или объема текста в ячейках.

Альтернативные стратегии навигации в АРМ

Помимо прямого подсчета строк, для реализации удобного интерфейса без использования мыши и клавиатуры, рекомендуем рассмотреть следующие подходы:

Подводя итог, можно сказать, что событие ПриВыводеСтроки является наиболее точным инструментом для решения поставленной задачи в рамках обычных форм. В сочетании с грамотной логикой позиционирования курсора, это обеспечит комфортную работу оператора даже в условиях жестких ограничений по периферийным устройствам.

← На главную