Имя: Пароль:
1C
1С v8
Как определить "состав даты", для типа дата.
,
0 paulic
 
11.10.11
16:23
Подскажите пожалуйста!

На обычном типе все происходит легко

ПроверяемыйТип = Тип("Дата");
Сообщить(Тип(ПроверяемыйТип));

Вернет тип Дата

А как организовать такую же систему с составом типа даты?

Это нужно для проверки вот такого типа

ПроверяемыйТип = Тип("ДатаВремя");
Если ЗначениеИзОбработки.СодержитТип(ПроверяемыйТип) Тогда
Сообщить(1);
1 unregistered
 
11.10.11
16:26
В квалификатор даты глянуть?
2 paulic
 
11.10.11
16:41
Как?
Не могли бы вы дать код?

Я пробовал таким способом

ПроверяемыйТип = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя);
Сообщить(Тип(ПроверяемыйТип));

но возврашается "Квалификаторы даты"
3 paulic
 
11.10.11
16:56
Хотя бы приблизительно, в какую сторону копать??
4 а кому щас легко
 
11.10.11
17:00
(3) проверять на длину строки (СтрДлина(Дата))?
5 vmv
 
11.10.11
17:02
дарю с барского плеча

Функция ПолучитьПредставлениеТипаПоОписаниюТипа(ПараметрОписаниеТипа) Экспорт
       
   ПредставлениеТипа = "";
   
   Для каждого ТипОписаниеТипа Из ПараметрОписаниеТипа.Типы() Цикл
       
       Если ТипОписаниеТипа = Тип("Булево") Тогда
           ПредставлениеТипа = ПредставлениеТипа+"Булево,";
       ИначеЕсли ТипОписаниеТипа = Тип("Строка") Тогда
           ПредставлениеТипа = ПредставлениеТипа+"Строка("+ПараметрОписаниеТипа.КвалификаТорыСтроки.Длина+"),";
       ИначеЕсли ТипОписаниеТипа = Тип("Дата") Тогда
           ПредставлениеТипа = ПредставлениеТипа+"Дата(" +ПараметрОписаниеТипа.КвалификаТорыДаты.ЧастиДаты+"),";
       ИначеЕсли ТипОписаниеТипа = Тип("Число") Тогда      
           ПараметрыТипаЧисло = "" + ПараметрОписаниеТипа.КвалификаТорыЧисла.Разрядность;
           Если ПараметрОписаниеТипа.КвалификаТорыЧисла.РазрядностьДробнойЧасти Тогда
               ПараметрыТипаЧисло = ПараметрыТипаЧисло+","+ПараметрОписаниеТипа.КвалификаТорыЧисла.РазрядностьДробнойЧасти;
           Иначе
               ПараметрыТипаЧисло = ПараметрыТипаЧисло+","+"0";
           КонецЕсли;
           Если ПараметрОписаниеТипа.КвалификаТорыЧисла.ДопустимыйЗнак = ДопустимыйЗнак.Неотрицательный Тогда
               ПараметрыТипаЧисло = ПараметрыТипаЧисло+"+";
           Иначе    
               ПараметрыТипаЧисло = ПараметрыТипаЧисло+"+/-";
           КонецЕсли;
           ПредставлениеТипа = ПредставлениеТипа+"Число("+ПараметрыТипаЧисло+"),";
       Иначе
           ПредставлениеТипа = ПредставлениеТипа+Строка(ТипОписаниеТипа)+",";
       КонецЕсли;
       
   КонецЦикла;

   СтрДлинаПредставлениеТипа = СтрДлина(ПредставлениеТипа);
   Если СтрДлинаПредставлениеТипа Тогда
        ПредставлениеТипа = Лев(ПредставлениеТипа, СтрДлинаПредставлениеТипа - 1);
   КонецЕсли;
   
   Возврат ПредставлениеТипа;
   
КонецФункции
6 acsent
 
11.10.11
17:03
Не путай Тип и ОписаниеТипа
7 paulic
 
11.10.11
17:19
(6)

Вот так тоже пробовал
ПроверяемыйТип = Новый ОписаниеТипов("Дата"    , , , Новый КвалификаторыДаты(ЧастиДаты.Время));//ЧастиДаты.Время;
Сообщить(Тип(ПроверяемыйТип));

Но возвращает только *Дата*
8 paulic
 
11.10.11
17:22
(5)

Спасибо большое, только я не сильно знаком с 1с, учусь
Подскажите что такое ПараметрОписаниеТипа ?

какое значение передвать в функцию?
9 paulic
 
11.10.11
17:27
(5)
Прошу прощения.
Разобрался)
Спасибо большое за помощь!!!!
10 acsent
 
11.10.11
17:27
значение типа дата всегда содержит дата+время
11 paulic
 
11.10.11
17:28
Содержит оно всегда, но отображается же не всегда.
в зависимости какой состав стоит.
12 acsent
 
11.10.11
17:29
реквизит может быть временем без даты, а значение нет
13 paulic
 
11.10.11
17:32
У меня выборка идет, поэтому это как раз мой случай.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.