понедельник, 25 августа 2014 г.

Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'



Добрый день. Сегодня наступил на интересные грабли:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'


Подобная ошибка возникает при попытке передать с клиента на сервер таблицу значений, и это мне давно известно, однако я получил эту ошибку без явной передачи таблицы. Вот часть кода с которым произошла ошибка:




&НаКлиенте
Процедура Заполнить(Команда)
тМассив = Новый Массив;
тМассив .Добавить(Объект.Организация);
ПоискНаСервере(тМассив);
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПоискСсылокНаСервере(тМассив, тОсновнаяТаблица = Неопределено)
тДанныеВФорму = Ложь;
Если тОсновнаяТаблица = Неопределено Тогда
тОсновнаяТаблица = Новый ТаблицаЗначений;
тОсновнаяТаблица.Колонки.Добавить("Ссылка");
тДанныеВФорму = Истина;
КонецЕсли; 
<<<<>>>>>>
Если <<<<>>>>>> Тогда 
ПоискСсылокНаСервере(МассивСсылок,тОсновнаяТаблица);
КонецЕсли;
Если тДанныеВФорму Тогда
ЗначениеВРеквизитФормы(тОсновнаяТаблица,"ТаблицаСсылок");
КонецЕсли;
КонецПроцедуры

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

тОсновнаяТаблица = Неопределено

На сегодня все.

Комментариев нет:

Отправить комментарий