Каталог решений - Перенос таблицы значений между клиентом и сервером

Перенос таблицы значений между клиентом и сервером

Перенос таблицы значений между клиентом и сервером

В наличии

Всем привет.
Бывают такие моменты, когда необходимо таблицу значений передать с сервера на клиент, увы, Мутабельные значения и т.д.
В тоже время есть возможность перекидывать все это добро через Хранилище, чем собственно разработчики часто пользуются.
Но сегодня я бы хотел вынести на Вашу критику вот такой пример переноса.

Сильно не пинайте.

Категория:

Описание

Все мы сталкивались с ситуацией, когда необходимо с сервера передать данные на клиент. И далеко не всегда это примитивные типы.

Об одном из таких типов я бы сегодня и хотел поговорить.

Речь сегодня о таблицы значений.

Данный тип является мутабельным и при попытке выполнить это действия мы получим ошибку:

{Справочник.НастройкиЗаполненияОбъектов1СДокументооборота.МодульОбъекта(33)}: Ошибка при вызове метода контекста (ПолучитьПрокси)
Прокси = ИнтеграцияС1СДокументооборотВызовСервера.ПолучитьПрокси();
по причине:
Попытка передачи мутабельного значения результата метода ПолучитьПрокси ().

(текст ошибки в каждом случае свой)

 

Сегодня я выношу на Вашу критику и обозрение один из вариантов решения этой проблемы, а именно преобразование в Массив(может передаваться) из структур и обратно в таблицу.

 

Функция «ПреобразоватьТаблицуЗначенийВМассив» выполняется на сервере перед передачей данных, а «ПреобразоватьМассивВТаблицуЗначений» уже на клиенте соответственно.

 

Код этих функций:

 

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

// Функция преобразует Массив из структур в ТаблицуЗначений.
//
Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт
	
	тзДанные = Новый ТаблицаЗначений;
	
	Для Каждого ЭлементМассива Из мсДанные Цикл
		// Рисуем колонки для таблицы
		Если тзДанные.Колонки.Количество() = 0 Тогда
			Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
				тзДанные.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
			КонецЦикла;
		КонецЕсли;
		
		// Добавляем данные в таблицу
		НоваяСтрока = тзДанные.Добавить();
		Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
			НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
		КонецЦикла;
	КонецЦикла;
	
	Возврат тзДанные;
	
КонецФункции // ПреобразоватьМассивВТаблицуЗначений()
has been added to your cart:
Оформление заказа