Имя: Пароль:
1C
1С v8
Как выразить дату в запросе 8.1
,
0 DenSpb
 
08.07.13
15:05
Почему не работает в запросе    ДАТАВРЕМЯ(ВЫРАЗИТЬ(ЗатратыНаОбработку.ПериодГод КАК Число), 1, 1) ? Почему говорит, что "Неверные параметры ДатаВремя"?
1 Волшебник
 
08.07.13
15:06
см. НачалоПериода и Формат
2 Ненавижу 1С
 
гуру
08.07.13
15:07
Функция ГОД
Данная функция предназначена для вычисления номера года из значения типа ДАТА.

Параметр функции – это выражение, имеющее тип ДАТА.

Если в качестве параметра фигурирует значение типа Дата, то результатом функции будет значение типа ЧИСЛО. Если в качестве параметра будет использовано значение NULL, то результатом функции также будет значение NULL. Другие значения считаются недопустимыми и приводят к ошибке исполнения запроса.
3 Поросенок Петр
 
08.07.13
15:08
(1)(2) Оба мимо.

Квалификаторы числа не спасают?
4 DenSpb
 
08.07.13
15:09
(1)    НАЧАЛОПЕРИОДА(<Дата>, <Период>)   - все равно нужна дата, а чтобы ее получить надо использовать ДАТАВРЕМЯ
5 shuhard
 
08.07.13
15:09
(3) и ты с ними
6 DenSpb
 
08.07.13
15:09
(3) это как?
7 Maxus43
 
08.07.13
15:09
(3) дак запрос...
легче НАЧАЛОПЕРИОДА(ЗатратыНаОбработку.Период, ГОД)
8 Ненавижу 1С
 
гуру
08.07.13
15:09
ДАТАВРЕМЯ ни разу не функция
9 Поросенок Петр
 
08.07.13
15:10
(6)
...КАК Число(4) ), 1
10 Поросенок Петр
 
08.07.13
15:10
Но имхо не взлетит.
11 DenSpb
 
08.07.13
15:11
У меня есть реквизит ГОД тип число(4) и месяц в виде перечисления. Месяц я могу получить через ВЫБОР. Соответственно, по номеру года и месяца мне нужно получить дату в запросе.
12 Поросенок Петр
 
08.07.13
15:13
А нахрена тогда "выразить"?
13 Мыш
 
08.07.13
15:13
ВЫРАЗИТЬ не поменяет тип значения. Оно только для представления.
14 Ненавижу 1С
 
гуру
08.07.13
15:13
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1),ГОД,ТвойГод)

ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1),ГОД,ТвойГод),МЕСЯЦ,ТвойМесяц)
15 Fragster
 
гуру
08.07.13
15:18
ДАТАВРЕМЯ(ТвойГод,1,1)
ДАТАВРЕМЯ(ТвойГод,ТвойМесяц,1)
16 Мыш
 
08.07.13
15:18
+(13) Блин, т.е. не так. ВЫРАЗИТЬ служит для приведения составного типа к одному типу из его составляющих. Во всяком случае так в справке. Ну и тоже в своё время напарывался на невозможность преобразовать тип значения внутри запроса.
17 Ненавижу 1С
 
гуру
08.07.13
15:19
(15) не взлетит, см (8)
18 Fragster
 
гуру
08.07.13
15:19
(17) тогда не взлетит и (14)
19 Ненавижу 1С
 
гуру
08.07.13
15:20
(18) обоснуй?
20 kumena
 
08.07.13
15:20
(0) я задавал подобный вопрос на партнерском, ответ такой
"В языке запросов ДатаВремя это не функция, а литерал типа дата. Соответственно в нем можно использовать только константные значения."
21 Ненавижу 1С
 
гуру
08.07.13
15:22
(20) зачем задавал? об этом написано в справке конфигуратора
22 kumena
 
08.07.13
15:23
не прочитал :)
23 DenSpb
 
08.07.13
15:24
(14) запрос отрабатывает, но при переходе через конец года, выдает неправильное значение, но работает.
24 DenSpb
 
08.07.13
15:29
(14) ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1),ГОД,ТвойГод-1),МЕСЯЦ,ТвойМесяц-1) Вот так правильно!!!
Всем спасибо!!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.