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