![]() |
|
замена значения в запросе | ☑ | ||
---|---|---|---|---|
0
falselight
22.09.16
✎
10:31
|
имеется некий запрос
в котором имеется некое поле к каждой строки выборки привязан документ в документе есть табличная часть, имеющая среди своих строк, одну или несколько с нужными значениями которые нужно извлечь и проставить в нужное поле выборки как это можно сделать в этом же запросе??? или лучше обрабатывать саму выборку, добывая эти значения из строки где содержится документ, извлекать их из его тч и проставлять в нужное поле выборки? |
|||
1
falselight
22.09.16
✎
10:34
|
в одном запросе задвоения строк возможно будут
видимо лучше обработать обойдя после основную выборку? |
|||
2
jsmith
22.09.16
✎
10:35
|
Да. Агрегирующей функции нет, число полей левого соединения неизвестно
|
|||
3
falselight
22.09.16
✎
10:43
|
(2) там может быть как одно поле, так и 2 так и 6
то есть последующей обработкой выборки сделать? |
|||
4
jsmith
22.09.16
✎
10:45
|
(3) Да
Пиши запрос с левым соединением, выгружай в дерево значений и обрабатывай строки верхнего уровня |
|||
5
falselight
22.09.16
✎
10:46
|
(4) да это тоесть делать в цикле перебирая выборку?
или все же советуете делать в запросе? |
|||
6
falselight
22.09.16
✎
10:46
|
я планирую перебирать существующую выборку, обрабатывая документ в ней
|
|||
7
ovrfox
22.09.16
✎
10:48
|
Лучше предоставить некий запрос, чтобы теоретическое обсуждение было более конкретным.
А вообще в теории это возможно. |
|||
8
falselight
22.09.16
✎
10:48
|
(6) не сильно это повлияет на быстродействие общее?
так как все это выполняться будет при открытии обработки |
|||
9
falselight
22.09.16
✎
10:51
|
(7) запрос
|| ВЫБРАТЬ МАКСИМУМ(А_ЗанятостьРабочихЦентров.Период) КАК Период, А_ЗанятостьРабочихЦентров.Заказ ПОМЕСТИТЬ Занятость ИЗ РегистрСведений.А_ЗанятостьРабочихЦентров КАК А_ЗанятостьРабочихЦентров СГРУППИРОВАТЬ ПО А_ЗанятостьРабочихЦентров.Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Занятость.Заказ, Атл_ИнтерфейсПроизводства.КП_Снят ПОМЕСТИТЬ Снятые ИЗ Занятость КАК Занятость ЛЕВОЕ СОЕДИНЕНИЕ Документ.Атл_ИнтерфейсПроизводства КАК Атл_ИнтерфейсПроизводства ПО Занятость.Период = Атл_ИнтерфейсПроизводства.Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Значение ПОМЕСТИТЬ _ВремяЗаказов ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказНаПроизводствоВсе.Заказ КАК Заказ, ЗаказНаПроизводствоВсе.ГотовКПечати КАК ГотовКПечати, ЗаказНаПроизводствоВсе.Закрыт КАК Закрыт, ЗаказНаПроизводствоВсе.Номенклатура, ВЫБОР КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ КАК Заказчик, ЗаказНаПроизводствоВсе.Нож КАК Нож, СУММА(ЗаказНаПроизводствоВсе.Тираж) КАК Тираж, _ВремяЗаказов.Значение КАК Время, ЗаказНаПроизводствоВсе.Порядок, ЗаказНаПроизводствоВсе.Цветность, ЗаказНаПроизводствоВсе.Материал, ЗаказНаПроизводствоВсе.Приоритет, ЗаказНаПроизводствоВсе.ДМ, ЗаказНаПроизводствоВсе.ПорядокВПриоритете, ЗаказНаПроизводствоВсе.ДатаОтгрузки, ЗаказНаПроизводствоВсе.Сумма, ЗаказНаПроизводствоВсе.МП, ВложенныйЗапрос.Препресс ИЗ РегистрСведений.А_РеестрЗаказов КАК ЗаказНаПроизводствоВсе ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.А_ЗанятостьРабочихЦентров.СрезПоследних(&Период, ) КАК А_ЗанятостьРабочихЦентровСрезПоследних ПО (А_ЗанятостьРабочихЦентровСрезПоследних.Заказ = ЗаказНаПроизводствоВсе.Заказ) ЛЕВОЕ СОЕДИНЕНИЕ _ВремяЗаказов КАК _ВремяЗаказов ПО ЗаказНаПроизводствоВсе.Заказ = _ВремяЗаказов.Объект ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска КАК ЗаказВыпуска, ОтчетПроизводстваЗаСменуПродукция.Ссылка КАК Ссылка ИЗ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция ГДЕ ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ИСТИНА) КАК ОтчетПроизводстваЗаСменуПродукция ПО ЗаказНаПроизводствоВсе.Заказ = ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство КАК ЗаказНаПроизводство, ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка КАК Ссылка ИЗ Документ.ЗакрытиеЗаказовНаПроизводство.Заказы КАК ЗакрытиеЗаказовНаПроизводствоЗаказы ГДЕ ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ИСТИНА) КАК ЗакрытиеЗаказовНаПроизводствоЗаказы ПО ЗаказНаПроизводствоВсе.Заказ = ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗаказПокупателя1.Номер КАК Номер, ВЫБОР КОГДА ЗаказПокупателя1.Пленки = ИСТИНА И ЗаказПокупателя1.НожГотов = ИСТИНА И ЗаказПокупателя1.Трафарет = ИСТИНА И ЗаказПокупателя1.Вал = ИСТИНА И ЗаказПокупателя1.Макет = ИСТИНА ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Препресс ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя1) КАК ВложенныйЗапрос ПО ЗаказНаПроизводствоВсе.Заказ.Номер = ВложенныйЗапрос.Номер ЛЕВОЕ СОЕДИНЕНИЕ Снятые КАК Снятые ПО ЗаказНаПроизводствоВсе.Заказ = Снятые.Заказ ГДЕ ЗаказНаПроизводствоВсе.Заказ.Проведен = ИСТИНА И ВЫБОР КОГДА ЕСТЬNULL(Снятые.КП_Снят, 0) = ИСТИНА ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА ЕСТЬNULL(Снятые.Заказ, 0) = 0 ТОГДА ВЫБОР КОГДА ЕСТЬNULL(ОтчетПроизводстваЗаСменуПродукция.Ссылка, 0) = 0 ИЛИ ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ЛОЖЬ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ И ВЫБОР КОГДА ЕСТЬNULL(ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка, 0) = 0 ИЛИ ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ЛОЖЬ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ И ЗаказНаПроизводствоВсе.Закрыт = ЛОЖЬ СГРУППИРОВАТЬ ПО ЗаказНаПроизводствоВсе.Заказ, ЗаказНаПроизводствоВсе.ГотовКПечати, ЗаказНаПроизводствоВсе.Закрыт, ЗаказНаПроизводствоВсе.Номенклатура, ЗаказНаПроизводствоВсе.Нож, _ВремяЗаказов.Значение, ВЫБОР КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ, ЗаказНаПроизводствоВсе.Порядок, ЗаказНаПроизводствоВсе.Цветность, ЗаказНаПроизводствоВсе.Материал, ЗаказНаПроизводствоВсе.Приоритет, ЗаказНаПроизводствоВсе.ДМ, ЗаказНаПроизводствоВсе.ПорядокВПриоритете, ЗаказНаПроизводствоВсе.ДатаОтгрузки, ЗаказНаПроизводствоВсе.Сумма, ЗаказНаПроизводствоВсе.МП, ВложенныйЗапрос.Препресс |
|||
10
falselight
22.09.16
✎
10:52
|
В запросе (9) в итоговом
есть поле Заказ, типа документ заказ на производство у которого и есть некая тч с этими значениями которых может быть разное количество |
|||
11
falselight
22.09.16
✎
10:56
|
к примеру если сделать так
там выбирается только одно значение патон из имеющихся в табличной части ВЫБРАТЬ МАКСИМУМ(А_ЗанятостьРабочихЦентров.Период) КАК Период, А_ЗанятостьРабочихЦентров.Заказ ПОМЕСТИТЬ Занятость ИЗ РегистрСведений.А_ЗанятостьРабочихЦентров КАК А_ЗанятостьРабочихЦентров СГРУППИРОВАТЬ ПО А_ЗанятостьРабочихЦентров.Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Занятость.Заказ, Атл_ИнтерфейсПроизводства.КП_Снят ПОМЕСТИТЬ Снятые ИЗ Занятость КАК Занятость ЛЕВОЕ СОЕДИНЕНИЕ Документ.Атл_ИнтерфейсПроизводства КАК Атл_ИнтерфейсПроизводства ПО Занятость.Период = Атл_ИнтерфейсПроизводства.Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Значение ПОМЕСТИТЬ _ВремяЗаказов ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &Свойство ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказНаПроизводствоВсе.Заказ КАК Заказ, ЗаказНаПроизводствоВсе.ГотовКПечати КАК ГотовКПечати, ЗаказНаПроизводствоВсе.Закрыт КАК Закрыт, ЗаказНаПроизводствоВсе.Номенклатура, ВЫБОР КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ КАК Заказчик, ЗаказНаПроизводствоВсе.Нож КАК Нож, СУММА(ЗаказНаПроизводствоВсе.Тираж) КАК Тираж, _ВремяЗаказов.Значение КАК Время, ЗаказНаПроизводствоВсе.Порядок, ЗаказНаПроизводствоВсе.Цветность, ЗаказНаПроизводствоВсе.Материал, ЗаказНаПроизводствоВсе.Приоритет, ЗаказНаПроизводствоВсе.ДМ, ЗаказНаПроизводствоВсе.ПорядокВПриоритете, ЗаказНаПроизводствоВсе.ДатаОтгрузки, ЗаказНаПроизводствоВсе.Сумма, ЗаказНаПроизводствоВсе.МП, ВложенныйЗапрос.Препресс, ЗаказНаПроизводствоСекции.Пантон ИЗ РегистрСведений.А_РеестрЗаказов КАК ЗаказНаПроизводствоВсе ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.А_ЗанятостьРабочихЦентров.СрезПоследних(&Период, ) КАК А_ЗанятостьРабочихЦентровСрезПоследних ПО (А_ЗанятостьРабочихЦентровСрезПоследних.Заказ = ЗаказНаПроизводствоВсе.Заказ) ЛЕВОЕ СОЕДИНЕНИЕ _ВремяЗаказов КАК _ВремяЗаказов ПО ЗаказНаПроизводствоВсе.Заказ = _ВремяЗаказов.Объект ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска КАК ЗаказВыпуска, ОтчетПроизводстваЗаСменуПродукция.Ссылка КАК Ссылка ИЗ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция ГДЕ ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ИСТИНА) КАК ОтчетПроизводстваЗаСменуПродукция ПО ЗаказНаПроизводствоВсе.Заказ = ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство КАК ЗаказНаПроизводство, ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка КАК Ссылка ИЗ Документ.ЗакрытиеЗаказовНаПроизводство.Заказы КАК ЗакрытиеЗаказовНаПроизводствоЗаказы ГДЕ ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ИСТИНА) КАК ЗакрытиеЗаказовНаПроизводствоЗаказы ПО ЗаказНаПроизводствоВсе.Заказ = ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗаказПокупателя1.Номер КАК Номер, ВЫБОР КОГДА ЗаказПокупателя1.Пленки = ИСТИНА И ЗаказПокупателя1.НожГотов = ИСТИНА И ЗаказПокупателя1.Трафарет = ИСТИНА И ЗаказПокупателя1.Вал = ИСТИНА И ЗаказПокупателя1.Макет = ИСТИНА ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Препресс ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя1) КАК ВложенныйЗапрос ПО ЗаказНаПроизводствоВсе.Заказ.Номер = ВложенныйЗапрос.Номер ЛЕВОЕ СОЕДИНЕНИЕ Снятые КАК Снятые ПО ЗаказНаПроизводствоВсе.Заказ = Снятые.Заказ ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаПроизводство.Секции КАК ЗаказНаПроизводствоСекции ПО ЗаказНаПроизводствоВсе.Заказ = ЗаказНаПроизводствоСекции.Ссылка ГДЕ ЗаказНаПроизводствоВсе.Заказ.Проведен = ИСТИНА И ВЫБОР КОГДА ЕСТЬNULL(Снятые.КП_Снят, 0) = ИСТИНА ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА ЕСТЬNULL(Снятые.Заказ, 0) = 0 ТОГДА ВЫБОР КОГДА ЕСТЬNULL(ОтчетПроизводстваЗаСменуПродукция.Ссылка, 0) = 0 ИЛИ ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ЛОЖЬ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ И ВЫБОР КОГДА ЕСТЬNULL(ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка, 0) = 0 ИЛИ ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ЛОЖЬ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ И ЗаказНаПроизводствоВсе.Закрыт = ЛОЖЬ СГРУППИРОВАТЬ ПО ЗаказНаПроизводствоВсе.Заказ, ЗаказНаПроизводствоВсе.ГотовКПечати, ЗаказНаПроизводствоВсе.Закрыт, ЗаказНаПроизводствоВсе.Номенклатура, ЗаказНаПроизводствоВсе.Нож, _ВремяЗаказов.Значение, ВЫБОР КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ, ЗаказНаПроизводствоВсе.Порядок, ЗаказНаПроизводствоВсе.Цветность, ЗаказНаПроизводствоВсе.Материал, ЗаказНаПроизводствоВсе.Приоритет, ЗаказНаПроизводствоВсе.ДМ, ЗаказНаПроизводствоВсе.ПорядокВПриоритете, ЗаказНаПроизводствоВсе.ДатаОтгрузки, ЗаказНаПроизводствоВсе.Сумма, ЗаказНаПроизводствоВсе.МП, ВложенныйЗапрос.Препресс, ЗаказНаПроизводствоСекции.Пантон |
|||
12
В тылу врага
22.09.16
✎
10:57
|
слово РАЗЛИЧНЫЕ отменили в запросах?
|
|||
13
В тылу врага
22.09.16
✎
10:58
|
ВЫБОР
КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ КАК Заказчик внушает |
|||
14
falselight
22.09.16
✎
11:00
|
(12) в (10) пока и выбирается всего одно значение из существующих
|
|||
15
falselight
22.09.16
✎
11:12
|
почему не работает такой запрос?
|| ВЫБРАТЬ ЗаказНаПроизводствоСекции.Ссылка, ЗаказНаПроизводствоСекции.Пантон, ЗаказНаПроизводствоСекции.ТипСекции.Наименование ИЗ Документ.ЗаказНаПроизводство.Секции КАК ЗаказНаПроизводствоСекции ГДЕ ЗаказНаПроизводствоСекции.Ссылка = &ЗаказНаПроизводство И ЗаказНаПроизводствоСекции.ТипСекции.Наименование = "Фллллл" |
|||
16
ovrfox
22.09.16
✎
11:21
|
(15) Потому что кавычки не двойные
|
|||
17
ovrfox
22.09.16
✎
11:22
|
(15) а вообще лучше в явном виде разыменовывать поля, т.е. так
ВЫБРАТЬ ЗаказНаПроизводствоСекции.Ссылка, ЗаказНаПроизводствоСекции.Пантон, спрТипСекции.Наименование ИЗ Документ.ЗаказНаПроизводство.Секции КАК ЗаказНаПроизводствоСекции Соединение Справочник.ТипыСекций как спрТипСекции по спрТипСекции.Ссылка = ЗаказНаПроизводствоСекции.ТипСекции ГДЕ ЗаказНаПроизводствоСекции.Ссылка = &ЗаказНаПроизводство И спрТипСекции.Наименование = "Фллллл" |
|||
18
falselight
22.09.16
✎
11:25
|
(16) получилось, похоже от того было что там одна буква латинская
|
|||
19
ovrfox
22.09.16
✎
11:25
|
Кстати, скорее всего вариант
ВЫБОР КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат" ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец КОНЕЦ Работать не будет. Нужно использовать явное разименование, хотя бы ссылочных полей |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |