![]() |
|
v8: Ограничение типа для списка значений на УФ продолжение | ☑ | ||
---|---|---|---|---|
0
ARH_1980
20.03.13
✎
00:28
|
Опять такой же случай - есть управляемая форма с реквизитом типа ТаблицаЗначений, одна из колонок которой имеет составной тип, один из которых СписокЗначений. Хотелось бы чтобы при добавлении строки в список значений можно было выбирать тип из узкого набора типов (например, число, строка, булево), а не из всех возможных.
Ответа я так и не нашёл, решил немного коряво, но работает: Процедура ПараметрыЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ТД = Элементы.ПараметрыФункции.ТекущиеДанные; Если Не ТипЗнч(ТД.Значение) = Тип("СписокЗначений") Тогда ТД.Значение = Новый СписокЗначений; МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("Число")); МассивТипов.Добавить(Тип("Строка")); МассивТипов.Добавить(Тип("Булево")); МассивТипов.Добавить(Тип("Дата")); ОписаниеТипов = Новый ОписаниеТипов(МассивТипов,Новый КвалификаторыЧисла(25, 9,ДопустимыйЗнак.Неотрицательный)); ТД.Значение.ТипЗначения = ОписаниеТипов; КонецЕсли; КонецПроцедуры Т. е. колдовать надо было не с элементом а с значениями реквизита, и причём свойство "ТипЗначения" у него появляется только после выбора типа "СписокЗначений" из составного типа, это событие я отследить не смог, так что пришлось реквизиту присвоить новый СписокЗначений. Работает, с одним лишь неудобством, что если Значение было например, число, то при начале выбора значение обнуляется Может как то можно уловить событие между выбором составного типа и открытием Формочки СпискаЗначений? |
|||
1
Команданте
20.03.13
✎
00:47
|
неудачная формализация действительности
где в реальности ты такие реляции встречал |
|||
2
ARH_1980
20.03.13
✎
13:44
|
Разобрался, оказывается это событие ПриИзменении, только оно начтупает 2 раза : выборе типа из составного и при собственно изменении, для того чтобы отследить 1-е событие пришлось ввести меременную модуля
&НаКлиенте Перем ЗначениеТип; И вот собственно событие: &НаКлиенте Процедура ПараметрыЗначениеПриИзменении(Элемент) ТД = Элементы.ПараметрыФункции.ТекущиеДанные; Если ЗначениеТип <> ТипЗнч(ТД.Значение) Тогда Если ТипЗнч(ТД.Значение) = Тип("СписокЗначений") Тогда ТД.Значение = Новый СписокЗначений; МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("Число")); МассивТипов.Добавить(Тип("Строка")); МассивТипов.Добавить(Тип("Булево")); МассивТипов.Добавить(Тип("Дата")); ОписаниеТипов = Новый ОписаниеТипов(МассивТипов,Новый КвалификаторыЧисла(25, 9,ДопустимыйЗнак.Неотрицательный)); ТД.Значение.ТипЗначения = ОписаниеТипов; КонецЕсли; ЗначениеТип = ТипЗнч(ТД.Значение); КонецЕсли; КонецПроцедуры |
|||
3
ARH_1980
20.03.13
✎
14:05
|
Не, не так немного, вот эта строчка уже не нужна:
ТД.Значение = Новый СписокЗначений; (для этого же всё и искалось) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |