|
Как в запросе сделать выборку документов по дате и времени? | ☑ | ||
---|---|---|---|---|
0
Ar-Bus
12.09.12
✎
22:39
|
Доброго времени суток, господа! Подскажите, пожалуйста, как написать запрос... Необходимо сделать выборку документов, например, за сутки, но только не с времени 00:00:00, а с 8:00:00. Как в запросе указать, что необходимо учитывать не только дату, но и время документа? В реквизитах формы отчета ДатаНачала, ДатаОкончания поставил вид -Дата, состав - Дата+Время. Но этого же недостаточно. Еще нужно в тексте запроса это как-то прописать... Не судите строго, ниже приведен текст Функции полностью. Но может кто сразу подскажет, где ошибка...
Функция СформироватьЗапрос() Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос.Ссылка, | ВложенныйЗапрос.ПометкаУдаления, | ВложенныйЗапрос.Номер, | ВложенныйЗапрос.Дата КАК Дата, | ВложенныйЗапрос.Тип, | ВложенныйЗапрос.Грузоотправитель КАК Контрагент, | ВложенныйЗапрос.Грузополучатель КАК Контрагент1, | ВложенныйЗапрос.НомерМашины, | ВложенныйЗапрос.Культура, | ВложенныйЗапрос.НачалоОперации КАК НачалоОперации, | ВложенныйЗапрос.ОкончаниеОперации, | СУММА(ВложенныйЗапрос.ФактическиБрутто) КАК Брутто, | СУММА(ВложенныйЗапрос.ФактическиТара) КАК Тара, | СУММА(ВложенныйЗапрос.ФактическиНетто) КАК Нетто, | ВложенныйЗапрос.Склад, | ВложенныйЗапрос.ВесПоНакладной, | ВложенныйЗапрос.Расхождение |ИЗ | (ВЫБРАТЬ | ц_ППН.Ссылка КАК Ссылка, | ц_ППН.ПометкаУдаления КАК ПометкаУдаления, | ц_ППН.ВидТранспорта КАК ВидТранспорта, | ц_ППН.НомерНаклПоставщика КАК Номер, | НАЧАЛОПЕРИОДА(ц_ППН.Дата, ДЕНЬ) КАК Дата, | ""ППН"" КАК Тип, | ц_ППН.Организация КАК Организация, | ц_ППН.Грузоотправитель КАК Грузоотправитель, | ц_ППН.Контрагент КАК Грузополучатель, | ц_ППН.НачалоОперации КАК НачалоОперации, | ц_ППН.ОкончаниеОперации КАК ОкончаниеОперации, | ц_ППН.НомерМашины КАК НомерМашины, | ц_ППН.ВесПоНакладной КАК ВесПоНакладной, | ВЫБОР | КОГДА ц_КарточкаАнализа.Ссылка ЕСТЬ NULL ИЛИ ц_КарточкаАнализа.Номенклатура ЕСТЬ NULL | ТОГДА ц_ППН.Сырье | ИНАЧЕ ц_КарточкаАнализа.Номенклатура | КОНЕЦ КАК Культура, | ц_ППН.ФактическиБрутто КАК ФактическиБрутто, | ц_ППН.ФактическиТара КАК ФактическиТара, | ц_ППН.ФактическиНетто КАК ФактическиНетто, | ц_ППН.ФактическиНетто - ц_ППН.ВесПоНакладной КАК Расхождение, | ц_ППН.Склад КАК Склад, | 0 КАК ВидОперации | ИЗ | Документ.ц_ППН КАК ц_ППН | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | КарточкаАнализа.КлассСырья.Номенклатура КАК Номенклатура, | КарточкаАнализа.Ссылка | ИЗ | Документ.ц_КарточкаАнализа КАК КарточкаАнализа) КАК ц_КарточкаАнализа | ПО | ц_ППН.КарточкаАнализа = ц_КарточкаАнализа.Ссылка | ГДЕ | ц_ППН.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И ц_ППН.ВидТранспорта = ЗНАЧЕНИЕ(Перечисление.ц_ВидыТранспорта.Автомобильный) | И ц_ППН.Сырье = &Сырье | И (НЕ ц_КарточкаАнализа.Ссылка ЕСТЬ NULL И ц_КарточкаАнализа.Номенклатура = &Номенклатура) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ц_ТТН.Ссылка, | ц_ТТН.ПометкаУдаления, | ц_ТТН.ВидТранспорта, | ц_ТТН.Номер, | НАЧАЛОПЕРИОДА(ц_ТТН.Дата, ДЕНЬ), | ""ТТН"", | ц_ТТН.Организация, | ц_ТТН.Грузополучатель, | ц_ТТН.Контрагент, | ц_ТТН.НачалоОперации, | ц_ТТН.ОкончаниеОперации, | ц_ТТН.Машина, | 0, | ВложенныйЗапрос.Номенклатура, | ц_ТТН.ВБрутто, | ц_ТТН.ВТара, | ц_ТТН.ВНетто, | 0, | ц_ТТН.Склад, | ц_ТТН.ВидОперации | ИЗ | Документ.ц_ТТН КАК ц_ТТН | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ц_ТТНТовары.Ссылка КАК Ссылка, | ц_ТТНТовары.Номенклатура КАК Номенклатура | ИЗ | Документ.ц_ТТН.Товары КАК ц_ТТНТовары | ГДЕ | ц_ТТНТовары.НомерСтроки = 1) КАК ВложенныйЗапрос | ПО ц_ТТН.Ссылка = ВложенныйЗапрос.Ссылка | ГДЕ | ц_ТТН.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И ц_ТТН.ВидТранспорта = ЗНАЧЕНИЕ(Перечисление.ц_ВидыТранспорта.Автомобильный) | И ВложенныйЗапрос.Номенклатура = &Номенклатура | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ц_ПеремещениеСырья.Ссылка, | ц_ПеремещениеСырья.ПометкаУдаления, | ц_ПеремещениеСырья.ВидТранспорта, | ц_ПеремещениеСырья.Номер, | ц_ПеремещениеСырья.Дата, | ""ЗПП-19"", | ц_ПеремещениеСырья.Организация, | 0, | 0, | ц_ПеремещениеСырья.НачалоОперации, | ц_ПеремещениеСырья.ОкончаниеОперации, | ц_ПеремещениеСырья.НомерМашины, | 0, | ВложенныйЗапрос.Номенклатура, | ц_ПеремещениеСырья.ВБрутто, | ц_ПеремещениеСырья.ВТара, | ц_ПеремещениеСырья.ВНетто, | 0, | ц_ПеремещениеСырья.СкладОтправитель, | 0 | ИЗ | Документ.ц_ПеремещениеСырья КАК ц_ПеремещениеСырья | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ц_ПеремещениеСырьяТовары.Ссылка КАК Ссылка, | ц_ПеремещениеСырьяТовары.Номенклатура КАК Номенклатура | ИЗ | Документ.ц_ПеремещениеСырья.Товары КАК ц_ПеремещениеСырьяТовары | ГДЕ | ц_ПеремещениеСырьяТовары.НомерСтроки = 1) КАК ВложенныйЗапрос | ПО ц_ПеремещениеСырья.Ссылка = ВложенныйЗапрос.Ссылка | ГДЕ | ц_ПеремещениеСырья.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И ц_ПеремещениеСырья.ВидТранспорта = ЗНАЧЕНИЕ(Перечисление.ц_ВидыТранспорта.Автомобильный) | И ВложенныйЗапрос.Номенклатура = &Номенклатура | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ц_ВывозОтходов.Ссылка, | ц_ВывозОтходов.ПометкаУдаления, | NULL, | ц_ВывозОтходов.Номер, | ц_ВывозОтходов.Дата, | ""ЗПП-23"", | ц_ВывозОтходов.Организация, | 0, | 0, | ц_ВывозОтходов.НачалоОперации, | ц_ВывозОтходов.ОкончаниеОперации, | ц_ВывозОтходов.НомерМашины, | 0, | ц_ВывозОтходов.Номенклатура, | ц_ВывозОтходов.ВБрутто, | ц_ВывозОтходов.ВТара, | ц_ВывозОтходов.ФизВес, | 0, | ц_ВывозОтходов.Склад, | 0 | ИЗ | Документ.ц_ВывозОтходов КАК ц_ВывозОтходов | ГДЕ | 1 = 1 | И ц_ВывозОтходов.Номенклатура = &Номенклатура) КАК ВложенныйЗапрос |ГДЕ | ВложенныйЗапрос.Дата МЕЖДУ &НачалоПериода И &КонецПериода"; Если ВидОтчета = "Приемка (ППН)" Тогда ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Тип = ""ППН"""; ИначеЕсли ВидОтчета = "Отгрузка (ТТН)" Тогда ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Тип = ""ТТН"" | И ВложенныйЗапрос.ВидОперации = &ВидОперации"; ИначеЕсли ВидОтчета = "Внутренние перемещения" Тогда ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Тип = ""ЗПП-19"""; ИначеЕсли ВидОтчета = "Вывоз негодных отходов" Тогда ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Тип = ""ЗПП-23"""; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " | И ВложенныйЗапрос.Организация = &Организация | И ВложенныйЗапрос.Склад = &Склад | И ВложенныйЗапрос.Грузоотправитель = &Контрагент | И ВложенныйЗапрос.Грузополучатель = &Контрагент1 | И ВложенныйЗапрос.ПометкаУдаления = ЛОЖЬ | И ВложенныйЗапрос.ФактическиБрутто <> 0 | И ВложенныйЗапрос.ФактическиТара <> 0 | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Дата, | ВложенныйЗапрос.Грузоотправитель, | ВложенныйЗапрос.Грузополучатель, | ВложенныйЗапрос.Номер, | ВложенныйЗапрос.Тип, | ВложенныйЗапрос.НачалоОперации, | ВложенныйЗапрос.ОкончаниеОперации, | ВложенныйЗапрос.ВесПоНакладной, | ВложенныйЗапрос.Расхождение, | ВложенныйЗапрос.НомерМашины, | ВложенныйЗапрос.Культура, | ВложенныйЗапрос.Склад, | ВложенныйЗапрос.Ссылка, | ВложенныйЗапрос.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Дата, | НачалоОперации"; Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода)); Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода)); Если ЗначениеЗаполнено(Организация) Тогда Запрос.УстановитьПараметр("Организация", Организация); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Организация = &Организация"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(Склад) Тогда Запрос.УстановитьПараметр("Склад", Склад); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Склад = &Склад"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(Контрагент) Тогда Запрос.УстановитьПараметр("Контрагент", Контрагент); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Грузоотправитель = &Контрагент"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(Контрагент1) Тогда Запрос.УстановитьПараметр("Контрагент1", Контрагент1); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.Грузополучатель = &Контрагент1"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(ВидОперации) Тогда Запрос.УстановитьПараметр("ВидОперации", ВидОперации); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + "И ВложенныйЗапрос.ВидОперации = &ВидОперации"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(Сырье) Тогда Запрос.УстановитьПараметр("Сырье", Сырье); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + Символы.Таб + "И ц_ППН.Сырье = &Сырье"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Если ЗначениеЗаполнено(Номенклатура) Тогда Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Иначе СтрокаПоиска = Символы.ПС + Символы.Таб + Символы.Таб + "И ВложенныйЗапрос.Номенклатура = &Номенклатура"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); СтрокаПоиска = Символы.ПС + Символы.Таб + Символы.Таб + "И ц_ВывозОтходов.Номенклатура = &Номенклатура) КАК ВложенныйЗапрос"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,") КАК ВложенныйЗапрос"); СтрокаПоиска = Символы.ПС + Символы.Таб + Символы.Таб + "И (НЕ ц_КарточкаАнализа.Ссылка ЕСТЬ NULL И ц_КарточкаАнализа.Номенклатура = &Номенклатура)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,СтрокаПоиска,""); КонецЕсли; Запрос.Текст = ТекстЗапроса; Возврат Запрос; КонецФункции |
|||
1
lubja
12.09.12
✎
22:45
|
функцию не читала - многабукав...
а что тебе мешает параметры так и устанавливать НачалоДня() и КонецДня, а непосредственно, сами даты, так как они есть... |
|||
2
Vladal
12.09.12
✎
22:48
|
> Дата+Время. Но этого же недостаточно. Еще нужно в тексте запроса это как-то прописать...
Ставь параметры запроса: (НачалоДня(Дата) + 3600*8) |
|||
3
Ar-Bus
12.09.12
✎
22:55
|
(1) устанавливал просто сами даты, но все равно время не учитывает
|
|||
4
lubja
12.09.12
✎
22:56
|
* не НачалоДня и КонецДня, а тупо даты.
(3) да ладно... должно со временем хавать.... |
|||
5
Ar-Bus
12.09.12
✎
22:57
|
(2) а это уже интересно... Ну а как в тексте запроса это прописать? В реквизитах же формы отчета стоят даты со временем... А после выполнения запроса вижу, например, следующее: в форме отчета в реквизитах ставил: ДатаНачала - 06.07.12 08:00:00, ДатаОкончания - 07.07.12 08:00:00. На экране отображаются документы с 06.07.12 00:00:00 по 06.07.12 23:59:59
|
|||
6
Ar-Bus
12.09.12
✎
22:58
|
(4) Да, НачалоДня и КонецДня убирал, все равно не помогает
|
|||
7
lubja
12.09.12
✎
23:01
|
(6) не поверила... и проверила, все нормально выбирается, с учетом проставленного времени
|
|||
8
Vladal
12.09.12
✎
23:06
|
(6) Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода)+8*60*60); - это на 8 утра
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода) - 6*60*60); - за 6 часов до полуночи |
|||
9
Vladal
12.09.12
✎
23:07
|
СтрокаПоиска = Символы.ПС + Символы.Таб + Символы.Таб + "И (НЕ ц_КарточкаАнализа.Ссылка ЕСТЬ NULL И ц_КарточкаАнализа.Номенклатура = &Номенклатура)";
ИМХО символы ПС и Таб здесь лишние. Хотя жесткая привязка к уровню вложенности |
|||
10
Ar-Bus
12.09.12
✎
23:14
|
(7) Тебе поверил и еще раз проверил. Все заработало, спасибо большое
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |