Имя: Пароль:
1C
 
8.2 Ошибка при открытии формы выбора
0 Иде я
 
модератор
17.03.11
09:55
Подскажите, делаю выбор из поля строки на управляемой форме в табличном поле:
Выходит ошибка:
   ФормаВыбора = ПолучитьФорму("Справочник.Сотрудники.Форма.ФормаВыбораПодразделение",ПараметрыФормы,Элемент);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'val':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/mngsrv/ws}val
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ПолеФормы'
1 Иде я
 
17.03.11
09:55
Вот код:
&НаКлиенте
Процедура СотрудникиСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   ПараметрыФормы = Новый Структура("Подразделение1", Объект.Подразделение);
   ПараметрыФормы.Вставить("ТекущаяСтрока",Элемент);
   ФормаВыбора = ПолучитьФорму("Справочник.Сотрудники.Форма.ФормаВыбораПодразделение",ПараметрыФормы,Элемент);
   
   ФормаВыбора.Подразделение = Объект.Подразделение;
   ФормаВыбора.ОтборПоПодразделению = Истина;
   
   ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение");
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.Использование = Истина;
   ЭлементОтбора.ПравоеЗначение = Объект.Подразделение;
   
   ФормаВыбора.Открыть();
   ФормаВыбора.Элементы.Список.Обновить();
   СтандартнаяОбработка=Ложь;

КонецПроцедуры
2 Иде я
 
17.03.11
09:56
то же саамое, но при выборе не из таблицы, а из просто поля отрабатывает нормально:
&НаКлиенте
Процедура ЗаменяемыйСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   ПараметрыФормы = Новый Структура("Подразделение1", Объект.Подразделение);
   ПараметрыФормы.Вставить("ТекущаяСтрока",Объект.ЗаменяемыйСотрудник);
   ФормаВыбора = ПолучитьФорму("Справочник.Сотрудники.Форма.ФормаВыбораПодразделение",ПараметрыФормы,Элементы.ЗаменяемыйСотрудник);
   
   ФормаВыбора.Подразделение = Объект.Подразделение;
   ФормаВыбора.ОтборПоПодразделению = Истина;
   
   ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение");
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.Использование = Истина;
   ЭлементОтбора.ПравоеЗначение = Объект.Подразделение;
   
   ФормаВыбора.Открыть();
   ФормаВыбора.Элементы.Список.Обновить();
   СтандартнаяОбработка=Ложь;

КонецПроцедуры
3 xReason
 
17.03.11
09:58
где-там там между клиентом и сервером лежет такой тип данных который нельзя передать. Что-то типо фундаментального объект (справочник, документ и т.д.)

Ошибка возникает перед появлением формы или после?
4 xReason
 
17.03.11
09:58
"лежет " => лезет (т.е. передается)
5 Defender aka LINN
 
17.03.11
09:59
Отсутствует отображение для типа 'ПолеФормы'
...
ПараметрыФормы.Вставить("ТекущаяСтрока",Элемент);

Вопросы есть?
6 detec
 
17.03.11
10:02
(0) В 8.2 для ссылочных значений есть связи параметров выбора. При правильной настройке их в Конфигураторе форма выбора открывается уже отфильтрованная. И не нужно городить сложный код в стиле обычного приложения.
7 Иде я
 
17.03.11
10:10
(5) есть, что делать-то ?
(6) Пользователь захотел форму отбора с вынесенным фильтром по подразделению - им неудобно лезть в меню действия и тп...
8 Иде я
 
17.03.11
10:12
(5) Убрал строку - теперь работает, но если открывает выбор в поле с уже выбранным сотрудником, список не позиционируется на нем :(((
Как сделать уже выбранного сотрудника текущим ?
9 Defender aka LINN
 
17.03.11
10:13
(7) Ну, какбе... "Элемент" - это поле формы. А ты его пытаешься передать куда-то. Судя по названию, там должно быть что-нибудь другое все-таки.
10 Иде я
 
17.03.11
10:14
(9) Ну как бы да...Элемент.Значение типа того ?
11 Иде я
 
17.03.11
10:16
Ага, как получить текущее значение поля сотрудник табличной части сотрудники в момент выбора ?
12 Defender aka LINN
 
17.03.11
10:18
ТабличнаяЧасть.ТекущиеДанные.Сотрудник
13 Иде я
 
17.03.11
10:22
(12)    {Документ.ИзменениеУсловийТруда.Форма.ФормаДокумента.Форма(531)}: Поле объекта не обнаружено (ТекущиеДанные)
   ПараметрыФормы.Вставить("ТекущаяСтрока",Объект.Сотрудники.ТекущиеДанные.Сотруд
14 Defender aka LINN
 
17.03.11
10:25
(13) Я говорил что-то про объект?
Элементы.ТабличнаяЧасть, забыл написть :)
15 Иде я
 
17.03.11
10:27
(14) Действительно, при чем здесь Объект...
16 Иде я
 
17.03.11
10:28
(14) Гениально! Работает...вроде бы.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший