Как программно настроить кнопки и гиперссылки в колонках табличного поля в 1С

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

При разработке в конфигурациях на обычных формах, таких как 1С:Управление производственным предприятием (УПП) или 1С:Управление торговлей 10.3, часто возникает задача динамического создания интерфейса. Одной из типичных проблем является программная настройка колонок табличного поля, когда стандартного метода СоздатьКолонки() недостаточно для реализации логики «красивого» и функционального интерфейса. Рассмотрим подробно, как управлять кнопками в ячейках, заставлять гиперссылки работать и корректно назначать обработчики событий.

Настройка отображения стандартных кнопок в ячейке

Когда мы создаем колонки кодом, система автоматически назначает им тип элемента управления — как правило, это ПолеВвода. Чтобы изменить состав кнопок (например, убрать «Лупу», «Три точки» или «Х»), нам необходимо обратиться к свойству ЭлементУправления конкретной колонки. Проанализируем пример, в котором нам нужно оставить только кнопку открытия («Лупу»), скрыв кнопки выбора и очистки.

Для этого выполним следующую последовательность действий в коде:


// Получаем ссылку на колонку после того, как колонки были созданы
Колонка = ЭлементыФормы.ТабличноеПоле.Колонки.Документ;

// Включаем отображение кнопки открытия (лупа)
Колонка.ЭлементУправления.КнопкаОткрытия = Истина;

// Отключаем стандартные кнопки выбора и очистки
Колонка.ЭлементУправления.КнопкаВыбора = Ложь;
Колонка.ЭлементУправления.КнопкаОчистки = Ложь;

Важный нюанс: данные свойства будут доступны только в том случае, если у колонки определен тип значения, поддерживающий данные действия (например, ссылка на справочник или документ). Если тип колонки Произвольный, 1С может не позволить обратиться к свойствам ЭлементУправления напрямую без предварительного приведения типов.

Особенности работы гиперссылок в обычных формах

Многие разработчики сталкиваются с ситуацией, когда установка свойства Колонка.Гиперссылка = Истина лишь визуально подчеркивает текст, но клик по нему ни к чему не приводит. Разберем, почему так происходит и как добиться желаемого поведения.

Во-первых, выясним причину: в обычных формах гиперссылка в табличном поле работает как полноценный переход только при условии, что ячейка находится в режиме «Только чтение». Если редактирование разрешено, то первый клик по ячейке система воспринимает как команду активировать режим правки (фокус ввода), а не как нажатие на ссылку.

Для реализации функциональной гиперссылки используем следующий подход:

  1. Установим для колонки свойство ТолькоЧтение = Истина.
  2. Убедимся, что в свойстве Данные колонки указано поле, содержащее ссылку на объект.
  3. Если требуется открывать форму объекта именно по клику на текст, необходимо обработать событие Нажатие элемента управления колонки.

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

Наиболее универсальным способом реализации перехода к объекту (будь то по нажатию кнопки открытия или по двойному клику на ячейку) является использование события Выбор самого табличного поля. Это избавляет от необходимости прописывать логику для каждой кнопки отдельно.

Рассмотрим, как программно назначить этот обработчик, если таблица создается динамически:


// Назначаем обработчик события "Выбор" для табличного поля
ЭлементыФормы.ТабличноеПоле.УстановитьДействие("Выбор", Новый Действие("ТабличноеПолеВыбор"));

// Сама процедура обработчика в модуле формы
Процедура ТабличноеПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    
    // Проверяем, что нажата именно нужная нам колонка
    Если Колонка.Имя = "Документ" Тогда
        // Отменяем стандартное поведение (например, вход в режим редактирования)
        СтандартнаяОбработка = Ложь;
        
        // Открываем форму значения, лежащего в данной ячейке
        ЗначениеЯчейки = ВыбраннаяСтрока[Колонка.Данные];
        Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
            ОткрытьФорму(ЗначениеЯчейки.ПолучитьФорму());
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Постоянное отображение кнопок (Режим редактирования)

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

Установим режим, при котором элементы управления отрисовываются постоянно:


Колонка = ЭлементыФормы.ТабличноеПоле.Колонки.Документ;
Колонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;

Это сделает интерфейс более отзывчивым, так как пользователь сразу будет видеть кнопку «Лупа» во всех строках таблицы.

Альтернатива: использование картинок вместо кнопок

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

Такой подход позволяет сделать таблицу более компактной и визуально понятной, особенно если в одной колонке могут содержаться ссылки на разные типы объектов.

Подведем итог: для корректной работы кнопок и ссылок в программно создаваемом табличном поле важно не только включить видимость свойств КнопкаОткрытия или Гиперссылка, но и правильно настроить РежимРедактирования, а также не забыть про программное назначение обработчиков событий через УстановитьДействие. Это обеспечит ожидаемое поведение интерфейса и удобство работы пользователя.

← На главную