Визуализация таблицы значений на управляемой форме

02.11.22

Разработка - Работа с интерфейсом

Данная публикация описывает способ отражения на управляемой форме таблицы значений, с произвольным составом колонок, полученной на сервере. Как частный случай рассматривается отражение двумерного массива, с преобразованием его в таблицу значений.

Зачастую нужно быстро и просто визуализировать на управляемой форме таблицу значений с произвольным перечнем колонок либо, как частный случай,  двумерный массив.

Посмотрим, как это можно сделать:

Я покажу оба способа:

  • Визуализация двумерного массива
  • Визуализация ТЗ

Первый вариант включает в себя второй.

Допустим, мы имеем на клиенте двумерный массив. В данном случае, это  массив с данными, прочитанный по API с нашего известного маркетплейса.

&НаКлиенте
МассивСДанными = ПрочитатьJSON(ЧтениеJSON);
Если ТипЗнч(МассивСДанными) = Тип("Массив") Тогда	
		СоздатьИЗаполнитьСтруктуруКолонок(МассивСДанными); //ВЫзов основной серверной процедуры

Нам нужно его визуализировать на форму, (с последующей естественно обработкой), но в моменте нужно визуально просмотреть: а что там JSON собственно начитал.

  1. Создадим на форме реквизит «ТЗ_ЧтениеJSON». Без колонок реквизитов.  

Нюанс: Реквизит - таблицу можно создавать и динамически (далее я укажу этот вариант в коде). Но я считаю, что реквизит будущей таблицы удобнее разместить сразу в форме там, где нужно и как нужно.

 

 

  1. Если мы работаем с массивом,  то имеет смысл преобразовать его в ТЗ с помощью известной функции. Если мы уже имеем ТЗ, то  переходим сразу к пункту 3
    &НаСервере
    Функция ПреобразованиеМассивВТаблицуЗначений(Массив)
    	
    	ТЗ = Новый ТаблицаЗначений;
    	
    	Для Каждого СтрокаМассива Из Массив Цикл
    		
    		Если ТЗ.Колонки.Количество() = 0 Тогда
    			Для Каждого ЭлементМассива Из СтрокаМассива Цикл
    				ТЗ.Колонки.Добавить(ЭлементМассива.Ключ);
    			КонецЦикла;
    		КонецЕсли;
    		
    		НоваяСтрока = ТЗ.Добавить();
    		Для Каждого ЭлементМассива Из СтрокаМассива Цикл
    			НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение;
    		КонецЦикла;
    	КонецЦикла;
    	
    	Возврат ТЗ;
    	
    КонецФункции
    

     

  2.  Ну и собственно серверная процедура, создающая таблицу на форме и заполняющая ее данными из ТЗ. 
Процедура СоздатьИЗаполнитьСтруктуруКолонок (МассивСДанными)
	
	//Получаем ТЗ из массив (или откуда угодно)
	//Помним что ТЗ живет у нас только на сервере !!!
	ТЗ = ПреобразованиеМассивВТаблицуЗначений(МассивСДанными);
	
	МассивКолонок = Новый Массив;    
	
	//-------------Если элемент таблица создается динамически на форме--------
	//МассивКолонок.Добавить(Новый РеквизитФормы("ТЗ_ЧтениеJSON",Новый ОписаниеТипов("ТаблицаЗначений")));  
    //- она кстати тоже будет элементом  массива
	//-------------Если элемент таблица создается динамически на форме-------
	
	//Добавим колонки в существующий реквизит формы
	Для Каждого КолонкаТЗ ИЗ ТЗ.колонки Цикл
		ИмяКолонки = КолонкаТЗ.Имя; 
 
		ТипРеквизита = Новый ОписаниеТипов("Строка", , ,Новый КвалификаторыСтроки(150)); //Тут можно типизировать колонку реквизита явным образом , но в моем случае это строка и делать я этого не буду
		нРеквизитФормы = Новый РеквизитФормы(ИмяКолонки, ТипРеквизита, "ТЗ_ЧтениеJSON", ИмяКолонки); //Новый реквизит - элемент массива
		Если ЭтаФорма.Элементы.Найти(ИмяКолонки) = Неопределено  Тогда //ищем в составе элеменов формы, чтобы при повторном вызове процедуры не было ошибки задвоения реквизитов	
			МассивКолонок.Добавить(нРеквизитФормы);   
		КонецЕсли;
	КонецЦикла;
	
	// добавим собственно реквизиты на форму
	ИзменитьРеквизиты(МассивКолонок);
	
	//-------------Если элемент таблица создается динамически на форме-------
	//// добавим элементы формы
	//Таб = Элементы.Добавить("ТЗ_ЧтениеJSON", Тип("ТаблицаФормы"));
	//Таб.ПутьКДанным = "ТЗ_ЧтениеJSON";
	
	//// запретим менять положение строк и сами строки, отключим командную панель
	//Таб.ИзменятьСоставСтрок = Ложь;
	//Таб.ИзменятьПорядокСтрок = Ложь;
	//Таб.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
	//-------------Если элемент таблица создается динамически на форме-------
	
	//Добавим поля и пропишем путь к данным
	Для Каждого КолонкаТЗ ИЗ ТЗ.колонки Цикл
		ИмяКолонки = КолонкаТЗ.Имя;
		Если ЭтаФорма.Элементы.Найти(ИмяКолонки) = Неопределено  Тогда	
			нЭлемент = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), Элементы.ТЗ_ЧтениеJSON); 
			нЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
			нЭлемент.ПутьКДанным = "ТЗ_ЧтениеJSON." + ИмяКолонки;
		КонецЕсли;
	КонецЦикла;
	
	ТЗ_ЧтениеJSON.Загрузить(ТЗ); //Грузим нашу исходную ТЗ  
	
КонецПроцедуры	

 

таблица значений на управляемой форме

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55751    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64132    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    20072    28    6    

44

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    28074    dimanich70    83    

151

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    17482    YA_418728146    8    

170

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

2 стартмани

22.08.2023    4586    76    progmaster    11    

4

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    8355    kalyaka    6    

34

WEB-интеграция Работа с интерфейсом Пользователь Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для конфигурации 1С:Розница 2.3.

3600 руб.

29.04.2022    14483    2    10    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WorkerPavel 02.11.22 13:54 Сейчас в теме
С такой картинкой вас посодют за дискредитацию вооружённых сил РФ.

А если по теме то у вас форматирование сбилось в 3 пункте:
Прикрепленные файлы:
2. DMon 121 07.11.22 11:40 Сейчас в теме
А я плюсану за такую картинку! )
Оставьте свое сообщение