Имя: Пароль:
1C
1С v8
v8: дата и время из разных дат в запросе
,
0 Botanik
 
21.10.11
10:55
Всем доброго дня.
Подскажите пожалуйста, можно ли в запросе из одной даты взять дату а из другой время?
объединить ДАТАВРЕМЯ()
Пример запроса:
|ВЫБРАТЬ
       |    ДанныеПриложения.Ключ,
       |    ДанныеПриложения.ДатаДоставки,
       |    ДанныеПриложения.ЕстьЗапись,
       |    СтрокаРасписание.ТоварПривоз КАК Номенклатура,
       |    СтрокаРасписание.ТоварУвоз,
       |    СтрокаРасписание.ДеньНедели КАК ДеньНедели,
       |    СтрокаРасписание.ВидЗамены КАК Направление,
       |    СтрокаРасписание.ВремяЗаменыС,
       |    СтрокаРасписание.ВремяЗаменыПо,
       |    СтрокаРасписание.Количество,
       |    СтрокаРасписание.Ссылка КАК Приложение,
       |    СтрокаРасписание.Ссылка.Контрагент КАК Контрагент,
       |    ИСТИНА КАК Работа,
       |   ДАТАВРЕМЯ(Год(ДанныеПриложения.ДатаДоставки),Месяц(ДанныеПриложения.ДатаДоставки),День(ДанныеПриложения.ДатаДоставки),Час(СтрокаРасписание.ВремяЗаменыС),Минута(СтрокаРасписание.ВремяЗаменыС),Секунда(СтрокаРасписание.ВремяЗаменыС)) КАК ДатаОбщ
       |ИЗ
       |    ДанныеПриложения КАК ДанныеПриложения
       |        ЛЕВОЕ СОЕДИНЕНИЕ СтрокаРасписание КАК СтрокаРасписание
       |        ПО ДанныеПриложения.Ключ = СтрокаРасписание.Ключ,
       |    КлючиПриложения КАК КлючиПриложения");
1 Wobland
 
21.10.11
10:57
а почему бы и нет, Ватсон
2 luckyluke
 
21.10.11
10:57
ДАТАВРЕМЯ(Год(дата1),Месяц(Дата1), День(дата1),Час(Дат2),Минута(дата2),секунда(дата2))
3 luckyluke
 
21.10.11
10:58
(2) а ну у тебя уже есть ДАТАВРЕМЯ(Год(ДанныеПриложения.ДатаДоставки),Месяц(ДанныеПриложения.ДатаДоставки),День(ДанныеПриложения.ДатаДоставки),Час(СтрокаРасписание.ВремяЗаменыС),Минута(СтрокаРасписание.ВремяЗаменыС),Секунда(СтрокаРасписание.ВремяЗаменыС)) КАК ДатаОбщ
Что не так то?
4 Wobland
 
21.10.11
10:58
(3) разрешения спрашивает
5 Botanik
 
21.10.11
11:01
Так 1С даже не дает возможности составить такую вот штуку как
ДАТАВРЕМЯ(Год(ДанныеПриложения.ДатаДоставки),Месяц(ДанныеПриложения.ДатаДоставки),День(ДанныеПриложения.ДатаДоставки),Час(СтрокаРасписание.ВремяЗаменыС),Минута(СтрокаРасписание.ВремяЗаменыС),Секунда(СтрокаРасписание.ВремяЗаменыС))

Ошибка при написании
Не верные параметры ДАТАВРЕМЯ
ДАТАВРЕМЯ(<<?>>Год(ДанныеПриложения.ДатаДоставки)...
6 Wobland
 
21.10.11
11:02
ДанныеПриложения.ДатаДоставки какого типа?
7 Botanik
 
21.10.11
11:04
Дата, с типами все нормально
8 НЕА123
 
21.10.11
11:08
....
ЕСТЬNULL(СтрокаРасписание.ВремяЗаменыС, 0)
?
9 Wobland
 
21.10.11
11:09
(8) ДанныеПриложения находится слева. какой NULL?
10 Botanik
 
21.10.11
11:10
Не, тут дело в том, что даже не дает составить такую запись в конструкторе запроса.
11 Botanik
 
21.10.11
11:11
При сохранении выражения:
ДАТАВРЕМЯ(Год(Приложение_Дионикс.Дата),Месяц(Приложение_Дионикс.Дата),День(Приложение_Дионикс.Дата),Час(Приложение_Дионикс.ДатаНачалаПриложения),Минута(Приложение_Дионикс.ДатаНачалаПриложения),Секунда(Приложение_Дионикс.ДатаНачалаПриложения))

Выдает ошибку:
Не верные параметры ДАТАВРЕМЯ
ДАТАВРЕМЯ(<<?>>Год(ДанныеПриложения.ДатаДоставки)...
12 Wobland
 
21.10.11
11:12
(11) другую оно тебе ошибку даёт. неверные слитно пишется
13 НЕА123
 
21.10.11
11:13
(0)
что-то концовка запроса как-то не так...
14 hhhh
 
21.10.11
11:13
(7) наверно ДанныеПриложения левые какие-то. Это что, справочник или регистр какой?
15 Wobland
 
21.10.11
11:14
(13) пропущено Запрос=Новый Запрос("
16 НЕА123
 
21.10.11
11:15
>       |    КлючиПриложения КАК КлючиПриложения
17 Wobland
 
21.10.11
11:17
(16) точно
18 Botanik
 
21.10.11
11:18
)))))
Весь запрос:

