| 
    
            
         
         | 
    
  | 
Управляемая форма и поле выбора составного типа | ☑ | ||
|---|---|---|---|---|
| 
    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) снимается )     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |