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

Программист IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование универсального метода ПоказатьЗначение

Начиная с современных версий платформы 8.3, разработчикам доступен крайне удобный и быстрый метод ПоказатьЗначение(). Это наиболее близкий аналог метода ВыбратьСтроку(), который корректно работает в тонком клиенте. Рассмотрим подробнее, как им воспользоваться. Если у вас есть объект ТаблицаЗначений на стороне клиента, достаточно вызвать одну строку кода.

Проанализируем пример использования:


// На стороне клиента
Описание = "Просмотр содержимого моей таблицы";
ПоказатьЗначение(, ВашаТаблицаЗначений, Описание);

Преимущества этого метода:

  1. Минимум кода — всего одна строка.
  2. Платформа автоматически генерирует временную форму с колонками и данными.
  3. Работает в тонком клиенте (если данные уже переданы с сервера).

Важно помнить, что ТаблицаЗначений — это серверный объект. Чтобы показать её на клиенте этим методом, она должна быть предварительно получена с сервера. Если вы находитесь в серверной процедуре, данные нужно сначала вернуть на клиент.

Метод 2. Вывод через ПостроительОтчета в Табличный документ

Этот способ был предложен участниками форума и остается одним из самых надежных «инженерных» решений. Он позволяет сформировать полноценный отчет на основе любой таблицы значений всего за несколько шагов. Разберем по шагам, как это реализовать в серверном коде с последующим выводом на экран.

Рассмотрим пример кода, который можно вставить в любое место серверного модуля:


// 1. Инициализируем построитель отчета
Построитель = Новый ПостроительОтчета;

// 2. Назначаем таблицу значений источником данных
// Объект ОписаниеИсточникаДанных позволяет построителю понять структуру ТЗ
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(МояТаблицаЗначений);

// 3. Выводим результат в табличный документ
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);

// 4. Показываем результат пользователю
ТабДок.Показать("Результат анализа ТЗ");

Этот метод хорош тем, что ПостроительОтчета автоматически создает заголовки колонок и корректно форматирует типы данных. Выясним причину его популярности: он работает даже тогда, когда у ТЗ очень много колонок и ручное создание элементов формы заняло бы слишком много времени.

Метод 3. Сериализация в JSON (для отладки без интерфейса)

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

Пример программного кода для преобразования ТЗ в строку:


ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, МояТаблицаЗначений);
РезультатСтрокой = ЗаписьJSON.Закрыть();

// Теперь строку можно вывести в окно сообщений
Сообщить(РезультатСтрокой);

Зачем это нужно? Полученную строку можно скопировать в любой текстовый редактор или онлайн-вьювер JSON, чтобы увидеть структуру данных. Это отличный способ «заглянуть» внутрь объекта ТаблицаЗначений, не создавая никаких визуальных форм в самой 1С.

Метод 4. Программное добавление таблицы на форму (Эфемерные таблицы)

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

Разберем алгоритм совместной работы с формой:

  1. Создаем массив добавляемых реквизитов (тип РеквизитФормы).
  2. Добавляем саму таблицу и её колонки в этот массив.
  3. Вызываем ИзменитьРеквизиты().
  4. Создаем элементы формы типа ТаблицаФормы и ПолеФормы.
  5. Загружаем данные из нашей ТаблицаЗначений в новый реквизит формы методом ЗначениеВРеквизитФормы().

Пример упрощенной реализации (фрагмент):


// Добавление реквизита "ВременнаяТЗ" на форму
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("ВременнаяТЗ", Новый ОписаниеТипов("ТаблицаЗначений")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);

// Заполнение данными
ЗначениеВРеквизитФормы(МояТЗ, "ВременнаяТЗ");

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

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

Метод 5. Использование «Толстого клиента» и метода ВыбратьСтроку()

Как было упомянуто в сообщении №1 темы, старый добрый метод ВыбратьСтроку() все еще доступен, но с существенным ограничением: он работает только в Толстом клиенте. Если ваша конфигурация позволяет запуск в режиме толстого клиента (управляемое приложение), вы можете использовать его для быстрой отладки.

Важно: В тонком клиенте этот метод вызовет ошибку выполнения. Поэтому его стоит использовать только как временное решение «для себя» в процессе разработки, предварительно убедившись в типе клиента с помощью инструкций препроцессора:


#Если ТолстыйКлиентУправляемоеПриложение Тогда
    МояТЗ.ВыбратьСтроку("Просмотр данных");
#КонецЕсли

Подведение итогов

Мы проанализировали ситуацию, когда необходимо быстро визуализировать данные ТаблицаЗначений на управляемых формах. Для большинства повседневных задач программиста идеально подходит метод ПоказатьЗначение() или связка ПостроительОтчета + ТабличныйДокумент. Если же требуется глубокий анализ структуры данных в текстовом виде, лучше всего прибегнуть к сериализации в JSON.

Выбирайте метод в зависимости от ваших условий:

Использование этих инструментов значительно упрощает жизнь разработчика 1С, особенно в условиях отсутствия полноценной отладки на рабочем сервере.

← На главную