Запрос = Новый Запрос;
       Запрос.Текст = ("ВЫБРАТЬ
       |    Приложение_ДиониксАдресаДоставки.Ключ,
       |    ВЫБОР
       |        КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияПо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
       |            ТОГДА ВЫБОР
       |                    КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт >= Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                        ТОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт
       |                    ИНАЧЕ Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                КОНЕЦ
       |        ИНАЧЕ ВЫБОР
       |                КОГДА &ТекДата < Приложение_ДиониксАдресаДоставки.ДатаПриложенияПо
       |                    ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
       |                ИНАЧЕ ВЫБОР
       |                        КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт >= Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                            ТОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт
       |                        ИНАЧЕ Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                    КОНЕЦ
       |            КОНЕЦ
       |    КОНЕЦ КАК ДатаПриложенияОт,
       |    новаДниНедели.Ссылка КАК ДеньНедели,
       |    Приложение_ДиониксАдресаДоставки.Ссылка
       |ПОМЕСТИТЬ КлючиПриложения
       |ИЗ
       |    Документ.Приложение_Дионикс.АдресаДоставки КАК Приложение_ДиониксАдресаДоставки,
       |    Перечисление.новаДниНедели КАК новаДниНедели
       |ГДЕ
       |    Приложение_ДиониксАдресаДоставки.Ссылка = &Ссылка
       |    И Приложение_ДиониксАдресаДоставки.ВРаботе = ИСТИНА
       |    И новаДниНедели.Порядок = ДЕНЬНЕДЕЛИ(ВЫБОР
       |                КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияПо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
       |                    ТОГДА ВЫБОР
       |                            КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт >= Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                                ТОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт
       |                            ИНАЧЕ Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                        КОНЕЦ
       |                ИНАЧЕ ВЫБОР
       |                        КОГДА &ТекДата < Приложение_ДиониксАдресаДоставки.ДатаПриложенияПо
       |                            ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
       |                        ИНАЧЕ ВЫБОР
       |                                КОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт >= Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                                    ТОГДА Приложение_ДиониксАдресаДоставки.ДатаПриложенияОт
       |                                ИНАЧЕ Приложение_ДиониксАдресаДоставки.ДатаНачалаВозки
       |                            КОНЕЦ
       |                    КОНЕЦ
       |            КОНЕЦ) - 1
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    ЗавозВывоз_Дионикс.Ключ,
       |    ЗавозВывоз_Дионикс.ДатаДоставки,
       |    0 КАК ДеньНедели
       |ПОМЕСТИТЬ РегистрЗавозВывоз
       |ИЗ
       |    РегистрСведений.ЗавозВывоз_Дионикс КАК ЗавозВывоз_Дионикс
       |ГДЕ
       |    ЗавозВывоз_Дионикс.Ключ В
       |            (ВЫБРАТЬ
       |                КлючиПриложения.Ключ
       |            ИЗ
       |                КлючиПриложения КАК КлючиПриложения)
       |    И ЗавозВывоз_Дионикс.ДатаДоставки В
       |            (ВЫБРАТЬ
       |                КлючиПриложения.ДатаПриложенияОт
       |            ИЗ
       |                КлючиПриложения КАК КлючиПриложения)
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ ПЕРВЫЕ 1
       |    Приложение_ДиониксРасписание.ТоварПривоз,
       |    Приложение_ДиониксРасписание.ТоварУвоз,
       |    Приложение_ДиониксРасписание.ДеньНедели,
       |    Приложение_ДиониксРасписание.ВидЗамены,
       |    Приложение_ДиониксРасписание.ВремяЗаменыС КАК ВремяЗаменыС,
       |    Приложение_ДиониксРасписание.ВремяЗаменыПо,
       |    Приложение_ДиониксРасписание.Ключ,
       |    Приложение_ДиониксРасписание.Количество,
       |    Приложение_ДиониксРасписание.Ссылка
       |ПОМЕСТИТЬ СтрокаРасписание
       |ИЗ
       |    Документ.Приложение_Дионикс.Расписание КАК Приложение_ДиониксРасписание
       |ГДЕ
       |    Приложение_ДиониксРасписание.Ключ В
       |            (ВЫБРАТЬ
       |                КлючиПриложения.Ключ
       |            ИЗ
       |                КлючиПриложения КАК КлючиПриложения)
       |    И Приложение_ДиониксРасписание.ДеньНедели В
       |            (ВЫБРАТЬ
       |                КлючиПриложения.ДеньНедели
       |            ИЗ
       |                КлючиПриложения КАК КлючиПриложения)
       |
       |УПОРЯДОЧИТЬ ПО
       |    ВремяЗаменыС
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    КлючиПриложения.Ключ КАК Ключ,
       |    КлючиПриложения.ДатаПриложенияОт КАК ДатаДоставки,
       |    0 КАК ЕстьЗапись,
       |    КлючиПриложения.ДеньНедели
       |ПОМЕСТИТЬ ДанныеПриложения
       |ИЗ
       |    КлючиПриложения КАК КлючиПриложения
       |ГДЕ
       |    КлючиПриложения.ДатаПриложенияОт <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    РегистрЗавозВывоз.Ключ,
       |    РегистрЗавозВывоз.ДатаДоставки,
       |    ВЫБОР
       |        КОГДА РегистрЗавозВывоз.Ключ = """"
       |            ТОГДА 1
       |        ИНАЧЕ 0
       |    КОНЕЦ,
       |    РегистрЗавозВывоз.ДеньНедели
       |ИЗ
       |    РегистрЗавозВывоз КАК РегистрЗавозВывоз
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    ДанныеПриложения.Ключ,
       |    ДанныеПриложения.ДатаДоставки,
       |    ДанныеПриложения.ЕстьЗапись,
       |    СтрокаРасписание.ТоварПривоз КАК Номенклатура,
       |    СтрокаРасписание.ТоварУвоз,
       |    СтрокаРасписание.ДеньНедели КАК ДеньНедели,
       |    СтрокаРасписание.ВидЗамены КАК Направление,
       |    СтрокаРасписание.ВремяЗаменыС,
       |    СтрокаРасписание.ВремяЗаменыПо,
       |    СтрокаРасписание.Количество,
       |    СтрокаРасписание.Ссылка КАК Приложение,
       |    СтрокаРасписание.Ссылка.Контрагент КАК Контрагент,
       |    ИСТИНА КАК Работа
|//Тут надо ещё|ДАТАВРЕМЯ(Год(Приложение_Дионикс.Дата),Месяц(Приложение_Дионикс.Дата),День(Приложение_Дионикс.Дата),Час(Приложение_Дионикс.ДатаНачалаПриложения),Минута(Приложение_Дионикс.ДатаНачалаПриложения),Секунда(Приложение_Дионикс.ДатаНачалаПриложения)) КАК ДатаОбщ //Но в конструкторе не строится...
       |ИЗ
       |    ДанныеПриложения КАК ДанныеПриложения
       |        ЛЕВОЕ СОЕДИНЕНИЕ СтрокаРасписание КАК СтрокаРасписание
       |        ПО ДанныеПриложения.Ключ = СтрокаРасписание.Ключ,
       |    КлючиПриложения КАК КлючиПриложения");
       Запрос.УстановитьПараметр("Ссылка",Ссылка);
       Запрос.УстановитьПараметр("ТекДата",ТекущаяДата());
       ТЗ = Запрос.Выполнить().Выгрузить();
19 Wobland
 
21.10.11
11:19
(18) всё равно конец странный
20 hhhh
 
21.10.11
11:24
(19) да вот это надо обязательно выбросить

КлючиПриложения КАК КлючиПриложения

так как бред.
21 Botanik
 
21.10.11
11:25
Да пофиг на конец, код работает...
а вот
ДАТАВРЕМЯ(Год(Приложение_Дионикс.Дата),Месяц(Приложение_Дионикс.Дата),День(Приложение_Дионикс.Дата),Час(Приложение_Дионикс.ДатаНачалаПриложения),Минута(Приложение_Дионикс.ДатаНачалаПриложения),Секунда(Приложение_Дионикс.ДатаНачалаПриложения))
Никак не добавляется((
22 НЕА123
 
21.10.11
11:31
для теста.
добавь отдельные поля ГОД(), МЕСЯЦ()...
23 Botanik
 
21.10.11
11:39
Делал...похоже так незя делать...ДАТАВРЕМЯ(Год(Приложение_Дионикс.Дата)....
никак не хочет...
Простой пример консоль запросов УТ 10.3:
          ВЫБРАТЬ
   ЗаказПокупателя.ДатаОплаты,
   ЗаказПокупателя.ДатаОтгрузки
   //ДАТАВРЕМЯ(Год(ЗаказПокупателя.ДатаОплаты),Месяц(ЗаказПокупателя.ДатаОплаты),День(ЗаказПокупателя.ДатаОплаты),Час(ЗаказПокупателя.ДатаОтгрузки),Минута(ЗаказПокупателя.ДатаОтгрузки),Секунда(ЗаказПокупателя.ДатаОтгрузки)) КАК ДатаДат
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
24 luckyluke
 
21.10.11
11:51
(23) да, у меня тоже не получилось, хотя мне всегда казалось, что так можно.
Ну зато можно так:
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2011, 10, 21), ДЕНЬ), ЧАС, ЧАС(ДАТАВРЕМЯ(1, 1, 1, 23, 59, 59)))
25 Botanik
 
21.10.11
12:02
Так мне не надо..Спасибо всем за участие походу так нельзя...сделаю тупо, вне запроса. Тема закрыта.
26 luckyluke
 
21.10.11
12:03
(25) в смысле не надо? А какая разница, добавить время через ДобавитьКДате или через ДАТАВРЕМЯ?
27 НЕА123
 
21.10.11
12:11
биля... ДАТАВРЕМЯ - это литерал....
вон оно как вышло-то...
28 Botanik
 
21.10.11
12:13
(25) Спасибо!!!
Вот так работает:

ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДанныеПриложения.ДатаДоставки, ДЕНЬ), ЧАС, ЧАС(СтрокаРасписание.ВремяЗаменыС)), ЧАС), МИНУТА, МИНУТА(СтрокаРасписание.ВремяЗаменыС)) КАК БездатаяДата
29 Botanik
 
21.10.11
12:13
БездатаДата=)
30 luckyluke
 
21.10.11
12:16
(28) Что-то много у тебя НАЧАЛОПЕРИОДА много, её только в первом прибалении даты нужно, а потом можно без неё и секунды ты еще не прибавил.

ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ДанныеПриложения.ДатаДоставки, ДЕНЬ), ЧАС, ЧАС(СтрокаРасписание.ВремяЗаменыС)), ЧАС), МИНУТА, МИНУТА(СтрокаРасписание.ВремяЗаменыС))
31 Botanik
 
21.10.11
12:21
(30)Спасибо  luckyluke, большое!!!
Ты мне помог очень!