|
Пакетные запросы и нахождение максимума | ☑ | ||
---|---|---|---|---|
0
Pentosh
06.08.14
✎
13:12
|
Здравствуйте, помогите пожалуйста найти ответ, на вопрос.
Есть обработка (Рабочее место диспетчера ГП), где на основании Внутреннего заказа, создаешь документ Диспетчеризация ГП с определенным видом (Плановое и Внеплановое изменение даты отгрузки). И когда создаешь второй документ, то в обработке заказ начинает отображаться дважды (на разные даты), чего быть не должно. Нужно выбрать только последний/новый/свежий док с таким видом, и чтобы только с его данными работать (док Диспетчеризация ГП) Код запроса: "ВЫБРАТЬ | ВложенныйЗапрос.ВнутреннийЗаказ |ПОМЕСТИТЬ ВложенныйЗапрос1 |ИЗ | (ВЫБРАТЬ | ВнутреннийЗаказДок.Ссылка КАК ВнутреннийЗаказ | ИЗ | Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО ВнутреннийЗаказДок.Заказчик = ЗначенияСвойствОбъектов.Объект | И (ЗначенияСвойствОбъектов.Свойство = &СвойствоРегион) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗакрытиеВнутреннихЗаказов.Заказы КАК ЗакрытиеВнутреннихЗаказов | ПО ЗакрытиеВнутреннихЗаказов.ВнутреннийЗаказ = ВнутреннийЗаказДок.Ссылка | ГДЕ | ВнутреннийЗаказДок.Проведен | И ВнутреннийЗаказДок.Организация В (&Организация) | И ВнутреннийЗаказДок.ВидЗаказа = ЗНАЧЕНИЕ(Перечисление.ВидыВнутреннегоЗаказа.НаСклад) | И НЕ ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL | И (ВнутреннийЗаказДок.Подразделение В ИЕРАРХИИ (&Подразделение) | ИЛИ ВнутреннийЗаказДок.Подразделение = &ОтделПродажМебели) | И ЗакрытиеВнутреннихЗаказов.Ссылка ЕСТЬ NULL | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВнутреннийЗаказДок.Ссылка | ИЗ | Документ.ВнутреннийЗаказ КАК ВнутреннийЗаказДок | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗакрытиеВнутреннихЗаказов.Заказы КАК ЗакрытиеВнутреннихЗаказов | ПО ЗакрытиеВнутреннихЗаказов.ВнутреннийЗаказ = ВнутреннийЗаказДок.Ссылка | ГДЕ | ВнутреннийЗаказДок.Проведен | И ВнутреннийЗаказДок.Организация В (&Организация) | И ВнутреннийЗаказДок.ВидЗаказа = ЗНАЧЕНИЕ(Перечисление.ВидыВнутреннегоЗаказа.НаСклад) | И (ВнутреннийЗаказДок.Подразделение В ИЕРАРХИИ (&Подразделение) | ИЛИ ВнутреннийЗаказДок.Подразделение = &ОтделПродажМебели) | И ВнутреннийЗаказДок.Заказчик В | (ВЫБРАТЬ | СоставГруппДоступностиСкладов.Склад | ИЗ | РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов | ГДЕ | СоставГруппДоступностиСкладов.ГруппаДоступности В | (ВЫБРАТЬ | Константы.тдЦентральныйСкладГПХранение | ИЗ | Константы КАК Константы) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | СоставГруппДоступностиСкладов.Склад | ИЗ | РегистрСведений.СоставГруппДоступностиСкладов КАК СоставГруппДоступностиСкладов | ГДЕ | СоставГруппДоступностиСкладов.ГруппаДоступности В | (ВЫБРАТЬ | Константы.тдЦентральныйСкладГПСервисный | ИЗ | Константы КАК Константы)) | И ЗакрытиеВнутреннихЗаказов.Ссылка ЕСТЬ NULL ) КАК ВложенныйЗапрос |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос1.ВнутреннийЗаказ, | НАЧАЛОПЕРИОДА(ВложенныйЗапрос1.ВнутреннийЗаказ.Дата, ДЕНЬ) КАК ДатаКонсолидации, | ЕСТЬNULL(Диспетчеризация_ПараметрыОтгрузки.ВремяНачалаЗагрузки, ДАТАВРЕМЯ(1, 1, 1)) КАК ВремяНачалаЗагрузкиТС, | ЕСТЬNULL(Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.РасчетнаяДатаОтгрузки, ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВложенныйЗапрос1.ВнутреннийЗаказ.Дата, ДЕНЬ), ДЕНЬ, &НормативПоОтгрузкеСДатыКонсолидации / 24)) КАК РасчетнаяДатаОтгрузки, | ЕСТЬNULL(Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.СмещениеДатыОтгрузки, 0) КАК ПлановоеСмещениеДатыОтгрузки, | Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.Ссылка КАК ВнеплановоеСмещениеДатыОтгрузкиСсылка, | Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.Дата КАК ПлановоеСмещениеДатыОтгрузкиДата, | Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.Дата КАК ВнеплановоеСмещениеДатыОтгрузкиДата |ПОМЕСТИТЬ ВложенныйЗапрос2 |ИЗ | ВложенныйЗапрос1 КАК ВложенныйЗапрос1 | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ПараметрыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ПараметрыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ПараметрыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ПараметрыОтгрузки)) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ПлановоеИзменениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ПлановоеИзменениеДатыОтгрузки)) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ВнеплановоеСмещениеДатыОтгрузки)) Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.Ссылка |{УПОРЯДОЧИТЬ ПО | ВнеплановоеСмещениеДатыОтгрузкиСсылка.*} |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос2.ВнутреннийЗаказ КАК ВнутреннийЗаказ, | ВложенныйЗапрос2.ДатаКонсолидации КАК ДатаКонсолидации, | ВложенныйЗапрос2.ВремяНачалаЗагрузкиТС КАК ВремяНачалаЗагрузкиТС, | ВложенныйЗапрос2.РасчетнаяДатаОтгрузки КАК РасчетнаяДатаОтгрузки, | ВложенныйЗапрос2.ПлановоеСмещениеДатыОтгрузки КАК ПлановоеСмещениеДатыОтгрузки, | ВложенныйЗапрос2.ВнеплановоеСмещениеДатыОтгрузкиСсылка КАК ВнеплановоеСмещениеДатыОтгрузкиСсылка |ПОМЕСТИТЬ ВложенныйЗапрос3 |ИЗ | ВложенныйЗапрос2 КАК ВложенныйЗапрос2 | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос2.ВнутреннийЗаказ, | ВложенныйЗапрос2.ДатаКонсолидации, | ВложенныйЗапрос2.ВремяНачалаЗагрузкиТС, | ВложенныйЗапрос2.РасчетнаяДатаОтгрузки, | ВложенныйЗапрос2.ПлановоеСмещениеДатыОтгрузки, | ВложенныйЗапрос2.ВнеплановоеСмещениеДатыОтгрузкиСсылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос3.ВнутреннийЗаказ КАК ВнутреннийЗаказ, | ВложенныйЗапрос3.ДатаКонсолидации КАК ДатаКонсолидации, | ВложенныйЗапрос3.ВремяНачалаЗагрузкиТС КАК ВремяНачалаЗагрузкиТС, | ВложенныйЗапрос3.РасчетнаяДатаОтгрузки КАК РасчетнаяДатаОтгрузки, | ВложенныйЗапрос3.ПлановоеСмещениеДатыОтгрузки КАК ПлановоеСмещениеДатыОтгрузки, | ЕСТЬNULL(ВложенныйЗапрос3.ВнеплановоеСмещениеДатыОтгрузкиСсылка.ОкончательнаяДатаИВремяЗагрузки, ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ВложенныйЗапрос3.РасчетнаяДатаОтгрузки, ДЕНЬ, ВложенныйЗапрос3.ПлановоеСмещениеДатыОтгрузки + ЕСТЬNULL(ВложенныйЗапрос3.ВнеплановоеСмещениеДатыОтгрузкиСсылка.СмещениеДатыОтгрузки, 0)), ЧАС, ЧАС(ВложенныйЗапрос3.ВремяНачалаЗагрузкиТС)), МИНУТА, МИНУТА(ВложенныйЗапрос3.ВремяНачалаЗагрузкиТС)), СЕКУНДА, &НормативПоЗагрузкеТС)) КАК ОкончательныеДатаИВремяОтгрузкиЗаказа |ПОМЕСТИТЬ ВложенныйЗапрос4 |ИЗ | ВложенныйЗапрос3 КАК ВложенныйЗапрос3 |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос3.ВнутреннийЗаказ, | ВложенныйЗапрос3.ДатаКонсолидации, | ВложенныйЗапрос3.ВремяНачалаЗагрузкиТС, | ВложенныйЗапрос3.РасчетнаяДатаОтгрузки, | ВложенныйЗапрос3.ПлановоеСмещениеДатыОтгрузки, |ВложенныйЗапрос3.ВнеплановоеСмещениеДатыОтгрузкиСсылка.ОкончательнаяДатаИВремяЗагрузки, |ВложенныйЗапрос3.ВнеплановоеСмещениеДатыОтгрузкиСсылка.СмещениеДатыОтгрузки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос4.ВнутреннийЗаказ |ИЗ | ВложенныйЗапрос4 КАК ВложенныйЗапрос4 |ГДЕ | //ДатаКонсолидации//НАЧАЛОПЕРИОДА(ВложенныйЗапрос4.ДатаКонсолидации, ДЕНЬ) = &ДатаКонсолидации | //ОкончательнаяДатаОтгрузки//НАЧАЛОПЕРИОДА(ВложенныйЗапрос4.ОкончательныеДатаИВремяОтгрузкиЗаказа, ДЕНЬ) = &ОкончательныеДатаИВремяОтгрузкиЗаказа |"); Все свои четные попытки убрал, оставил только первозданный вид (мб и не совсем), пробовал и функцию МАКСИМУМ и в блоке ИЗ вставлять доб под запросы в нужные строки, но результата нет. |
|||
1
Pentosh
08.08.14
✎
11:36
|
Чет никто не заметил а вопрос все еще остро стоит.
Уточню, нужно выбрать последние документы в с определенным видом. Непосредственно в коде в данном месте: |ВЫБРАТЬ | ВложенныйЗапрос1.ВнутреннийЗаказ, | НАЧАЛОПЕРИОДА(ВложенныйЗапрос1.ВнутреннийЗаказ.Дата, ДЕНЬ) КАК ДатаКонсолидации, | ЕСТЬNULL(Диспетчеризация_ПараметрыОтгрузки.ВремяНачалаЗагрузки, ДАТАВРЕМЯ(1, 1, 1)) КАК ВремяНачалаЗагрузкиТС, | ЕСТЬNULL(Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.РасчетнаяДатаОтгрузки, ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВложенныйЗапрос1.ВнутреннийЗаказ.Дата, ДЕНЬ), ДЕНЬ, &НормативПоОтгрузкеСДатыКонсолидации / 24)) КАК РасчетнаяДатаОтгрузки, | ЕСТЬNULL(Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.СмещениеДатыОтгрузки, 0) КАК ПлановоеСмещениеДатыОтгрузки, | Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.Ссылка КАК ВнеплановоеСмещениеДатыОтгрузкиСсылка |ПОМЕСТИТЬ ВложенныйЗапрос2 |ИЗ | ВложенныйЗапрос1 КАК ВложенныйЗапрос1 | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ПараметрыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ПараметрыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ПараметрыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ПараметрыОтгрузки)) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ПлановоеИзменениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ПлановоеИзменениеДатыОтгрузки)) | ЛЕВОЕ СОЕДИНЕНИЕ Документ.тдДиспетчеризацияЦепиПоставокГП КАК Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.ВнутреннийЗаказ | И (Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ВнеплановоеСмещениеДатыОтгрузки)) |{УПОРЯДОЧИТЬ ПО | ВнеплановоеСмещениеДатыОтгрузкиСсылка.*} |; Пробовал описать так: | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 | ДиспетчерГП.Ссылка КАК Ссылка, | ДиспетчерГП.ВнутреннийЗаказ КАК ВнутреннийЗаказ, | ДиспетчерГП.РасчетнаяДатаОтгрузки КАК РасчетнаяДатаОтгрузки, | ДиспетчерГП.СмещениеДатыОтгрузки КАК СмещениеДатыОтгрузки | ИЗ | Документ.тдДиспетчеризацияЦепиПоставокГП КАК ДиспетчерГП | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВложенныйЗапрос1 КАК ВложенныйЗапрос1 | ПО ДиспетчерГП.ВнутреннийЗаказ = ВложенныйЗапрос1.ВнутреннийЗаказ | ГДЕ | ДиспетчерГП.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ПлановоеИзменениеДатыОтгрузки) | | УПОРЯДОЧИТЬ ПО | ДиспетчерГП.Дата УБЫВ) КАК Диспетчеризация_ПлановоеИзменениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ПлановоеИзменениеДатыОтгрузки.ВнутреннийЗаказ | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 | ДиспетчерГП.Ссылка КАК Ссылка, | ДиспетчерГП.ВнутреннийЗаказ КАК ВнутреннийЗаказ | ИЗ | Документ.тдДиспетчеризацияЦепиПоставокГП КАК ДиспетчерГП | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВложенныйЗапрос1 КАК ВложенныйЗапрос1 | ПО ДиспетчерГП.ВнутреннийЗаказ = ВложенныйЗапрос1.ВнутреннийЗаказ | ГДЕ | ДиспетчерГП.ВидОперации = ЗНАЧЕНИЕ(Перечисление.тдВидОперацииДиспетчеризация.ВнеплановоеСмещениеДатыОтгрузки) | | УПОРЯДОЧИТЬ ПО | ДиспетчерГП.Дата УБЫВ) КАК Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки | ПО ВложенныйЗапрос1.ВнутреннийЗаказ = Диспетчеризация_ВнеплановоеСмещениеДатыОтгрузки.ВнутреннийЗаказ Но результат в таком случае совсем плачевный, не выводит 80% документов вообще. Помогите плиз, горит очаг. |
|||
2
Ёпрст
08.08.14
✎
11:42
|
в первый запрос воткни так, для начала
"ВЫБРАТЬ Различные | ВложенныйЗапрос.ВнутреннийЗаказ |ПОМЕСТИТЬ ВложенныйЗапрос1 |
|||
3
Ёпрст
08.08.14
✎
11:43
|
дальше не читал , ибо лень
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |