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