Как открыть документ из внешней обработки по клику на строку в таблице?

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

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

Основы работы с ссылочными данными

Главная ошибка новичков заключается в том, что в таблицу формы выводятся строковые представления данных (например, наименование типа документа «Авансовый отчет» как текст). Чтобы система понимала, что именно нужно открыть, нам необходимо оперировать ссылками на объекты. ДокументСсылка — это именно тот тип данных, который содержит в себе информацию о конкретном документе в базе данных.

Если в колонке вашей таблицы будет храниться значение типа ДокументСсылка, платформа 1С автоматически активирует механизм «двойного клика» или предоставит возможность использовать метод ОткрытьЗначение(). Это стандартное поведение, которое избавляет вас от необходимости писать сложный код для открытия форм.

Разбор процесса реализации

Для начала, давайте приведем структуру данных в соответствие с требованиями платформы:

  1. Настройка колонки: Убедитесь, что в конфигураторе у элемента формы (колонки таблицы) тип значения включает в себя типы ДокументСсылка. Если вы планируете выводить разные типы документов, используйте составной тип или ЛюбаяСсылка.
  2. Заполнение данных: При получении данных из запроса на сервере, заполняйте колонку не строковым именем документа, а ссылкой на него.

Рассмотрим пример кода, как правильно сформировать запрос и заполнить таблицу ссылками:


// В процедуре получения данных на сервере
Для каждого СтрокаЭлемент из РезультатЗапроса Цикл
    СтрокаТаблицы = ТаблицаРезультат.Добавить();
    // Записываем ссылку, а не просто строку с именем
    СтрокаТаблицы.СсылкаНаДокумент = СтрокаЭлемент.Ссылка; 
    СтрокаТаблицы.Представление = СтрокаЭлемент.Ссылка.Метаданные().Представление();
КонецЦикла;

Обработка массовых данных и навигация

Часто в ходе анализа вы получаете большое количество документов одного типа (например, 831 «Авансовый отчет»). В такой ситуации нельзя просто вывести их все в одну строку. Здесь рекомендуется использовать двухуровневый подход:

  1. На первом этапе выводите список типов документов и счетчик ошибок (как вы делали изначально).
  2. При двойном клике на строку с типом документа, вызывайте форму списка этого типа с предварительно установленным отбором.

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


&НаКлиенте
Процедура ТаблицаРезультатПриАктивизацииЯчейки(Элемент, ...)
    // Получаем текущую строку
    ТекущаяСтрока = Элементы.ТаблицаРезультат.ТекущиеДанные;
    
    // Открываем форму списка с параметром отбора
    ПараметрыОтбора = Новый Структура("Дата", ТекущаяДатаОшибки);
    ОткрытьФорму("Документ.АвансовыйОтчет.ФормаСписка", ПараметрыОтбора);
КонецПроцедуры

Почему использование ссылок — это «Золотой стандарт»?

Рассмотрим преимущества такого подхода:

Помните, что при работе с большим объемом данных (как в вашем случае с поиском дат), важно оптимизировать текст запроса. Вместо бесконечного использования ОБЪЕДИНИТЬ ВСЕ, старайтесь обращаться только к тем видам документов, которые имеют отношение к вашей задаче. Это значительно ускорит работу обработки в реальных условиях эксплуатации.

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

← На главную