База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать таблицу значений с сервера на клиент в 1С без ошибки?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 месяцев, 4 недели назад сделано  Odin — Одинэсник. Odin — Одинэсник.
- 
		АвторСообщения
- 
		
			- 
4 апреля 2025 в 16:45 #32260 OdineskiУчастник OdineskiУчастникЕсть функция в модуле формы на сервере в ней через цикл вставляется табличную часть, есть процедура на клиенте в которую нужно передавать таблицу значений, часть кода из функции » 
 Таб = Новый ТаблицаЗначений;
 Таб.Колонки.Добавить(«Код»);
 Таб.Колонки.Добавить(«Адрес»);
 Таб.Колонки.Добавить(«Страна»);Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
 Стр = Таб.Добавить();
 Стр.Код = ВыборкаДетальныеЗаписи.Код;
 Стр.Адрес = ВыборкаДетальныеЗаписи.Ссылка;
 Стр.Страна =ВыборкаДетальныеЗаписи.Страна ;
 КонецЦикла;Возврат Таб; 
 » часть кода в процедуре на клиенте «ТабЗначений = ПолучениеДляТаблицыДанных(Структура);» , а приходит ошибка «Ошибка отображения типов:
 Отсутствует отображение для типа ‘{
 {Документ.ПЛ_ПланЛогистики.Форма.ФормаДокумента.Форма(625)}: ТабЗначений = ПолучениеДляТаблицыДанных(Структура);по причине: 
 Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
 по причине:
 Ошибка преобразования данных XDTO:
 НачалоСвойства: ret Форма: Элемент Тип: {
 по причине:
 Ошибка отображения типов:
 «
- 
4 апреля 2025 в 16:45 #32261 Odin — ОдинэсникУчастник Odin — ОдинэсникУчастникДля передачи таблицы значений из функции на сервере в процедуру на клиенте в 1С:Предприятие, необходимо использовать массив структур в качестве промежуточного типа, так как таблицы значений являются мутабельными и не могут быть переданы напрямую. Вот как можно это реализовать: 1. **На сервере**: Вместо возврата таблицы значений, преобразуйте её в массив структур. 1С (Код)12345678910111213141516171819202122232425261CФункция ПолучениеДляТаблицыДанных(Структура) ЭкспортТаб = Новый ТаблицаЗначений;Таб.Колонки.Добавить("Код");Таб.Колонки.Добавить("Адрес");Таб.Колонки.Добавить("Страна");Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклСтр = Таб.Добавить();Стр.Код = ВыборкаДетальныеЗаписи.Код;Стр.Адрес = ВыборкаДетальныеЗаписи.Ссылка;Стр.Страна = ВыборкаДетальныеЗаписи.Страна;КонецЦикла;// Преобразуем таблицу значений в массив структурМассивДанных = Новый Массив;Для Каждого Строка Из Таб ЦиклСтруктураСтроки = Новый Структура;Для Каждого Колонка Из Таб.Колонки ЦиклСтруктураСтроки.Вставить(Колонка.Имя, Строка[Колонка.Имя]);КонецЦикла;МассивДанных.Добавить(СтруктураСтроки);КонецЦикла;Возврат МассивДанных; // Возвращаем массив структурКонецФункции2. **На клиенте**: Принимаем массив структур и преобразуем его обратно в таблицу значений. 1С (Код)1234567891011121314151617181CПроцедура ПолучениеДанных(Структура) ЭкспортМассивСтрок = ПолучениеДляТаблицыДанных(Структура); // Получаем массив структурТабЗначений = Новый ТаблицаЗначений;ТабЗначений.Колонки.Добавить("Код");ТабЗначений.Колонки.Добавить("Адрес");ТабЗначений.Колонки.Добавить("Страна");Для Каждого Элемент Из МассивСтрок ЦиклНоваяСтрока = ТабЗначений.Добавить();Для Каждого Имя Из Элемент.Ключи ЦиклНоваяСтрока[Имя] = Элемент[Имя];КонецЦикла;КонецЦикла;// Теперь ТабЗначений содержит данные, которые можно использоватьКонецПроцедурыТаким образом, вы избегаете ошибок отображения типов, передавая данные в виде массива структур, который может быть сериализован и десериализован без проблем. 
 
- 
- 
		АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.
