Имя: Пароль:
1C
 
Беда с "ТипЗнч" при переходе с 8.1 на 8.2
0 Виталий
 
15.06.10
15:31
Недавно перешли с 8.1 на 8.2. Начались проблемы с некоторыми отчетами. Порылся в коде и нашел, что в 8.2 функция "ТипЗнч" возвращает значение, отличное от той же функции в 8.1. Например, Тип("ДокументСсылка.ПоступлениеТоваровУслуг") в 8.1 возвращает "Документ ссылка: Поступление товаров и услуг", а в 8.2 "Поступление товаров и услуг". В некоторых стандартных отчетах анализируются первые 16 символов возвращаемого значения. Теперь эти отчеты не работают. Как-то можно в 8.2 получить такое же описание типов, как в 8.1?
1 Ненавижу 1С
 
гуру
15.06.10
15:38
Тип и ТипЗнч возвращают не строки
2 Tafa
 
15.06.10
15:38
ТипЗнч() что в 8.1, что в 8.2 возвращает значение типа "Тип", и работать с ним нужно соответственно.
3 Ленинград
 
15.06.10
15:41
В некоторых стандартных отчетах анализируются первые 16 символов
)))))))
4 hhhh
 
15.06.10
15:42
это какая конфигурация?
5 Виталий
 
15.06.10
15:48
(1) Я не про типы говорю, а про возвращаемые значения. Они разные!
6 Виталий
 
15.06.10
15:48
(4) Обновили до 8.2.10.82
7 Ненавижу 1С
 
гуру
15.06.10
15:49
(5) возвращаемые значения одинаковые, строковые их представления разные
8 Sadovnikov
 
15.06.10
15:49
(5) Почитай ОЧЕНЬ внимательно, что именно возвращает ТипЗнч.
9 Виталий
 
15.06.10
15:50
(7) Хорошо, тогда как понять, что тип является ссылкой именно на объект документ?
10 Виталий
 
15.06.10
15:51
(8) Лучше бы не умничали, а помогли советом
11 Tafa
 
15.06.10
15:51
(9) ТипЗнч(МояПеременная) = Тип("ДокументОбъект.МойДокумент")
12 ptiz
 
15.06.10
15:52
(9) Документы.ТипВсеСсылки().Содержит(ПроверяемыйТип)
13 RomaH
 
naïve
15.06.10
15:52
Метаданные.Документы.СодержитТип() вроде что-то типа такого
14 Ненавижу 1С
 
гуру
15.06.10
15:52
(9) юзать например метаданные
15 ARIST_A
 
15.06.10
15:53
Смотрите...

Пример кода:
Сообщить(""+Строка(ТипЗнч(Объект.ДокСсылка)));
Об = Объект.ДокСсылка.ПолучитьОбъект();
Сообщить(""+Строка(ТипЗнч(Об)));
Результат кода на 8.1:
               Документ ссылка: Коммерческое предложение
               Документ объект: Коммерческое предложение
Результат кода на 8.2:
               Коммерческое предложение
               Документ объект: Коммерческое предложение

Вот как можно переписать условие.

Если ТипЗнч(Документ)=Тип("ДокументОбъект."+Документ.Метаданные().Имя) Тогда
   Док = Документ.Ссылка;
ИначеЕсли ТипЗнч(Документ)=Тип("ДокументСсылка."+Документ.Метаданные().Имя) Тогда
   Док = Документ;
16 Sadovnikov
 
15.06.10
15:54
(10) А это и был совет. Причем, очень верный совет.
17 Виталий
 
15.06.10
16:02
(12) То что надо! Спасибо!
18 Виталий
 
15.06.10
16:03
(16) Совет был в (12)
19 Sadovnikov
 
15.06.10
16:03
(18) Э нет... В (12) был не совет, а написанный код.
20 Виталий
 
15.06.10
16:03
(15) Спасибо, но в (12) мне уже помогло
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.