|
Как установить тип значения реквизита с типом ЛюбаяСсылка. | ☑ | ||
---|---|---|---|---|
0
Butch
13.07.07
✎
13:49
|
На форме есть реквизит Субконто (тип строка) - содержит наименование субконто; РеквизитСубконто (тип строка) - содержит название требуемого реквизита субконто; и реквизит Значение (тип любая ссылка) - значение реквизита. Вопрос: как установить тип реквизита Значение, если он должен соответствовать типу РеквизитаСубконто.
|
|||
1
Vozhd
13.07.07
✎
13:50
|
(0) "Установить" тип без установки значения нельзя...
|
|||
2
чувак
13.07.07
✎
13:51
|
А в реквизите как отображается тип субконто, типа "Спарвочник сслыка: Основные средства"?
|
|||
3
Butch
13.07.07
✎
13:53
|
(2) реквизиты отображают только строкове наименования Субконто и РеквизитаСубконто соответсвенно. Т.е. например Субконто = "Номенклатура", РеквизитСубконто = "СтавкаНДС".
|
|||
4
Butch
13.07.07
✎
13:55
|
(1) это вы о чем? мне нужно узнать тип значения реквизита РеквизитСубконто и установить ограничение типа на реквизит Значение.\, чтобы пользователь выбирал элементы нужного типа, и ему не приходилось сначала самому выбирать тип реквизита Значение.
|
|||
5
Vozhd
13.07.07
✎
13:56
|
(3) А если элемент плана видов характеристик описывает составной тип данных?
|
|||
6
Vozhd
13.07.07
✎
13:56
|
(4) В общем виде Вы не можете узнать тип реквизита субконто, ибо у вас недостаточно данных даже для того, чтобы узнать тип значения субконто...
|
|||
7
DK_L
13.07.07
✎
14:02
|
Процедура ВидСубконтоПриИзменении(Элемент)
ТипСубконто = ВидСубконто.ТипЗначения; ЭлементыФормы.Субконто.ВыбиратьТип = (ТипСубконто.Типы().Количество() > 1); Субконто = ТипСубконто.ПривестиЗначение(Субконто); КонецПроцедуры |
|||
8
DK_L
13.07.07
✎
14:03
|
Процедура СчетПриИзменении(Элемент)
ЧислоСубконто = Счет.ВидыСубконто.Количество(); Для Сч = 1 По ЧислоСубконто Цикл ТипСубконто = Счет.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения; ЭлементыФормы["Субконто" + Сч].ТолькоПросмотр = Ложь; ЭлементыФормы["Субконто" + Сч].ВыбиратьТип = (ТипСубконто.Типы().Количество() > 1); Если ТипСубконто.ПривестиЗначение(ДокументОбъект["Субконто" + Сч]) <> ДокументОбъект["Субконто" + Сч] Тогда ДокументОбъект["Субконто" + Сч] = ТипСубконто.ПривестиЗначение(ДокументОбъект["Субконто" + Сч]); КонецЕсли; КонецЦикла; МаксКоличествоСубконто = Метаданные.ПланыСчетов.ОсновнойПланСчетов.МаксКоличествоСубконто; Для Сч = (ЧислоСубконто + 1) По МаксКоличествоСубконто Цикл Если Не ДокументОбъект["Субконто" + Сч] = Неопределено Тогда ДокументОбъект["Субконто" + Сч] = Неопределено; КонецЕсли; ЭлементыФормы["Субконто" + Сч].ТолькоПросмотр = Истина; КонецЦикла; КонецПроцедуры |
|||
9
Butch
13.07.07
✎
14:04
|
Процедура РеквизитНачалоВыбора(Элемент, СтандартнаяОбработка)
Если ЗначениеНеЗаполнено(Субконто) тогда Сообщить("Не заполнен вид субконто!"); Возврат; КонецЕсли; СтандартнаяОбработка = Ложь; СписокВыбора = Новый СписокЗначений(); ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные[Субконто]; Тип = ВидСубконто.ТипЗначения; СписокВыбораТипа = Новый СписокЗначений(); Если Тип.Типы().Количество() > 1 Тогда //составной тип субконто, сначала выберем один конкрентый тип Для Каждого Т Из Тип.Типы() Цикл СписокВыбораТипа.Добавить(Т, Строка(Т)); КонецЦикла; ВыбранныйТип = СписокВыбораТипа.ВыбратьЭлемент("Выберите тип субконто",СписокВыбораТипа); Если ВыбранныйТип = Неопределено Тогда Возврат; КонецЕсли; ТипСубконто = ВыбранныйТип.Значение; Иначе ТипСубконто = Тип.Типы()[0]; КонецЕсли; Для Каждого Док Из Метаданные.НайтиПоТипу(ТипСубконто).Реквизиты Цикл СписокВыбора.Добавить(Док.Имя); КонецЦикла; ВыбранныйЭлемент = СписокВыбора.ВыбратьЭлемент("Выберите реквизит вида субконто",СписокВыбора); Если ВыбранныйЭлемент = Неопределено Тогда Возврат; КонецЕсли; Реквизит = ВыбранныйЭлемент; КонецПроцедуры Тип субконто я могу получить |
|||
10
Butch
13.07.07
✎
14:06
|
в переменной "ТипСубконто" содержится тип субконто. Теперь вопрос. Как установить тип реквизита значение.
|
|||
11
DK_L
13.07.07
✎
14:06
|
Субконто = ТипСубконто.ПривестиЗначение(Субконто);
|
|||
12
DK_L
13.07.07
✎
14:10
|
+ еще одна полезная функция
Процедура УстановитьВидимостьСубконто() Для Ном = 1 по 2 Цикл Если (Ном <= Счет.ВидыСубконто.Количество()) И (НЕ Счет.Пустая()) Тогда ЭлементыФормы["НадписьСубконто"+Ном].Заголовок = Строка(Счет.ВидыСубконто[Ном-1].ВидСубконто); ЭлементыФормы["НадписьСубконто"+Ном].Видимость = Истина; ЭлементыФормы["Субконто"+Ном].Видимость = Истина; Иначе ЭлементыФормы["НадписьСубконто"+Ном].Видимость = Ложь; ЭлементыФормы["Субконто"+Ном].Видимость = Ложь; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
13
Butch
13.07.07
✎
14:10
|
как ограничить тип реквизита "Значение", если он имеет тип ЛюбаяСсылка?
|
|||
14
Butch
13.07.07
✎
14:26
|
Пытаясь установить тип по субконто пишу так:
ЭлементыФормы.Значение.ОграничениеТипа.ПривестиЗначение(ТипСубконто); //ничего не выходит.... |
|||
15
Butch
13.07.07
✎
14:31
|
Если вывести сообщением ТипСубконто, то получим на экране, например "Справочник ссылка: Договоры контрагентов"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |