Как отобрать отмеченные флажками строки в табличном поле (Обычные формы)

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Организация данных и связь с табличным полем

Для начала важно прояснить архитектуру. В обычных формах 1С на форме располагается Табличное поле, которое является лишь визуальным элементом. Данными для него служит ТаблицаЗначений (как реквизит формы или часть табличной части документа/справочника). Чтобы флажки работали корректно:

  1. Убедитесь, что в вашей ТаблицеЗначений есть колонка типа Булево (например, с именем Выбрана).
  2. В свойствах элемента управления ТабличноеПоле для колонки с флажком в поле Данные укажите именно это имя колонки — Выбрана.

Если вы оставляете свойство Данные пустым, а используете только ДанныеФлажка, связь между визуальным состоянием и хранилищем данных может отсутствовать, что сильно усложнит последующий программный доступ к информации.

Эффективный отбор выбранных строк

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

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

Разберем реализацию на примере кода:


// Создаем структуру поиска для метода НайтиСтроки
СтруктураПоиска = Новый Структура("Выбрана", Истина);

// Получаем массив строк, соответствующих условию
МассивВыбранныхСтрок = ИмяВашейТаблицыЗначений.НайтиСтроки(СтруктураПоиска);

// Теперь можно работать с отобранными строками
Для Каждого СтрокаТЗ Из МассивВыбранныхСтрок Цикл
    // Выполняем необходимые действия с выбранной строкой
    Сообщить("Обработка строки: " + СтрокаТЗ.Наименование);
КонецЦикла;

Почему не стоит использовать обработчик «ПриИзменении» для хранения массива

Часто возникает соблазн создать отдельный массив или список значений и наполнять его в обработчике события ПриИзменении флажка. Мы рекомендуем избегать такого подхода, если задача не требует какой-то специфической мгновенной реакции системы:

Важные рекомендации при разработке

При работе с табличными полями в обычных формах учитывайте следующие моменты:

Использование метода НайтиСтроки() с передачей структуры — это стандарт индустрии при разработке на платформе 1С. Это делает код читаемым, легко поддерживаемым и избавляет от необходимости писать громоздкие циклы с проверками условий внутри них.

← На главную