Имя: Пароль:
1C
1С v8
Как указать явно в тексте запроса дату
0 artpi
 
07.08.12
07:40
Добрый день!
Вопрос: Нужно передать текст запроса в другую базу. Как указать в запросе дату в явном виде

Делаю так, не работает:
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты('20120401000000', '20120430235959', Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты

Хелп! Не знаю в какой формате указывать. В инете найти не смог!
1 Cube
 
07.08.12
07:43
ДАТАВРЕМЯ()
2 artpi
 
07.08.12
07:48
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(ДАТАВРЕМЯ("+НачалоДня(НачПериода)+"), ДАТАВРЕМЯ("+КонецДня(КонПериода)+"), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты

не работает
3 chelentano
 
07.08.12
07:50
(2) "не работает" - а разве должно?
4 Web00001
 
07.08.12
07:52
Канеч не работает НачалоДня нет такой функции в запросах жеж
5 Cube
 
07.08.12
07:52
(2) О, ужас... Ты про справку (кнопочка F1) слышал что-нибудь? Вот выдержка оттуда:

Литерал типа ДАТА записывается в виде:

ДАТАВРЕМЯ ( <Целое число>, <Целое число>,
<Целое число>[, <Целое число>,
<Целое число>, <Целое число>] )

Значения типа дата задаются с помощью ключевого слова ДАТАВРЕМЯ, после которого в скобках последовательно указываются год, месяц, день, час, минута, секунда. Последние три указывать необязательно.

Максимальная дата которую возможно задать при помощи литерала ДАТАВРЕМЯ – 31.12.3999 23:59:59.
6 Маратыч
 
07.08.12
07:57
(5) О ужас, через две тысячи лет 1Ска откажется работать! :)
7 artpi
 
07.08.12
08:06
Функция ДатаВСтрокуВЗапрос(Дата1С)
               
               Строка = "ДатаВремя("+Формат(Год(Дата1С),"ЧГ=0")
               +","+ ?(СтрДлина(Строка(Месяц(Дата1С)))   < 2, "0" + Строка(Месяц(Дата1С)) ,  Строка(Месяц(Дата1С)))
               +","+ ?(СтрДлина(Строка(День(Дата1С)))    < 2, "0" + Строка(День(Дата1С)),    Строка(День(Дата1С)))
               +","+ ?(СтрДлина(Строка(Час(Дата1С)))     < 2, "0" + Строка(Час(Дата1С)),     Строка(Час(Дата1С)))  
               +","+ ?(СтрДлина(Строка(Минута(Дата1С)))  < 2, "0" + Строка(Минута(Дата1С)),  Строка(Минута(Дата1С)))
               +","+ ?(СтрДлина(Строка(Секунда(Дата1С))) < 2, "0" + Строка(Секунда(Дата1С)), Строка(Секунда(Дата1С)))+")";
               
               Возврат Строка;
КонецФункции



РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты("+ДатаВСтрокуВЗапрос(НачалоДня(НачПериода))+","+ДатаВСтрокуВЗапрос(КонецДня(КонПериода))+", Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
8 artpi
 
07.08.12
08:06
Победил! Всем спасибо!
9 Cube
 
07.08.12
08:10
(7) Ты безнадежен)))

Вариант 1:

ТекстЗапроса = "...
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(ДАТАВРЕМЯ(2012, 04, 01), ДАТАВРЕМЯ(2012, 04, 30, 23, 59, 59), Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
..."


Вариант 2:

ТекстЗапроса = "...
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(ДатаНач, ДатаКон, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
..."
Запрос.УстановитьПараметр("ДатаНач", ТекущаяДата());
Запрос.УстановитьПараметр("ДатаКон", КонецДня(ТекущаяДата()));
10 chelentano
 
07.08.12
08:12
(7) это что сейчас было?
11 aleks-id
 
07.08.12
08:15
>>?(СтрДлина(Строка(Месяц(Дата1С)))   < 2, "0" + Строка(Месяц(Дата1С)) ,  Строка(Месяц(Дата1С))
рукалицо.жпг
12 Живой Ископаемый
 
07.08.12
08:16
чуваки, он из Челябинска...
13 aleks-id
 
07.08.12
08:16
при этом в (5) четко написано ДАТАВРЕМЯ ( <Целое число>!!!
нахрена там "0" + Строка(Месяц(Дата1С))
14 artpi
 
07.08.12
08:29
(9) умник! ты читал для чего мне это?
Мне нужно текст запроса в другую базу передать! и там выполнить!!!
Иначе нафига бы я запаривался!

Вариант 1 и вариант 2 (особенно) не катят, т.к. эти даты ПЕРЕМЕННЫЕ!
15 artpi
 
07.08.12
08:30
(12) Не завидуй ;-)
16 artpi
 
07.08.12
08:31
Как я вас обожаю умники мля!!!!
нет чтобы помочь, сразу умничать! Ну прям блистают тут все своим остроумием!
17 artpi
 
07.08.12
08:33
Тема закрыта!
18 Живой Ископаемый
 
07.08.12
08:34
2(14) вариант 1 по-прежнему катит. не ври.
Ну блин, некоторые блистают тупостью, и его нужно как-то оттенять, поэтому приходится блистать остроумием.
19 Живой Ископаемый
 
07.08.12
08:34
2(17) нужно три раза повторить. Такие на этом форуме правила.
20 artpi
 
07.08.12
08:44
(18) Работает, но не катит!
Дата - переменная.
21 Живой Ископаемый
 
07.08.12
08:48
ТекстЗапроса = "...
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(ДАТАВРЕМЯ("+Год(МояДата)+","+Месяц(МояДата)+","+День(МояДата)+")
22 Serg_1960
 
07.08.12
08:57
А если учесть, что тс нужно начало дня и конец дня, то время можно добавлять строкой. Типа так:
"...ДАТАВРЕМЯ(" + Год(Дата) + "," + Месяц(Дата) + "," + День(Дата) + "23,59,59"...
23 Serg_1960
 
07.08.12
08:59
(22) Упс :) ",23,59,59"
24 Cube
 
07.08.12
09:00
Седня чо, пятница уже?))
25 artpi
 
07.08.12
09:00
Молодцы! :-))))