Имя: Пароль:
1C
1С v8
Ошибка передачи между сервером и клиентом
0 alexshape
 
26.07.17
11:50
Привет Всем. Подскажите что я делаю не так.
в процедуре : ДобавитьКонтактнуюИнформациюКонтактаВидВыбран Вызываю другую процедуру ничего не возвращаю. ничего не отправляю. Тольок в процедуре создаю Строку таблицы значения реквизиты формы, и создаю элемент на форме  


&НаКлиенте
Процедура ДобавитьКонтактнуюИнформациюКонтактаВидВыбран(ВыбранныйЭлемент, ДополнительныепПараметры) Экспорт
    
    
    Если ВыбранныйЭлемент = Неопределено Тогда    
        Возврат;
    ИначеЕсли ВыбранныйЭлемент.Значение = "Телефон" Тогда        
        ОбновитьЭлементыКонтактныхЛицТелефоны();
    ИначеЕсли ВыбранныйЭлемент.Значение = "Email" Тогда        
        ОбновитьЭлементыКонтактныхЛицEmail();
    ИначеЕсли ВыбранныйЭлемент.Значение = "Факс" Тогда        
        
        // Здесь вставить ОбработчикДляФакса
        
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыКонтактныхЛицEmail(ДанныеКИ = Неопределено)  


...Какой то код

КонецПроцедуры
1 Ц_У
 
26.07.17
11:52
Ошибка в чем? ТЗ гоняешь с С на К?
2 alexshape
 
26.07.17
11:53
(1) {Справочник.Контрагенты.Форма.ФормаЭлементаУпрВиталий.Форма(786)}: Ошибка при вызове метода контекста (ОбновитьЭлементыКонтактныхЛицEmail)
        ОбновитьЭлементыКонтактныхЛицEmail();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
3 alexshape
 
26.07.17
14:02
Может кто нибудь сталкивался?
4 Флориан
 
26.07.17
14:07
(3) поставь 8.3
5 Рабочая имитация
 
26.07.17
14:09
(0) > Тольок в процедуре создаю Строку таблицы значения реквизиты формы
...куда-то ее прячешь и делаешь контекстный вызов. Ессно оно на сервер не уедет.

"ФормаЭлементаУпрВиталий" - божественно!
6 2dolist
 
26.07.17
14:18
огнь
7 alexshape
 
26.07.17
14:24
(5) ДанныеКонтактныхЛиц - это таблица Значений формы
Код

Если ДанныеКИ = Неопределено Тогда    
        ДанныеКИ = ДанныеКонтактныхЛиц.Добавить();
        ДанныеКИ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;    
    КонецЕсли;
    
    ИндексКонтакта = ДанныеКонтактныхЛиц.Индекс(ДанныеКИ);
    ДанныеКонтактныхЛиц[ИндексКонтакта].Тип  = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
    
    ГруппаEmail =  Элементы.Добавить("ГруппаДляДобавляемогоEmail_"+ИндексКонтакта, Тип("ГруппаФормы"), Элементы.ДобавляемыйEmail);
    ГруппаEmail.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    ГруппаEmail.Отображение = ОтображениеОбычнойГруппы.Нет;
    ГруппаEmail.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
    ГруппаEmail.ОтображатьЗаголовок = Ложь;
    
    ДекорацияДляРисунка = Элементы.Добавить("ДекорацияРисункаEmail_"+ИндексКонтакта, Тип("ДекорацияФормы"), ГруппаEmail);
    ДекорацияДляРисунка.Вид = ВидДекорацииФормы.Картинка;
    ДекорацияДляРисунка.Ширина = 2;
    ДекорацияДляРисунка.Высота = 1;
    ДекорацияДляРисунка.Картинка = БиблиотекаКартинок.КонтактнаяинофрмацияEmail;
    ДекорацияДляРисунка.Видимость = Истина;
    
    ДекорацияЗаголовок = Элементы.Добавить("ДекорацияЗаголовокEmail_"+ИндексКонтакта, Тип("ДекорацияФормы"), ГруппаEmail);
    ДекорацияЗаголовок.Вид = ВидДекорацииФормы.Надпись;
    ДекорацияЗаголовок.Ширина = 5;
    ДекорацияЗаголовок.Заголовок = "Email:";
    
    
    ПолеПредставление = Элементы.Добавить("ПредставлениеКонтактEmail_" + ИндексКонтакта, Тип("ПолеФормы"), ГруппаEmail);
    ПолеПредставление.Вид = ВидПоляФормы.ПолеВвода;
    ПолеПредставление.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
    ПолеПредставление.ПутьКДанным = "ДанныеКонтактныхЛиц["+ИндексКонтакта+"].Представление";
    ПолеПредставление.УстановитьДействие("ПриИзменении", "ПредставлениеКонтактEmail_1ПриИзменении");
    ПолеПредставление.УстановитьДействие("Очистка", "Подключаемый_ПредставлениеКИКонтактаОчистка");
    
    //
    КнопкаНазначитьОсновным = Элементы.Добавить("КнопкаНазначитьОсновнымEmail_"+ИндексКонтакта, Тип("КнопкаФормы"), ГруппаEmail);
    КнопкаНазначитьОсновным.Отображение = ОтображениеКнопки.Картинка;
    КнопкаНазначитьОсновным.Картинка = БиблиотекаКартинок.НазначитьОсновным;
    КнопкаНазначитьОсновным.ИмяКоманды = "НазначитьОсновным";
    КнопкаНазначитьОсновным.Ширина = 3;
    //
    КнопкаУдалитьПолеТелефона = Элементы.Добавить("КнопкаУдалитьПоленаEmail_"+ ИндексКонтакта, Тип("КнопкаФормы"), ГруппаEmail);
    КнопкаУдалитьПолеТелефона.Отображение = ОтображениеКнопки.Картинка;
    КнопкаУдалитьПолеТелефона.Картинка = БиблиотекаКартинок.УдалитьНепосредственно;
    КнопкаУдалитьПолеТелефона.ИмяКоманды = "УдалитьПоле";
    КнопкаУдалитьПолеТелефона.Ширина = 3;
8 Рабочая имитация
 
26.07.17
14:34
Молодец. Ты меняешь параметр, передаваемый по ссылке, платформа честно пытается тебе вернуть изменённое значение в место вызова. На клиент.
9 alexshape
 
26.07.17
14:59
(8) Не очень понял по какой ссылке я передаю параметр. Это же не функция, как она мне что то может вернуть?

Разве я не могу вызывать с клиента серверную процедуру которая добавляет в реквизит формы "таблицазначений" строки? Мне не зачем передавать на сервер, вызов то контекстный
10 alexshape
 
26.07.17
15:01
(8) и что за параметр я меняю тогда?
11 Рабочая имитация
 
26.07.17
15:27
(10) Сколько ж вопросов...

Напиши в объявлении процедуры перед именем параметра магическое слово "Знач" и отстань. Тебе непонятно, а мне неинтересно.
12 alexshape
 
26.07.17
15:33
(11) Уже, только хотелось разобраться что и как. Все равно спасибо