Имя: Пароль:
1C
1С v8
ТипЗначения
,
0 Oz11
 
13.12.11
19:20
Объясните популярно, как из переменной с типом ОписаниеТипов вытянуть ее тип значения?
Новый ОписаниеТипов("справочникСсылка.Контаргенты") дает значение Контрагенты и тип ОписаниеТипов.
Как сделать обратное? вытянуть из этого тип СправочникСсылка.Контаргенты?
или я чего-то не понимаю?
1 Живой Ископаемый
 
13.12.11
19:23
давай наоборот, ты расскажешь что тебе нужно сначала
2 DrHiHi
 
13.12.11
19:25
(1) скорее всего он хочет проверить на "СодержитТип()"
3 Oz11
 
13.12.11
19:29
(1) наверное так будет лучше. программно заполняю отбор построителя, и ввожу туда новые отборы. тип значения этого нового отбора берется из характеристики.свойстваобъектов (там есть ТипЗначения) когда программно вытягиваю этот реквизит - его тип Описаниетипов, а значение - ЗначениеСвойствОбъектов (есть такой справочник). мне необходимо как-то из этого вытянуть типЗначения (СправочникСсылка.ЗначенияСвойствОбъектов) и присвоить этот тип новому элементу отбора. вот. надеюсь хоть кому-то удалось понять хоть что-то.
4 Живой Ископаемый
 
13.12.11
19:29
ну... пусть сознается тогда... а то если я начинаю спекулировать на своем воображении, всякий раз кто-то оказывается в кожаном белье и с плеткой... других это ранит.
5 Oz11
 
13.12.11
19:30
делается это для того чтобы пользователь не выбирал каждый раз тип в отборе, а сразу получал необходимый тип
6 Живой Ископаемый
 
13.12.11
19:31
"надеюсь хоть кому-то удалось понять хоть что-то."
Не, у меня не вышло...

:)

Но попробуй почитать еще про XMLТипЗнч и другие функции оттуда же...
7 DrHiHi
 
13.12.11
19:35
(3) у меня такое ощущение, что выйдет отличный "г@внокод" ;))
8 unregistered
 
13.12.11
19:40
ЗначениеПоУмолчаниюДляДанногоОписанияТипа = ИмеющеесяУМеняОписаниеТипа.ПривестиЗначение();
9 Oz11
 
13.12.11
19:42
так вот дело в том что нет ЗначениеПоУмолчаниюДляДанногоОписанияТипа. если в описании типов число - то сатвим число, если справочник - то ставим справочник.
10 unregistered
 
13.12.11
19:44
(9) ЗначениеПоУмолчаниюДляДанногоОписанияТипа - эта та переменная которую ты получишь. Естественно до выполнения метода ПривестиЗначение() её еще нет.

Если твоё описание типа - это описание типа числа, то в результате ты получишь ЗначениеПоУмолчаниюДляДанногоОписанияТипа = 0.

Если твоё описание типа - это описание типа СправочникСсылка.Контрагенты, то в результате ты получишь ЗначениеПоУмолчаниюДляДанногоОписанияТипа = пустая ссылка на справочник Контрагенты.
11 Oz11
 
13.12.11
19:48
(10) огромнейшее спасибо. вот что значит не внимательно читать синтакс помощник.
12 DrShad
 
13.12.11
19:52
(10) а если составной тип?
13 Oz11
 
13.12.11
19:56
(12) тогда ветка еще не закрыта.
14 DrShad
 
13.12.11
20:01
(13) тогда вдумчиво курим СП, сомнения выкладываем сюда, а если что не так мы дадим пинка в нужном направлении :)
15 Oz11
 
13.12.11
20:03
Выб = Рез.Выбрать();
       Пока Выб.Следующий() Цикл
           Параметр1 = "Значение_" + СокрЛП(Выб.Ссылка);
           ПостроительОтчета.Отбор.Добавить(Параметр1,,Выб.Наименование);
           ОтборСвойств = ПостроительОтчета.Отбор.Найти(Параметр1);
           ТипЗначенияСвойства = Выб.Ссылка.ТипЗначения.ПривестиЗначение();
           ОтборСвойств.Значение = ТипЗначенияСвойства;
       КонецЦикла;        
отрывок кода где перебираю свойства (новый элементы отбора), устанавливаю их и устанавливаю им тип. Если в ОписанииТипов составной тип - то устанавливается только один, видать тип по умолчанию. как быть?
16 DrShad
 
13.12.11
20:04
а что СП пишет по этому поводу?
17 Oz11
 
13.12.11
20:06
а нет, не туда глянул. ничего не ставит - так и остается без определенного типа. СП сейчас пролистаю. минутку
18 Oz11
 
13.12.11
20:07
по методу ПривестиЗначение() ничего толкового, если не указан параметр - возвращает значение по умолчанию
19 DrShad
 
13.12.11
20:10
Если значение не передано, то выдается значение по умолчанию для данного описания типа.
20 DrShad
 
13.12.11
20:11
ОписаниеТипов (TypeDescription)

Методы:

ПривестиЗначение (AdjustValue)
СодержитТип (ContainsType)
Типы (Types)
21 Oz11
 
13.12.11
20:13
да, так и есть. но для свойства я указал составной тип (спраовчник + число). и функция ПривестиЗначение() вернула все описание типов, а не (спарвочник + число). может метод типы() поможет? но как с ним работать? даже если выужу из него типы, как их подставить отбору?
22 DrShad
 
13.12.11
20:15
а что он возвращает?
23 DrShad
 
13.12.11
20:15
Возвращаемое значение:

Тип: Массив.
Массив значений типа Тип, состоящий из используемых типов.
24 Oz11
 
13.12.11
20:15
верней возвращает она неопределено (ПривестиЗначение())
25 DrShad
 
13.12.11
20:16
а имея массив, можно ведь получить любой из его элементов и через ПривестиЗначение() получить что нам нужно?
26 DrShad
 
13.12.11
20:16
Типы() смотри ТИПЫ()
27 Bober
 
13.12.11
20:20
если для пользователя, то у поля ввода есть ограничение типа.
Если точно знаешь какой должен быть тип, то получается значение по-умолчанию этого типа и  подставляешь в значение если оно неопределено.

Можно посмотреть в типовых, например в РКО контрагент может быть, фил лицом или контрагентом в зависимости от вида операции.
28 DrShad
 
13.12.11
20:23
(27) и они там таки через ОписаниеТипов() определяют какой должен быть тип? или от вида операции?
29 Oz11
 
13.12.11
20:43
всем огромное спасибо. если стоит составной тип - то подходит и неопределено на выходе, - это со слов заказчика. но мне очень интересно как отбору проставить нужный тип в такой ситуации. да, делаем Типы() и получаем массив, потом для каждого элемента массива ПривестиЗначение(), но как эти, например два значения (Число и Справочник) подставить в отбор?
30 DrShad
 
13.12.11
20:46
(29) только один из них
31 DrShad
 
13.12.11
20:47
либо отбор ставить на вхождение в список, а в списке можно выбрать значения различного типа
32 Oz11
 
13.12.11
20:47
(30) исчерпывающий ответ. )) даже добавить нечего.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.