При разработке внешних обработок, рабочих мест и отчетов на платформе «1С:Предприятие 8.3» часто возникает задача вывести в таблицу понятное пользователю текстовое описание вместо стандартного представления ссылки, но при этом сохранить возможность быстрого перехода в сам документ. Если для колонки задать ссылочный тип данных, платформа автоматически формирует системное представление, изменить которое напрямую внутри ячейки бывает неудобно.
Разберем детально, как реализовать открытие нужного документа при клике по строке с произвольным текстом, проанализируем различные подходы и выберем наиболее надежные варианты программного кода.
Рассмотрим классический способ, когда в таблице формы (табличной части обработки или динамическом списке) присутствуют две колонки:
РеализацияТоваровУслуг) — отображает нужный нам произвольный текст, сформированный программно или в запросе.Ссылка) — содержит прямую ссылку на документ. В свойствах элемента формы для этой колонки снимаем флаг Видимость, чтобы не загромождать интерфейс.Для перехвата двойного клика пользователя по строке таблицы назначим обработчик события таблицы Выбор на клиенте. В процедуре переопределим стандартное поведение и вызовем открытие формы связанного документа.
Посмотрим на пример реализации с использованием универсального асинхронного метода платформы ПоказатьЗначение:
&НаКлиенте
Процедура ТаблицаДокументовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
ПоказатьЗначение(, ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
Разберем важные нюансы этого кода:
СтандартнаяОбработка = Ложь; отключает стандартное платформенное действие (например, попытку открыть на редактирование строковую ячейку).ТекущиеДанные <> Неопределено обязательна, так как при клике по пустой области таблицы или заголовку свойство вернет Неопределено, что без проверки приведет к аварийному завершению работы формы.ПоказатьЗначение является универсальным: он автоматически определяет тип переданной ссылки и открывает основную форму соответствующего объекта метаданных.Если требуется открыть форму конкретного документа с передачей дополнительных параметров или открыть форму в специфическом режиме, применим метод ОткрытьФорму. Проанализируем правильный синтаксис:
&НаКлиенте
Процедура ТаблицаДокументовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Ссылка);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);
КонецЕсли;
КонецПроцедуры
Важный момент: для открытия уже существующего документа в информационной базе в структуру параметров обязательно нужно передавать параметр Ключ со значением ссылки на этот документ. Если вызвать ОткрытьФорму без ключа, платформа откроет пустую форму для создания нового объекта.
Чтобы пользователь мог перейти к документу не по двойному щелчку, а по одиночному клику, строковую колонку можно оформить как гиперссылку. Разберем по шагам, как это настроить:
НажатиеГиперссылки.Посмотрим на пример кода для данного события:
&НаКлиенте
Процедура РеализацияТоваровУслугНажатиеГиперссылки(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ТаблицаДокументов.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
ПоказатьЗначение(, ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
В результате текст в колонке отобразится в виде синей подчеркнутой ссылки, и клик по ней сразу откроет форму документа Реализация товаров и услуг.
Если в таблице используется только одна колонка с типом ДокументСсылка.РеализацияТоваровУслуг, можно обойтись без создания скрытых полей и программных обработчиков событий. Платформа позволяет переопределить выводимый текст ячейки через механизм условного оформления.
Рассмотрим, как настроить условное оформление динамического списка или формы:
При таком подходе колонка сохраняет все базовые свойства ссылки (стандартное контекстное меню, открытие по двойному клику, кнопку выбора), но отображает требуемый пользовательский текст.