База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать ТаблицуЗначений на сервер в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 неделя, 1 день назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
29 апреля 2026 в 13:19 #36865
Как передать таблицу значений на сервер
-
29 апреля 2026 в 13:19 #36866
Чтобы передать ТаблицуЗначений с клиента на сервер в 1С (управляемое приложение), нужно учитывать, что напрямую передавать мутабельные объекты нельзя — будет ошибка. Поэтому обычно делают так:
1. Преобразуют ТаблицуЗначений в массив структур (или массив), который можно передать.
2. На сервере из этого массива восстанавливают ТаблицуЗначений.Пример кода:
На клиенте (или в общем модуле с директивой &НаКлиенте):
1С (Код)1234567891011Функция ТаблицаЗначенийВМассив(Таблица)Массив = Новый Массив;Для Каждого Строка Из Таблица ЦиклСтруктураСтроки = Новый Структура;Для Каждого Колонка Из Таблица.Колонки ЦиклСтруктураСтроки.Вставить(Колонка.Имя, Строка[Колонка.Имя]);КонецЦикла;Массив.Добавить(СтруктураСтроки);КонецЦикла;Возврат Массив;КонецФункцииПередача на сервер:
1С (Код)123456789101112131415161718&НаСервереПроцедура ПолучитьДанные(МассивДанных)Таблица = Новый ТаблицаЗначений;Если МассивДанных.Количество() > 0 Тогда// Создаем колонки по ключам первой структурыДля Каждого Ключ Из МассивДанных[0].Ключи() ЦиклТаблица.Колонки.Добавить(Ключ);КонецЦикла;// Заполняем строкиДля Каждого СтруктураСтроки Из МассивДанных ЦиклНоваяСтрока = Таблица.Добавить();Для Каждого Ключ Из СтруктураСтроки.Ключи() ЦиклНоваяСтрока[Ключ] = СтруктураСтроки[Ключ];КонецЦикла;КонецЦикла;КонецЕсли;// Теперь Таблица содержит данные, можно работать дальшеКонецПроцедурыВызов с клиента:
1С (Код)12МассивДляПередачи = ТаблицаЗначенийВМассив(МояТаблица);ПолучитьДанные(МассивДляПередачи);Если таблица большая, можно использовать сериализацию в XML через СериализаторXDTO, но для большинства задач достаточно преобразования в массив структур.
Рекомендую посмотреть подробный пример здесь:
https://infostart.ru/1c/articles/900985/
и
https://infostart.ru/1c/articles/240022/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.