Имя: Пароль:
1C
 
Пустой реквизит типа "Дата" - обработка в запросе?
0 Admin_Net_1C
 
13.10.09
08:58
Подскажите плиз, есть справочник "_ЗадачиТА", у него есть реквизит "ПланВыполнение" типа "Дата". При записи нового элемента справочника:
ВремСпр.Новый();
ВремСпр.ФактВыполнение = ПолучитьПустоеЗначение("Дата");
в таблицу SQL Servera записывается выражение вида:
1753-01-01 00:00:00.000
При выполнении запроса:

ТекстЗапроса = "
|SELECT
|    (CASE RTrim($Спр.Статус)
|        WHEN 'Поставлена' THEN 1
|        WHEN 'Выгружена' THEN 2
|        WHEN 'Выгружена' THEN 4
|     END) as флНомРисунка,
|    $Спр.ТорговыйАгент as [ТоргАгент $Справочник.Сотрудники],
|    $Спр.ПланВыполнение as ПланВыполнение,
//|    (CASE WHEN RTrim(LTrim($Спр.ФактВыполнение)) <> ''
//|    (CASE WHEN IsEmpty($Спр.ФактВыполнение) = False
//|        THEN $CAST(RTrim($Спр.ФактВыполнение) as DateTime)
//|        ELSE ''
//|     END) as ФактВыполнение,
|    $Спр.ФактВыполнение as ФактВыполнение,
|    RTrim($Спр.Статус) as Статус,
|    $Спр.Клиент as [Клиент $Справочник.Контрагенты],
|    $Спр.ТорговаяТочка as [ТоргТочка $Справочник.АдресаДоставки],
|    $Спр.Задача as Задача,
|    Спр.ID as [ЭлСпр $Справочник._ЗадачиТА]
|FROM
   $Справочник._ЗадачиТА as Спр (nolock)
|WHERE
|    (Спр.IsMark = 0)
|";

тзВрем = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

в поле тзВрем.ФактВыполнение встает значение '01.01.53', как правильно написать запрос, чтобы в результате это была пустая дата?
1 ТелепатБот
 
гуру
13.10.09
08:58
2 Chum
 
13.10.09
09:07
пустая дата = '01.01.1753'
3 Admin_Net_1C
 
13.10.09
09:10
(2)?
4 Admin_Net_1C
 
13.10.09
09:11
(2)
CASE WHEN RTrim(LTrim($Спр.ФактВыполнение)) <> '01.01.1753'
THEN $CAST(RTrim($Спр.ФактВыполнение) as DateTime)
ELSE ''
END

так?
5 Chum
 
13.10.09
09:12
ну что непонятного? ПолучитьПустоеЗначение("Дата") или дата(0) возвращают значение '01.01.1753', тип Дата

Если надо подучить в запросе пустые с точки зрения 1С даты, то ставь условие вида реквизитТипаДата = '01.01.1753'
6 Chum
 
13.10.09
09:13
зачем RTrim($Спр.ФактВыполнение) ? разве даты просто сравнить нельзя?
7 Admin_Net_1C
 
13.10.09
09:15
CASE WHEN $Спр.ФактВыполнение <> '01.01.1753' - помогло, сенкс
8 Chum
 
13.10.09
09:16
вот вьюшкой чейчас нарисовал:

SELECT     ROW_ID, DateBegin
FROM         dbo.JournRaschet
WHERE     (DateBegin = CONVERT(DATETIME, '1753-01-01 00:00:00', 102))

или

SELECT     ROW_ID, DateBegin
FROM         dbo.JournRaschet
WHERE     (DateBegin <> CONVERT(DATETIME, '1753-01-01 00:00:00', 102))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший