|
Как определить тип переменной (Объект, ссылка, менеджер)? | ☑ | ||
---|---|---|---|---|
0
1Сергей
26.12.13
✎
15:30
|
ТипЗнч что-то не придумаю как применить
ЗЫ сорри за тупняк |
|||
1
Gusarm
26.12.13
✎
15:33
|
Встроенные функции языка (Script functions)
ТипЗнч (TypeOf) Синтаксис: ТипЗнч(<Значение>) Параметры: <Значение> (обязательный) Тип: Произвольный. Значение, тип которого необходимо получить. Возвращаемое значение: Тип: Тип. Описание: Получает тип значения. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда ... КонецЕсли; |
|||
2
Maxus43
26.12.13
✎
15:34
|
что конкретно не получается?
|
|||
3
1Сергей
26.12.13
✎
15:34
|
(1) там может быть Номенклатура, а может быть Склад. Со всеми справочниками сравнивать?
|
|||
4
Avganec
26.12.13
✎
15:35
|
(3) альтернатива? зачем тебе знать тип? по другому никак не ограничить?
|
|||
5
Gusarm
26.12.13
✎
15:36
|
ты напиши, что конкретно тебе нужно
|
|||
6
1Сергей
26.12.13
✎
15:37
|
(5) нужно определить, является ли переменна Ссылкой, или Объектом, или Менеджером, или строкой.
|
|||
7
1Сергей
26.12.13
✎
15:38
|
вот так могу определить, что переменная является документом ссылкой:
Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Документ)) Как проверить, что она Объект? |
|||
8
Avganec
26.12.13
✎
15:42
|
(7) Найти(ТипЗнч(Объект), "Объект") такое что-то?
|
|||
9
1Сергей
26.12.13
✎
15:43
|
(8) не самое удачное решение. Есть, например, такой справочник: ЗначенияСвойствОбъектов
|
|||
10
Avganec
26.12.13
✎
15:45
|
(9) согласен, но какой вопрос изначально? ты хочешь вообще по переменной определить куда она относится? или что именно?
|
|||
11
Zero on a dice
26.12.13
✎
15:47
|
метаданные(), не?
|
|||
12
Zero on a dice
26.12.13
✎
15:52
|
хотя костылей больше может получиться
|
|||
13
Wobland
26.12.13
✎
15:57
|
xmlтип или что-то в этом роде подойдёт?
|
|||
14
Maxus43
26.12.13
✎
15:57
|
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Документ.Ссылка)) И Не окументы.ТипВсеСсылки().СодержитТип(ТипЗнч(Документ)) ТОгда
вот тебе и объект |
|||
15
1Сергей
26.12.13
✎
16:00
|
(13)
ы4 = XMLТипЗнч(Документы.РеализацияТоваровУслуг.НайтиПоНомеру("АТР00036986", Дата(2013, 10, 3))); ы5 = XMLТипЗнч(Документы.РеализацияТоваровУслуг.НайтиПоНомеру("АТР00036986", Дата(2013, 10, 3)).Ссылка); ы6 = ы4 = ы5; // Истина |
|||
16
1Сергей
26.12.13
✎
16:01
|
(15) + Оно не знает что такое Объект, что такое ссылка
|
|||
17
1Сергей
26.12.13
✎
16:01
|
Ладно, видимо на программировать так, чтобы не было желания (0)
|
|||
18
Maxus43
26.12.13
✎
16:01
|
(15) у тебя там нет Объекта если чо, ПолучитьОбъект Забыл
|
|||
19
1Сергей
26.12.13
✎
16:01
|
*видимо, надо программировать так...
|
|||
20
1Сергей
26.12.13
✎
16:02
|
(18) Серъёзно? А "Документы.РеализацияТоваровУслуг.НайтиПоНомеру("АТР00036986", Дата(2013, 10, 3))" что вернет?
|
|||
21
Maxus43
26.12.13
✎
16:02
|
но всё ранво XMLТипЗнч сведётся к (8)
|
|||
22
Maxus43
26.12.13
✎
16:02
|
(20) ссылку конечно. с какого бодуна он в объект превратится?
|
|||
23
Wobland
26.12.13
✎
16:03
|
(20) ссылку
|
|||
24
программистище
26.12.13
✎
16:04
|
Если Объект.Ссылка = Объект Тогда
это ссылка Иначе объект КонецЕсли; |
|||
25
1Сергей
26.12.13
✎
16:05
|
(22) (23) Точно. ступил
|
|||
26
Maxus43
26.12.13
✎
16:05
|
В общем конечно надо не допускать такого, это кривой код получается когда не знаешь что к тебе в процедуру лезет
|
|||
27
Wobland
26.12.13
✎
16:05
|
(24) особенно хорошо это работает со строками
|
|||
28
программистище
26.12.13
✎
16:07
|
Если ТипЗнч(Объект) = Тип("Строка")
тогда строка ...промежуточные проверки... ИначеЕсли Объект.Ссылка = Объект Тогда это ссылка Иначе объект КонецЕсли; |
|||
29
программистище
26.12.13
✎
16:07
|
(27) так подойдет (28) ?
|
|||
30
Wobland
26.12.13
✎
16:08
|
(29) господин ведущий, отвечать будет 1Сергей
|
|||
31
программистище
26.12.13
✎
16:08
|
разрешаю
|
|||
32
1Сергей
26.12.13
✎
16:10
|
(28) а кроме строки, Ссылки и объекта есть ещё другие типы. Например, Менеджер
|
|||
33
1Сергей
26.12.13
✎
16:13
|
Ладно, не парьтесь, ребята. Как я уже сказал - (17)
Переделал логику так, что в функцию передаются либо строка, либо объект, либо ссылка. А там:
|
|||
34
Maxus43
26.12.13
✎
16:13
|
(32) такой зоопарк только через Попытку Исключение разбирать, оно надо? переделай лучше
|
|||
35
hhhh
26.12.13
✎
16:14
|
(32) ну в типовые слазий. В общие модули, планы обмена. Там этот вопрос досконально обсосан.
|
|||
36
1Сергей
26.12.13
✎
16:14
|
(34) прав. изблавлюсь от попытки
|
|||
37
Kvestin
26.12.13
✎
21:44
|
(36)
Если у тебя осталось три варианта Строка Объект и Ссылка, то первый отсей по Если ТипЗнч(Документ) = Тип("Строка") Далее просто бери Документ = Документ.Ссылка и у тебя гарантировано в Документ будет ссылка. Конечно если тебе не нужен сам передаваемый объект. |
|||
38
Мимохожий Однако
26.12.13
✎
21:50
|
В типовых есть общий модуль с функциями проверки на тип
|
|||
39
User_Agronom
26.12.13
✎
21:55
|
А преобразовать в строку и поиском по ключевому слову? Не, не пойдёт?
|
|||
40
Kvestin
26.12.13
✎
22:19
|
(39) см. (9).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |