Имя: Пароль:
1C
1С v8
Управляемая форма и поле выбора составного типа
,
0 Yea-Yea
 
03.02.14
09:36
Есть управляемая форма документа Инвентаризация товаров на складе.
На форме есть поле составного типа: Справочник.Номенклатура и СписокЗначений.

При начале выбора, предлагает выбрать из двух типов - выбираю "номенклатура" и после этого выбираю конкретный элемент справочника.
Если при начале выбора выбрать "список значений" - то откроется форма списка значений, однако подбор в нем не типизирован! т.е. перед добавлением предлагает выбрать конкретный элемент метаданных (что конечно не удобно).

Если же в свойствах поля убрать флаг составного типа и оставить только "список значений" - то там же в свойствах этот список можно типизировать (указать тип "справочник.номенклатура") и тогда уже при выборе откроется типизированный список значений с возможностью подбора сразу из справочника номенклатура.

Как только меняю тип поля ввода на составной - возможность типизировать список значений пропадает.

Вопрос - как сделать управляемую форму инвентаризации аналогично обычной. Суть - при изменении типа сравнения с "равно" на "в списке" - должен меняться тип поля ввода (он кстати и меняется, если использовать ограничение типа при условии что поле составного типа), но при установке на список значений - он не типизирован!

как быть?
1 Yea-Yea
 
03.02.14
09:51
где же гуру управляемых форм...
2 RomaH
 
naïve
03.02.14
09:53
устанавливай свойства поля кодом
3 Рэйв
 
03.02.14
09:55
(0)Массив попробуй передать в параметр, а не список. Иногда помогает
4 Yea-Yea
 
03.02.14
09:56
(2) не нашел как типизировать список значения кодом. есть пример? в отладчике не нашел подходящих свойств.
5 Yea-Yea
 
03.02.14
09:56
(3) а в какой параметр?
6 RomaH
 
naïve
03.02.14
09:59
(4) свойства элемента посмотри
что-то типа "типЗначения"
7 RomaH
 
naïve
03.02.14
10:00
или ограничение типа
8 Yea-Yea
 
03.02.14
10:01
(6) искал, нет такого
9 Yea-Yea
 
03.02.14
10:02
(7) ограничение типа использую. позволяет установить конкретный тип выбора для поля составного типа. т.е. ставлю или Тип("Справочник.Номенклатура") или Тип("СписокЗначений"). Все работает. Но СписокЗначений получается не типизированный
10 RomaH
 
naïve
03.02.14
10:04
(8) плохо искал - поищи еще раз
давай скрин где не нашел
11 GROOVY
 
03.02.14
10:06
СписокЗначений (ValueList)
ТипЗначения (ValueType)
Использование:

Чтение и запись.
Описание:

Тип: ОписаниеТипов.
Определяет тип для значений, которые могут храниться в элементах данного списка значений.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
12 Yea-Yea
 
03.02.14
10:12
(10) вот все свойства поля выбора в отладчике http://s48.radikal.ru/i119/1402/67/380b7e9e1572.jpg
там нет ТипЗначения
13 Yea-Yea
 
03.02.14
10:12
(11) а чье это свойство, как к нему обратится?
14 RomaH
 
naïve
03.02.14
10:13
Если Отчет.ВидСравненияОрганизации = ВидСравнения.ВСписке ИЛИ Отчет.ВидСравненияОрганизации = ВидСравнения.НеВСписке Тогда
        
        Элементы.Организация.ОграничениеТипа      = Новый ОписаниеТипов("СписокЗначений");
        Отчет.Организация = Новый СписокЗначений;
        Отчет.Организация.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Организации");
15 Yea-Yea
 
03.02.14
10:19
&НаКлиенте
Процедура ВидСравненияПоНоменклатуреПриИзменении(Элемент)
    
    Элементы.ЗначениеОтбораПоНоменклатуре.ОграничениеТипа = Новый ОписаниеТипов("СписокЗначений");
    ЗначениеОтбораПоНоменклатуре = Новый СписокЗначений;
    ЗначениеОтбораПоНоменклатуре.ТипЗначения = Новый ОписаниеТипов("Справочник.Номенклатура");
    
КонецПроцедуры


{Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокументаУправляемая.Форма(39)}: Поле объекта не обнаружено (ТипЗначения)
    ЗначениеОтбораПоНоменклатуре.ТипЗначения = Новый ОписаниеТипов("Справочник.Номенклатура");
16 Yea-Yea
 
03.02.14
10:32
смысл процедуры в (15) - при изменении вида сравнения, я должен установить ограничения типа (устанавливается нормально) и каким-то образом типизировать этот список значения
17 Yea-Yea
 
03.02.14
10:42
апну чтоли...
18 RomaH
 
naïve
03.02.14
10:59
все работает
19 RomaH
 
naïve
03.02.14
10:59
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Объект.Реквизит1 = Новый СписокЗначений;
    Объект.Реквизит1.ТипЗначения  = Новый ОписаниеТипов("СправочникСсылка.Банки");
    Реквизит1 = Новый СписокЗначений;
    Реквизит1.ТипЗначения  = Новый ОписаниеТипов("СправочникСсылка.Банки");
КонецПроцедуры
20 Yea-Yea
 
03.02.14
11:03
(19) а что такое объект у тебя? у меня объект - это ДанныеФормыСтруктура (сам документ инвентаризация).
а ЗначениеОтбораПоНоменклатуре - реквизит формы.
21 RomaH
 
naïve
03.02.14
11:05
(20) сам догадайся - я сидел и извращался - делал все сложно
вместо того что бы просто создать обработку и кинуть два реквизита - один в обработку второй в форму
22 Yea-Yea
 
03.02.14
11:26
большое спасибо за помощь! наверно дело было в кривых руках, так как в итоге заработал вот такой код:

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

&НаКлиенте
Процедура ВидСравненияПоНоменклатуреПриИзменении(Элемент)
    
    ИзменитьТипНаСервере(СокрЛП(Элемент.ТекстРедактирования));
    
КонецПроцедуры
23 Yea-Yea
 
03.02.14
11:28
Единственно момент остался.

процедура "ВидСравненияПоНоменклатуреПриИзменении" вызывается при изменении ВидСравненияПоНоменклатуре (список значений, список выбора которой заполняется при создании формы на сервере).

так вот, в этой процедуре текущее значение выбора я могу получить только через "Элемент.ТекстРедактирования" или "Элемент.ВыделенныйТекст". Чувствую что гамногодом отдает. Но как по другому получить текущее значение списка выбора я не нашел (в отладчике тоже вроде все проверил).

может есть другой путь?
24 Yea-Yea
 
03.02.14
11:57
вопрос в (23) снимается )