Имя: Пароль:
1C
1С v8
Передача данных между клиентом и сервером
,
0 flashdancer
 
27.12.13
16:09
Всем добрый день!
Столкнулась с одной ошибкой, не могу разобраться, в чем дело.
Ситуация следующая:

Нужно найти кое-какое значение в дереве значений, вызываю доп.функцию:

&НаКлиенте
Процедура УменьшитьПериод(Команда)
...
ЗначениеОтбора = НайтиЗначениеОтбораВДереве(ТекущийОтбор);
...
КонецПроцедуры

&НаСервере
Функция НайтиЗначениеОтбораВДереве(Значение)
    
    Дерево = ДанныеФормыВЗначение(ДеревоКонтрагентов, Тип("ДеревоЗначений"));
    Строка = Дерево.Строки.Найти(Значение, "Значение", Истина);
    Если Строка = Неопределено Тогда
        Элементы.ДеревоКонтрагентов.ТекущаяСтрока = Дерево.Строки[0];
        ЗначениеДляВозврата = Дерево.Строки[0].Значение;
        Возврат ЗначениеДляВозврата;
    Иначе
        Элементы.ДеревоКонтрагентов.ТекущаяСтрока = Строка;
        ЗначениеДляВозврата = Строка.Значение;
        Возврат ЗначениеДляВозврата;
    КонецЕсли;
    
КонецФункции

Вызов функции порождает ошибку:
Ошибка при вызове метода контекста (НайтиЗначениеОтбораВДереве)
    ЗначениеОтбора = НайтиЗначениеОтбораВДереве(ТекущийОтбор);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'cr':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'СтрокаДереваЗначений'

Интересно то, что строку ТЗ я не передаю и не возвращаю.
Переменная ТекущийОтбор типа СправочникСсылка.
Переменная ЗначениеДляВозврата также с типом значения СправочникСсылка.

Подскажите, пожалуйста, куда можно посмотреть.
1 Fedor-1971
 
27.12.13
16:13
Попробуй посмотреть в сторону .ПолучитьИдентификатор() и .НайтиПоИдентификатору(),  ТекущийОтбор небось коллекция значений.
2 H A D G E H O G s
 
27.12.13
16:15
Элементы.ДеревоКонтрагентов.ТекущаяСтрока = Строка;
3 flashdancer
 
27.12.13
16:20
(1) ТекущийОтбор типа СправочникСсылка
4 flashdancer
 
27.12.13
16:20
(2) Засунула строку в попытку, исключение не вызывается, текущая строка присваивается корректно
5 Avganec
 
27.12.13
16:20
(0) тип переменной ТекущийОтбор есть только на клиенте, тебе нужно его подготовить для передачи на сервер
6 H A D G E H O G s
 
27.12.13
16:23
(4) Заккоменть эту строку
7 flashdancer
 
27.12.13
16:23
(5) Как это? Синтакс-помощник говорит, что тип "СправочникСсылка" существует, как на сервере, так и на любом клиенте, и сериализуется.
8 dj_serega
 
27.12.13
16:24
(4) Так исключение когда завершается &НаСервере и возвращается работа &НаКлиенте.
Попытка/исключение проблему не решит.
9 Avganec
 
27.12.13
16:24
(7) у тебя точно СправочникСсылка? именно так?
10 dj_serega
 
27.12.13
16:25
+(8) идея была сделующая:
Удали строки где:
Элементы.ДеревоКонтрагентов.ТекущаяСтрока = Дерево.Строки[0];
11 flashdancer
 
27.12.13
16:26
(6) Хмм... закомментила - ошибка ушла. Спасибо, теперь знаю, в чем затык, но присвоение текущей строки мне тоже нужно...
12 dj_serega
 
27.12.13
16:29
(11) а на клиенте никак не сделать выборку?
Есть метод "ПолучитьЭлементы()" кажись.
Основная теорема систематики: Новые системы плодят новые проблемы.