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

10.12.13

Разработка - Универсальные функции

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

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

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

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

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

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

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

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

 

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

 

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

 

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

 

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

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

Вступайте в нашу телеграмм-группу Инфостарт

Мутабельные Клиент Сервер Перенос таблицы значений

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    2685    Abysswalker    7    

41

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5709    DeerCven    15    

57

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

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

21.05.2024    47007    dimanich70    83    

167

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7006    6    John_d    13    

59

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    58328    atdonya    31    

68

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

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8761    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AlX0id 10.12.13 19:18 Сейчас в теме
ОбщегоНазначения.ТаблицаЗначенийВМассив(Таблица)
не? )
romulanin; pavlov_a; JohnConnor; Istur; user712426; alsegor; Iva_Irina_Iva; user785234; zzz14; HuKuTa88; miphtemp; Jeka44; user865537; Yan_Malyakov; kamsky93; victorree; Elf77; user811769; user1090556; sergio199; Gorus; kar911; Gang031; VrYasuyk; Огонек; NN2P; Silenser; roman77; altek; roofless; elga2012; qwed557; tehas; elian; dim369; Draconus; freezetron; KonstB; +38 Ответить
4. Draconus 87 11.12.13 08:58 Сейчас в теме
(1) AlX0id, опять велосипед изобретаю))
А в обратку кстати какой метод? "МассивВТаблицуЗначений" не нашел...
8. AlX0id 11.12.13 10:16 Сейчас в теме
(4)
А обратно лично я не нашел ) Пришлось писать )
10. Draconus 87 11.12.13 10:41 Сейчас в теме
(8) AlX0id, тогда половина кода не "велосипед" :)
A_Max; Andrei_Ivanov; user865537; klinval; +4 Ответить
12. Bukaska 148 11.12.13 10:52 Сейчас в теме
(4) Мутабельные значения - немножко другая тема..
если у вас модуль серверный и не стоит галка вызов сервера и наоборот... то конечно будет эта тема..
А так для тонкого клиента есть функционал: ДанныеФормыВЗначение и ЗначениеВДанныеФормы
Об этом даже рассказывает Андрей Габец в тестовом доступе УЦ3 , отрывок из курса Оперативных задач
31. AlexeyPapanov 475 01.09.18 13:42 Сейчас в теме
Коллеги, я сейчас решаю озвученную в теме задачу.
Пишу обработку заполнения табличной части (с вызовом клиентского метода).
Юзер указывает ссылку на документ, по которой я на сервере собираю ТЗ, а потом эту ТЗ возвращаю на клиент, чтобы заполнить ТЧ своего документа.

Понимаю, что можно тупо упаковать строки в структуры,, а их в массив, и этот массив вернуть на клиент.

но тут в (12) сказано
А так для тонкого клиента есть функционал: ДанныеФормыВЗначение и ЗначениеВДанныеФормы

это применимо в моей задаче или проще массив из структур швырнуть на клиент?
34. azhilichev 216 03.12.18 09:21 Сейчас в теме
(31) ДанныеФормыВЗначение и ЗначениеВДанныеФормы нельзя открывать от контекста формы. Бесконтекстные вызовы не отработают.
2. KonstB 182 10.12.13 21:48 Сейчас в теме
1. Автор посмотри (0) - сравни. У тебя не оптимально.
2. Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) - не будет работать в тонком клиенте
ice666999; rpgshnik; +2 Ответить
3. AnryMc 850 10.12.13 21:53 Сейчас в теме
Функция "ПреобразоватьТаблицуЗначенийВМассив" выполняется на сервере перед передачей данных, а "ПреобразоватьМассивВТаблицуЗначений" уже на клиенте соответственно.


&НаСервереБезКонтекста

&НаКлиентеБезКонтекста

40. olbir 18.08.21 15:39 Сейчас в теме
(3)
(3)
Функция "ПреобразоватьТаблицуЗначенийВМассив" выполняется на сервере перед передачей данных, а "ПреобразоватьМассивВТаблицуЗначений" уже на клиенте соответственно.


&НаСервереБезКонтекста

&НаКлиентеБезКонтекста


тзДанные = Новый ТаблицаЗначений; на клиенте не работает
Риник; +1 Ответить
5. soap 67 11.12.13 09:22 Сейчас в теме
Попробовал можно воспользоваться, но при большой таблице чертовски медленно
6. gaglo 11.12.13 09:57 Сейчас в теме
А почему не ЗначениеВСтрокуВнутр ?
jONES1979; myALKleon; +2 Ответить
7. Draconus 87 11.12.13 10:10 Сейчас в теме
(6) gaglo, никто не говорил, что данный вариант - это универсальные методы, которые должны быть у каждого и пользоваться надо только ими)
Это всего лишь один из возможных подходов к решению задач. Кстати как упоминалось в (5) далеко не самый оптимальный. Однако есть вероятность, что кто-то сочтет его полезным для себя.
17. gaglo 12.12.13 10:37 Сейчас в теме
(7) - не ответ, а вот (14) - ответ. Спасибо.
14. kg_am 179 11.12.13 12:01 Сейчас в теме
(6) gaglo,
ЗначениеИзСтрокиВнутр() на тонком клиенте не работает.
Bene_Valete; METAL; lsnr; vvvalera; gaglo; +5 Ответить
35. user659124_s.kostina 29.07.19 13:37 Сейчас в теме
(6) Пыталась сравнивать этой функций две тз, одна была выгружена из результата запроса, другая сформирована в цикле, и они НЕ были одинаковыми. Сравнила полученный текст, разница, как я поняла в индексах. А вот сравнив массивы, полученные из этих тз, я получила верный результат сравнения.
9. Гость 11.12.13 10:41
если не ошибаюсь, ТаблицаЗначений прекрасно передается на сервер
вот СписокЗначений - не передается
Прикрепленные файлы:
tranay; Трактор; +2 5 Ответить
11. Draconus 87 11.12.13 10:43 Сейчас в теме
(9) barankin, таблица значений с сервера не передается, а вот список значений передаваться должен.
Хотя недавно у меня тоже не передавался, что странно, так как точно помню, что можно было... так же пришлось делать через массив.
13. zarucheisky 11.12.13 10:56 Сейчас в теме
Передача массива структур с клиента на сервер в общем-то очевидна и давно известна.
А вот подобный код в статье публиковать не стОит.

Вложенные циклы по колонкам внутри перебора таблицы выглядят несколько неразумно.

На самом деле, если конечно подумать, и посмотреть как ТЗ отображается в XML, то и решение придет как бы само :)
user1210458; Yashazz; +2 Ответить
18. Yashazz 4889 12.12.13 12:50 Сейчас в теме
(13) Верно, хотя сериализация тоже не всякая прокатывает, особенно если в таблице разности и хитрости понапиханы. Да и городить огород иногда нерационально.
19. zarucheisky 12.12.13 14:14 Сейчас в теме
(18) Понапихай всего разного и посмотри как сериализуется
Грубо говоря, сериализуется ВСЕГДА одинаково, как прописано в xsd-схеме ядра платформы.
21. Yashazz 4889 20.12.13 22:36 Сейчас в теме
(19) Некоторые вещи просто НЕ сериализуются. Иногда - противореча СП, например, "РазмерКартинки". А схему самой 1С я видел, так вот, теоретически должное иногда практически не выходит. Ну, xsd 1С - вообще отдельная история, здесь это оффтоп )))
15. peterxx 23 11.12.13 15:50 Сейчас в теме
Нормально работает, сам пользуюсь, правда преобразую ТЗ в структуру массивов. Массив тоже можно пинать между клиентом и сервером.
16. nixel 1463 12.12.13 01:31 Сейчас в теме
Вот если бы кто написал функции по переводу тз в массив структур с двумя требованиями:
1) обход данного массива так же как и ТЗ (есть)
2) преобразование данного массива в ТЗ с сохранением типов колонок

А то в крайних случаях приходится проходиться по колонке, смотреть все типы и строить ОписаниеТипов для конструктора ТЗ по собранным данным... Медленно и не всегда верно. Особенно если таблица пустая. Колонки потеряли, типы потеряли. Ну это так, мысли о высоком.
20. wunderland 203 13.12.13 13:31 Сейчас в теме
скользкая тема, если в таблице есть значения Null - в этом случае в тонком клиенте и WEB-клиенте код отрабатывает по разному.
22. realEvgenius 2 17.02.15 11:09 Сейчас в теме
А в чем соль, так сказать?

Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные)

Всеравно передает ТЗ с сервера и всеравно вызывает ошибку...

Или я деревянный или чушь какая-то
23. Draconus 87 17.02.15 14:07 Сейчас в теме
(22) realEvgenius

Вариант 1.
1. С помощью ПреобразоватьТаблицуЗначенийВМассив() делаем массив, который гоняем между клиентом и сервером.
2. Обрабатываем его (это уже сами выбираете как)
3. Передаете на клиент обратно МАССИВ, который затем преобразуете в Таблицу значений с помощью ПреобразоватьМассивВТаблицуЗначений().

Вариант 1,5.
1. Делаем массив с помощью ПреобразоватьТаблицуЗначенийВМассив()
2. Получаем на сервере, преобразуем в Таблицу значений с помощью ПреобразоватьМассивВТаблицуЗначений()
3. Работаем с Таблицей значений

З.Ы. Мне надо было для второго варианта.
24. realEvgenius 2 17.02.15 16:17 Сейчас в теме
(23) Вопрос Как в процедуре, которая идет после &НаКлиенте Использовать Таб значений как её туда передать? Ответ - никак. ПреобразоватьМассивВТаблицуЗначений() Это на сервере запускать? Оно возвращает Таб значений (Возврат тзДанные), которую нельзя передать в мою процедуру, которая выполняется на клиенте. Ибо система ругается.
Смысл этих обработок? Таб значений передать на клиента нельзя. Преобразовываем её в массив, передаем массив на клиента, предаем массив функции ПреобразоватьМассивВТаблицуЗначений(), которая по идее должна дать таб знач и получаем туже ошибку. Наверное, я - деревянный, что-то не понимаю
25. Draconus 87 17.02.15 16:42 Сейчас в теме
(24) realEvgenius

Обе функции кладутся в общий модуль, где проставлены галочки "Клиент" и " Сервер", назовем его "ОбщегоНазначенияКлиентСервер"

&НаКлиенте
Процедура ЧтотоДелаю1()
   
   //Есть уже таблица надо ее подправить на сервере
   ЧтотоДелаюНаСервере1(ОбщегоНазначенияКлиентСервер.ПреобразоватьТаблицуЗначенийВМассив(<НашаБеднаяТаблица>));

КонецПроцедуры

&НаСервере
Процедура ЧтотоДелаюНаСервере1(НашБедныйМассив)
   НашаБеднаяТаблица = ОбщегоНазначенияКлиентСервер.ПреобразоватьМассивВТаблицуЗначений(НашБедныйМассив).Скопировать();
   // Мучаем нашу бедную таблицу, что-то из нее берем, что-то добавляем
   
   // Если надо вернуть отбратно, то делаем не процедуру, а функцию и возвращаем
   // ОбщегоНазначенияКлиентСервер.ПреобразоватьТаблицуЗначенийВМассив(<НашаБеднаяПЕРЕДЕЛАННАЯТаблица>)

КонецПроцедуры
Показать


Я не знаю что тут еще можно добавить
alul; realEvgenius; +2 1 Ответить
27. svad1 10 21.04.16 13:37 Сейчас в теме
(25) как у вас получилось?
//Есть уже таблица надо ее подправить на сервере 

Если на клиенте написать 
тзДанные = Новый ТаблицаЗначений; 


то сразу ошибка.

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

Тип не определен (ТаблицаЗначений)
тзДанные = Новый <<?>>ТаблицаЗначений; (Проверка: Тонкий клиент)
afrodit; bow; +2 Ответить
26. realEvgenius 2 17.02.15 17:04 Сейчас в теме
Аааа.... В общий модуль... А я ж в томже модуле мучаю...
попробую
28. logos 217 27.06.16 20:44 Сейчас в теме
Вот ведь парадокс.... Тип таблица значений на клиенте не определен, а реквизит формы типа "таблица значений" возможен и работает. Сдается мне это вопрос религиозного характера!
svmix; rpgshnik; +2 Ответить
29. nixel 1463 28.06.16 00:54 Сейчас в теме
(28) logos, посмотрите отладчиком, какой тип у этого реквизита. Удивитесь.
30. It-developer 26 23.03.17 14:28 Сейчас в теме
Они ограничили передачи ТаблицыЗначений, потому что хз что туда можно напихать. Было бы лучше не ограничивать таблицу, а ограничивать типы передаваемых данных
32. chukawata 10 23.10.18 05:00 Сейчас в теме
33. komanch75 28.11.18 09:29 Сейчас в теме
Можно передавать массив, элементы которого - массивы выгруженных колонок таблицы.
Правда таблица значений доступна только на толстом клиенте.
&НаКлиенте
Процедура ЧтоТо(Команда)
	Мсс=ПередачаНаСервере();
	ТЗ=Новый ТаблицаЗначений;
	Для йй=0 по Мсс.Количество()-1 цикл
		ИмяКолонки=СокрЛП(Мсс[йй][0]);
		ТЗ.Колонки.Добавить(ИмяКолонки);
		Мсс[йй].Удалить(0);
		Если йй=0 тогда //на первом проходе добавим в ТЗ строки
			Для цц=1 по Мсс[йй].Количество() цикл
				ТЗ.Добавить();
			КонецЦикла;
		КонецЕсли;
		ТЗ.ЗагрузитьКолонку(Мсс[йй], ТЗ.Колонки[ИмяКолонки]);
	КонецЦикла;
КонецПроцедуры

&НаСервере
Функция ПередачаНаСервере()
		ТЗ = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, Объект.Сотрудник, ЗапрашиваемыеКадровыеДанные, ТекущаяДата()); //формирует ТЗ
		Мсс=Новый Массив;
		Для йй=0 по ТЗ.Колонки.Количество()-1 цикл
			кл=ТЗ.ВыгрузитьКолонку(ТЗ.Колонки[йй]);
			кл.Вставить(0, СокрЛП(ТЗ.Колонки[йй].Имя)); //первой строкой имя колонки
			Мсс.Вставить(йй,кл);
		КонецЦикла;
		Возврат Мсс;
