|
v7: 1с++ Как проверить вхождение даты в диапазон? | ☑ | ||
---|---|---|---|---|
0
palpetrovich
06.05.16
✎
14:25
|
ДатаИзв - реквизит Документа Извещение, тип - дата
SELECT Док.ИдДокумента [Док $Документ.Извещение] ,Док.ДатаИзв Дата1 ,CAST(Док.ДатаИзв as DateTime) Дата2 FROM Документ,Извещение Док (nolock) WHERE 1 = 1 AND CAST(Док.ДатаИзв as DateTime) BETWEEN :НачДата AND :КонДата~ ругается: [SQL Server]Conversion failed when converting date and/or time from characr string. наверное правильно ругается, ибо: // Дата1 - 01.12.12 // Дата2 - 01.12.12 // НачДата - '20160501' // КонДата~ - '20160531Z' Научите ка надо пожалста :) |
|||
1
palpetrovich
06.05.16
✎
14:30
|
+(0) на
Док.ДатаИзв BETWEEN :НачДата AND :КонДата~ тоже ругается |
|||
2
Mikeware
06.05.16
✎
14:33
|
ну так модификатор у конечной даты убери
|
|||
3
mikecool
06.05.16
✎
14:34
|
проверь - чего у тебя каст возвращает в скуле
может в дату не кастует |
|||
4
palpetrovich
06.05.16
✎
14:39
|
(2) так это все из-за него?
(3) вроде без "~ " работает, правда КонДата длязапроса на день увеличивать прийдется |
|||
5
palpetrovich
06.05.16
✎
14:39
|
спасибо :)
|
|||
6
palpetrovich
06.05.16
✎
14:46
|
а еще, как в запросе сделать "ключ"? типа:
SELECT (Док.Чтото+'_'+Док.Счемто) as ключ |
|||
7
mikecool
06.05.16
✎
14:48
|
(6) кастануть в строку и сложить
|
|||
8
Mikeware
06.05.16
✎
14:56
|
(4) ну у тебя модификатор превращает дату в строку. потому, что предназначен для поиска в DateTimeIddoc
|
|||
9
Mikeware
06.05.16
✎
14:57
|
(6) так и сделать.
можно кастануть, можно - если это числа - умножать. если даты, то складывать там... |
|||
10
palpetrovich
06.05.16
✎
14:59
|
(7)(8) а как?, че-т не попаду...
CAST(Док.Клиент as Str) CAST(Док.Клиент as String) что там для строки предусмотрено? вемсто String, Str |
|||
11
Mikeware
06.05.16
✎
15:02
|
(10) char? varchar
|
|||
12
palpetrovich
06.05.16
✎
15:06
|
(11) а, спасибо
|
|||
13
Mikeware
06.05.16
✎
15:08
|
(12) открой для себя BOL :-)
|
|||
14
ADirks
06.05.16
✎
15:14
|
вообще-то в данном случае надо писать
Док.ДатаИзв BETWEEN :НачДата~~ AND :КонДата~~ вариант Док.ДатаИзв BETWEEN :НачДата AND :КонДата тоже работает, но имеет место неявное преобразование типа (char(8) --> DateTime) |
|||
15
palpetrovich
06.05.16
✎
15:17
|
(13) обязательно! :)
(14) хм, так тоже работает. А что значит ~~ ? (2 шт) |
|||
16
Mikeware
06.05.16
✎
15:25
|
(15) В тексте запроса модификаторы обозначаются символами “~” или “*” после имени
параметра. Количество символов “~” после имени параметра определяет номер модификатора. Если после имени параметра не указан модификатор, то номер модификатора равен 0. Так как типом «Неопределенный» (char(23)) можно выразить любой тип 1С, для этого существует специальный модификатор, обозначаемый символом “*”, который определен для любого передаваемого типа 1С. Его номер 20. Модификаторы определены для следующих типов 1С: Строка 0: char() - строка как есть; 1: char(23) - должна быть передана позиция документа, из которой будет сформирована строка в формате date_time_iddoc; Дата 0: char(8) - каноническое представление даты; 1: char(9) - каноническое представление даты + символ “Z” (используется для обозначения момента времени конца этой даты); 2: datetime. Агрегатные типы (Перечисление, Справочник, Документ, ВидРасчета, Счет) 0: char(9) - внутренний идентификатор объекта (короткая строка 6+3); 1: char(13) - внутренний идентификатор объекта с видом (длинная строка 4+6 +3); 2: char(15) - внутренний идентификатор объекта с видом и типом (2+4+6+3) (на самом деле такой тип нигде в 1С не используется, модификатор существует исключительно для обратной совместимости); ВидРасчета Кроме 0 и 1, которые работают как для всех агрегатных типов, 2-й определен особо: 2: Зависит от формата ИБ. SQL: int - идентификатор вида расчета; DBF: char(4) - 36-й идентификатор вида расчета; Примеры: Передано значение типа число :ФлагУчастияВРасчетах = 1 :ФлагУчастияВРасчетах * = 'N 1' Передано значение типа дата :ДатаНачала = '20030613' :ДатаКонца ~ = '20030613Z' :ДатаКонца ~~ = {d '2003-06-13'} Передано значение типа Справочник.Контрагенты :Контрагент = ' H6 ' :Контрагент ~ = ' 1W H6 ' :Контрагент * = 'B1 1W H6 ' |
|||
17
palpetrovich
06.05.16
✎
15:28
|
(16) пасиб, будкм думать :)
|
|||
18
Mikeware
06.05.16
✎
15:33
|
(17) а тебя алс-ка то 1с++ есть?
|
|||
19
palpetrovich
06.05.16
✎
15:46
|
(18) дома есть, на работе нет
если не считать того алса где УстановитьТекстовыйПараметр, ВыполнитьИнструкцию.... |
|||
20
Mikeware
06.05.16
✎
15:48
|
(19)
"гиви, ти арбюзы любишь? - кюшать да, а так - нэт" © |
|||
21
palpetrovich
06.05.16
✎
16:06
|
"думать, думаь - трусить надо!!" © :)
|
|||
22
с2д
09.05.16
✎
11:59
|
Боже! Какая некрофилия! Предлагали сдать тестовое задание по _этому_, ушёл не доделав. Убила сама мысль, что придётся несколько лет писать под системой сдохшей ещё в 2009 году.
Люди с УП и СКД работать будут, а тут несколько лет полной профессиональной деградации. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |