Как программно добавлять и удалять строки и колонки в таблице на управляемой форме 1С?

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

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

Основные принципы изменения структуры формы

Когда мы говорим об «управляемой форме», мы должны понимать, что таблица на экране — это лишь визуальное отображение данных, которые хранятся в реквизитах формы. Поэтому простого изменения объекта ТаблицаЗначений через код на сервере будет недостаточно. Нам необходимо выполнить синхронные действия: изменить саму структуру реквизитов формы и обновить элементы управления (колонки) на самой форме.

Для изменения состава реквизитов формы используется метод ИзменитьРеквизиты(). Этот метод принимает два параметра: массив добавляемых реквизитов и массив имен удаляемых реквизитов. Это «тяжелая» операция, поэтому старайтесь группировать изменения, если планируете добавить или удалить сразу несколько колонок.

Реализация добавления и удаления колонок

Для того чтобы добавить колонку, нам нужно выполнить три шага:

  1. Создать новый реквизит типа РеквизитФормы и добавить его в массив.
  2. Применить изменения методом ИзменитьРеквизиты().
  3. Создать элемент управления ПолеФормы на самой форме, чтобы пользователь мог видеть данные из этой колонки.

Разберем пример кода для добавления колонки:


// Добавляем реквизит
МассивДобавляемыхРеквизитов = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("Число" + НомерКолонки, Новый ОписаниеТипов("Число"), "ТаблицаУмножения", "Заголовок");
МассивДобавляемыхРеквизитов.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

// Добавляем элемент на форму
НовыйЭлемент = Элементы.Добавить("ТаблицаУмноженияЧисло" + НомерКолонки, Тип("ПолеФормы"), Элементы.ТаблицаУмножения);
НовыйЭлемент.ПутьКДанным = "ТаблицаУмножения.Число" + НомерКолонки;
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

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

Работа с количеством строк

Изменять количество строк значительно проще, так как это не требует изменения структуры формы (метаданных). Достаточно манипулировать самим объектом ТаблицаЗначений, который привязан к таблице на форме.

Для добавления строки используем стандартный метод Добавить():


НоваяСтрока = ТаблицаУмножения.Добавить();
НоваяСтрока.Число1 = Значение1;
// Заполняем остальные колонки...

Для удаления последней строки используем метод Удалить(), передавая индекс последней строки:


Если ТаблицаУмножения.Количество() > 0 Тогда
    ТаблицаУмножения.Удалить(ТаблицаУмножения.Количество() - 1);
КонецЕсли;

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

Чтобы ваша таблица работала стабильно и не вызывала ошибок, придерживайтесь следующих правил:

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

← На главную