КонецФункции
Показать
36. hobi 619 09.10.19 12:52 Сейчас в теме
Гораздо эффективнее будет работать так (нет двойных циклов и меньше объем данных при сериализации):

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

Функция КоллекцияВТЗ(Коллекция) Экспорт
	
	ТЗ = Новый ТаблицаЗначений;
	// добавим пустые строки
	Для каждого Эл Из Коллекция Цикл
		КоличествоСтрок = Эл.Значение.Количество();
		Для Индекс = 1 По КоличествоСтрок Цикл
		    ТЗ.Добавить();
		КонецЦикла;
		Прервать;
	КонецЦикла;
		
	// загрузим колонки
	Для каждого Эл Из Коллекция Цикл
	    ТЗ.Колонки.Добавить(Эл.Ключ);
		ТЗ.ЗагрузитьКолонку(Эл.Значение, Эл.Ключ);
	КонецЦикла;
	
	Возврат ТЗ;
	
КонецФункции	
Показать
VyacheslavShilov; alex28; Istur; janit; chemezov; Anosov_EP; ssfedkin; miphtemp; rnobody; Aspire1C; Cyberhawk; Elisy; +12 Ответить
38. Elisy 957 28.05.20 18:27 Сейчас в теме
(36) Самое оптимальное решение. Производительность увеличивается в 1,5-2 раза
37. user811769 17 07.04.20 12:51 Сейчас в теме
спасибо из 2020 ))) ваш код очень помог с задачей, в которой нужно было кешировать значения ТЗ и проверять после записи
alul; ilya4; +2 Ответить
39. 1108 224 01.04.21 23:00 Сейчас в теме
(37) в 2021г. код все еще актуален)))
41. Serg243 27.01.22 12:27 Сейчас в теме
2022й Борюсь с той-же проблемой. Спасибо за подсказку.
43. user1773463 06.06.23 16:27 Сейчас в теме
2023й идет. Очень интересно
(41)
42. Serg243 27.01.22 16:24 Сейчас в теме
Я вот тоже с внешней обработкой встрял. Мне нужно чтобы в документе *.doc формировалась таблица из документа и была возможность. Но писать процедуры и функции в общий модуль не хочется, у меня чувство что это не особо надёжно. Решил проблему так.
Добавил на форму табличную часть.
Пусть нужные данные попадают в неё сразу если обработка печати открывается из документа.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если НЕ Параметры.ОбъектыНазначения[0] = Неопределено Тогда 
		СсылкаНаДокумент = Параметры.ОбъектыНазначения[0];
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
		|	ЗаказКлиентаТовары.Количество КАК Количество,
		|	ЗаказКлиентаТовары.Цена КАК Цена,
		|	ЗаказКлиентаТовары.Сумма КАК Сумма
		|ИЗ
		|	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
		|ГДЕ
		|	ЗаказКлиентаТовары.Ссылка = &СсылкаНаДокумент";
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	Таблица1 = РезультатЗапроса.Выгрузить();
	
	Для каждого СтрокаТЗ Из Таблица1 Цикл 
		ЗаполнитьЗначенияСвойств(Объект.ТабличнаяЧастьДокумента.Добавить(), СтрокаТЗ) 
	КонецЦикла; 
	
	КонецЕсли;

КонецПроцедуры
Показать


ПС Я начинающий 1Сник, строго не судите.
ARMAGEDONF; +1 Ответить
44. andrew_dr 19.01.24 16:23 Сейчас в теме
Прошу обратить внимание, что переданная массивом на сервер и преобразованная в таблицу не содержит типизации колонок.
И если эта таблица используется в запросе на создание временной таблицы (путем загрузки из параметра), то запрос падает с ошибкой "Не могу задать тип".
Вот немного подправленная версия:

&НаСервере
Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт

тзДанные = Новый ТаблицаЗначений;

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

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

Возврат тзДанные;

КонецФункции // ПреобразоватьМассивВТаблицуЗначений()
VyacheslavShilov; +1 Ответить
45. RustIG 1931 30.05.24 19:23 Сейчас в теме
идет 2024год...
за поднятие темы +

имхо, разработчикам платформы надо разделить ТаблицуЗначений на два разных объекта:
один интерфейсный и мутабельный - назовем его Таблица - он для отображения и визуализации таблицы значений на форме,
второй - в качестве коллекции хранения данных - вот его можно будет легко передавать с клиента на сервер и обратно.
При этом второй объект ТаблицаЗначений можно было бы получать через процедуру Таблица.Выгрузить()

И ДеревоЗначенийтакже разделить
user1958370; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация