Имя: Пароль:
1C
1С v8
Документы.СодержитТип(Тип"Неопределено") возвращает истину
, ,
0 JesteR
 
11.02.14
10:11
Всем привет.
Конвертнули базу с 8.1 на 8.2, платформа 8.2.19.83 без режима совместимости.

В обработчике заполнения проверяю тип основания.
В 8.2. при вводе нового документа тип основания это Неопределено.
Но, ставлю точку останова Документы.СодержитТип(Тип"Неопределено") возвращает истину, это бага?
1 Wobland
 
11.02.14
10:12
Неопределено входит в любой составной тип
2 Kerk
 
11.02.14
10:15
Определенно неопределено определяется в рамках определенных документов как определенное содержание типа от неопределено.
3 JesteR
 
11.02.14
10:15
(0)Документы.ТипВсеСсылки().СодержитТип

(1)
Документы.ТипВсеСсылки().Типы().Найти(Тип("Неопределено"))
отрабатывает ожидаемо, т.е. не находит.
4 Maxus43
 
11.02.14
10:27
>>В обработчике заполнения проверяю тип основания
а зачем делаешь именно так?
Вощето:
Если Основание = Неопределено Тогда
Возврат;
КонецЕсли;
5 Maxus43
 
11.02.14
10:28
али так:
    Если (Основание <> Неопределено) И (Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Основание))) Тогда
6 JesteR
 
11.02.14
10:31
(4)(5)Спасибо, Кэп.
7 Maxus43
 
11.02.14
10:33
(6) в типовые посмотри, там же это предусмотрено
8 Maxus43
 
11.02.14
10:33
в 1с тоже КЭПы?
9 JesteR
 
11.02.14
10:39
(8) Спасибо за советы, как это решить я понимаю. Мне не понятно почему СодержитТип так неадекватно работает.
Если сделать ТипВсеСсылки().Типы().Найти(ТипЗнч("Неопределено")) он не найдет, а содержит тип возвращает истину.... Не понимаю )))
10 ДенисЧ
 
11.02.14
10:44
(9) По определению.
Найти() - ищет конкретный тип
А СодержитТип() - проверяет на возможность принадлежности типа.
11 Maxus43
 
11.02.14
10:44
считай это фичей, по сути ответ в (1), Неопределено тип неявный в составных, а СодержитТип его видит
12 DrZombi
 
гуру
11.02.14
10:49
(0) Нормально, жить можно. Самое веселая логика у привязки границ. Вот там, точно - "Это нельзя понять, нужно просто знать" :)
13 JesteR
 
11.02.14
10:49
(10)(11)Спасибо! Пошел дописывать.
14 Maxus43
 
11.02.14
10:50
(13) в таких случаях лучше не думать, а брать из типовых, чтоб не было разрыва шаблона)
15 JesteR
 
11.02.14
11:09
(14) Вот как это в типовой Бухе
Если Основание <> Неопределено И ТипОснования <> Тип("Структура") И Метаданные().ВводитсяНаОсновании.Содержит(Основание.Метаданные()) Тогда
16 kiruha
 
11.02.14
11:16
(3)
Документы.ТипВсеСсылки().СодержитТип

Написано же - все ссылки(!)
Неопределено не есть ссылка. Это на пальцах
Составной тип и Документы.ТипВсеСсылки()это разные вещи - это не на пальцах

В составном типе, если значение не задано, тип  Неопределено, т.к. тип не выбран
17 Ненавижу 1С
 
гуру
11.02.14
11:18
1С еще не такое выдумает ))
18 JesteR
 
11.02.14
11:21
Вот это из СП
ДокументыМенеджер (DocumentsManager)
ТипВсеСсылки (AllRefsType)
Синтаксис:
ТипВсеСсылки()
Возвращаемое значение:
Тип: ОписаниеТипов.
Описание:
Получает описание типов, содержащее типы ссылок документов.
19 kiruha
 
11.02.14
12:26
ОпТиповОбщее=Документы.ТипВсеСсылки();
МассивТипов=ОпТиповОбщее.Типы();
ОписаниеТиповКонкретное=Новый ОписаниеТипов(МассивТипов);
Сообщить("Конкретное - "+ОписаниеТиповКонкретное.СодержитТип(Тип("Неопределено"))) ;
Сообщить("Общее - "+ОпТиповОбщее.СодержитТип(Тип("Неопределено"))) ;

Итог
Конкретное - Да
Общее - Да

Тема - фейк