Вход | Регистрация
 

замена значения в запросе

замена значения в запросе
Я
   falselight
 
22.09.16 - 10:31
имеется некий запрос
в котором имеется некое поле
к каждой строки выборки привязан документ
в документе есть табличная часть, имеющая
среди своих строк, одну или несколько с нужными значениями
которые нужно извлечь и проставить в нужное поле выборки
как это можно сделать в этом же запросе???
или лучше обрабатывать саму выборку, добывая эти значения
из строки где содержится документ, извлекать их из его тч
и проставлять в нужное поле выборки?
   falselight
 
1 - 22.09.16 - 10:34
в одном запросе задвоения строк возможно будут
видимо лучше обработать обойдя после основную выборку?
   jsmith
 
2 - 22.09.16 - 10:35
Да. Агрегирующей функции нет, число полей левого соединения неизвестно
   falselight
 
3 - 22.09.16 - 10:43
(2) там может быть как одно поле, так и 2 так и 6
то есть последующей обработкой выборки сделать?
   jsmith
 
4 - 22.09.16 - 10:45
(3) Да
Пиши запрос с левым соединением, выгружай в дерево значений и обрабатывай строки верхнего уровня
   falselight
 
5 - 22.09.16 - 10:46
(4) да это тоесть делать в цикле перебирая выборку?
или все же советуете делать в запросе?
   falselight
 
6 - 22.09.16 - 10:46
я планирую перебирать существующую выборку, обрабатывая документ в ней
   ovrfox
 
7 - 22.09.16 - 10:48
Лучше предоставить некий запрос, чтобы теоретическое обсуждение было более конкретным.
А вообще в теории это возможно.
   falselight
 
8 - 22.09.16 - 10:48
(6) не сильно это повлияет на быстродействие общее?
так как все это выполняться будет при открытии обработки
   falselight
 
9 - 22.09.16 - 10:51
(7) запрос
||

ВЫБРАТЬ
    МАКСИМУМ(А_ЗанятостьРабочихЦентров.Период) КАК Период,
    А_ЗанятостьРабочихЦентров.Заказ
ПОМЕСТИТЬ Занятость
ИЗ
    РегистрСведений.А_ЗанятостьРабочихЦентров КАК А_ЗанятостьРабочихЦентров

СГРУППИРОВАТЬ ПО
    А_ЗанятостьРабочихЦентров.Заказ
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Занятость.Заказ,
    Атл_ИнтерфейсПроизводства.КП_Снят
ПОМЕСТИТЬ Снятые
ИЗ
    Занятость КАК Занятость
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Атл_ИнтерфейсПроизводства КАК Атл_ИнтерфейсПроизводства
        ПО Занятость.Период = Атл_ИнтерфейсПроизводства.Дата
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект,
    ЗначенияСвойствОбъектов.Значение
ПОМЕСТИТЬ _ВремяЗаказов
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &Свойство
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЗаказНаПроизводствоВсе.Заказ КАК Заказ,
    ЗаказНаПроизводствоВсе.ГотовКПечати КАК ГотовКПечати,
    ЗаказНаПроизводствоВсе.Закрыт КАК Закрыт,
    ЗаказНаПроизводствоВсе.Номенклатура,
    ВЫБОР
        КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат"
            ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец
        ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец
    КОНЕЦ КАК Заказчик,
    ЗаказНаПроизводствоВсе.Нож КАК Нож,
    СУММА(ЗаказНаПроизводствоВсе.Тираж) КАК Тираж,
    _ВремяЗаказов.Значение КАК Время,
    ЗаказНаПроизводствоВсе.Порядок,
    ЗаказНаПроизводствоВсе.Цветность,
    ЗаказНаПроизводствоВсе.Материал,
    ЗаказНаПроизводствоВсе.Приоритет,
    ЗаказНаПроизводствоВсе.ДМ,
    ЗаказНаПроизводствоВсе.ПорядокВПриоритете,
    ЗаказНаПроизводствоВсе.ДатаОтгрузки,
    ЗаказНаПроизводствоВсе.Сумма,
    ЗаказНаПроизводствоВсе.МП,
    ВложенныйЗапрос.Препресс
ИЗ
    РегистрСведений.А_РеестрЗаказов КАК ЗаказНаПроизводствоВсе
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.А_ЗанятостьРабочихЦентров.СрезПоследних(&Период, ) КАК А_ЗанятостьРабочихЦентровСрезПоследних
        ПО (А_ЗанятостьРабочихЦентровСрезПоследних.Заказ = ЗаказНаПроизводствоВсе.Заказ)
        ЛЕВОЕ СОЕДИНЕНИЕ _ВремяЗаказов КАК _ВремяЗаказов
        ПО ЗаказНаПроизводствоВсе.Заказ = _ВремяЗаказов.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска КАК ЗаказВыпуска,
            ОтчетПроизводстваЗаСменуПродукция.Ссылка КАК Ссылка
        ИЗ
            Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
        ГДЕ
            ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ИСТИНА) КАК ОтчетПроизводстваЗаСменуПродукция
        ПО ЗаказНаПроизводствоВсе.Заказ = ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство КАК ЗаказНаПроизводство,
            ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка КАК Ссылка
        ИЗ
            Документ.ЗакрытиеЗаказовНаПроизводство.Заказы КАК ЗакрытиеЗаказовНаПроизводствоЗаказы
        ГДЕ
            ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ИСТИНА) КАК ЗакрытиеЗаказовНаПроизводствоЗаказы
        ПО ЗаказНаПроизводствоВсе.Заказ = ЗакрытиеЗаказовНаПроизводствоЗаказы.ЗаказНаПроизводство
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗаказПокупателя1.Номер КАК Номер,
            ВЫБОР
                КОГДА ЗаказПокупателя1.Пленки = ИСТИНА
                        И ЗаказПокупателя1.НожГотов = ИСТИНА
                        И ЗаказПокупателя1.Трафарет = ИСТИНА
                        И ЗаказПокупателя1.Вал = ИСТИНА
                        И ЗаказПокупателя1.Макет = ИСТИНА
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ КАК Препресс
        ИЗ
            Документ.ЗаказПокупателя КАК ЗаказПокупателя1) КАК ВложенныйЗапрос
        ПО ЗаказНаПроизводствоВсе.Заказ.Номер = ВложенныйЗапрос.Номер
        ЛЕВОЕ СОЕДИНЕНИЕ Снятые КАК Снятые
        ПО ЗаказНаПроизводствоВсе.Заказ = Снятые.Заказ
ГДЕ
    ЗаказНаПроизводствоВсе.Заказ.Проведен = ИСТИНА
    И ВЫБОР
            КОГДА ЕСТЬNULL(Снятые.КП_Снят, 0) = ИСТИНА
                ТОГДА ИСТИНА
            ИНАЧЕ ВЫБОР
                    КОГДА ЕСТЬNULL(Снятые.Заказ, 0) = 0
                        ТОГДА ВЫБОР
                                КОГДА ЕСТЬNULL(ОтчетПроизводстваЗаСменуПродукция.Ссылка, 0) = 0
                                        ИЛИ ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ЛОЖЬ
                                    ТОГДА ИСТИНА
                                ИНАЧЕ ЛОЖЬ
                            КОНЕЦ
                    ИНАЧЕ ЛОЖЬ
                КОНЕЦ
        КОНЕЦ
    И ВЫБОР
            КОГДА ЕСТЬNULL(ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка, 0) = 0
                    ИЛИ ЗакрытиеЗаказовНаПроизводствоЗаказы.Ссылка.Проведен = ЛОЖЬ
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ
    И ЗаказНаПроизводствоВсе.Закрыт = ЛОЖЬ

СГРУППИРОВАТЬ ПО
    ЗаказНаПроизводствоВсе.Заказ,
    ЗаказНаПроизводствоВсе.ГотовКПечати,
    ЗаказНаПроизводствоВсе.Закрыт,
    ЗаказНаПроизводствоВсе.Номенклатура,
    ЗаказНаПроизводствоВсе.Нож,
    _ВремяЗаказов.Значение,
    ВЫБОР
        КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат"
            ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец
        ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец
    КОНЕЦ,
    ЗаказНаПроизводствоВсе.Порядок,
    ЗаказНаПроизводствоВсе.Цветность,
    ЗаказНаПроизводствоВсе.Материал,
    ЗаказНаПроизводствоВсе.Приоритет,
    ЗаказНаПроизводствоВсе.ДМ,
    ЗаказНаПроизводствоВсе.ПорядокВПриоритете,
    ЗаказНаПроизводствоВсе.ДатаОтгрузки,
    ЗаказНаПроизводствоВсе.Сумма,
    ЗаказНаПроизводствоВсе.МП,
    ВложенныйЗапрос.Препресс
   falselight
 
10 - 22.09.16 - 10:52
В запросе (9) в итоговом
есть поле Заказ, типа документ заказ на производство
у которого и есть некая тч с этими значениями
которых может быть разное количество
   falselight
 
11 - 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
ВЫБОР
        КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат"
            ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец
        ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец
    КОНЕЦ КАК Заказчик

внушает
   falselight
 
14 - 22.09.16 - 11:00
(12) в (10) пока и выбирается всего одно значение из существующих
   falselight
 
15 - 22.09.16 - 11:12
почему не работает такой запрос?

||

ВЫБРАТЬ
    ЗаказНаПроизводствоСекции.Ссылка,
    ЗаказНаПроизводствоСекции.Пантон,
    ЗаказНаПроизводствоСекции.ТипСекции.Наименование
ИЗ
    Документ.ЗаказНаПроизводство.Секции КАК ЗаказНаПроизводствоСекции
ГДЕ
    ЗаказНаПроизводствоСекции.Ссылка = &ЗаказНаПроизводство
    И ЗаказНаПроизводствоСекции.ТипСекции.Наименование = "Фллллл"
   ovrfox
 
16 - 22.09.16 - 11:21
(15) Потому  что кавычки не двойные
   ovrfox
 
17 - 22.09.16 - 11:22
(15) а вообще лучше в явном виде разыменовывать поля, т.е. так
ВЫБРАТЬ
    ЗаказНаПроизводствоСекции.Ссылка, 
    ЗаказНаПроизводствоСекции.Пантон,
    спрТипСекции.Наименование 
ИЗ 
    Документ.ЗаказНаПроизводство.Секции КАК ЗаказНаПроизводствоСекции 
Соединение Справочник.ТипыСекций как спрТипСекции
по спрТипСекции.Ссылка = ЗаказНаПроизводствоСекции.ТипСекции
ГДЕ
    ЗаказНаПроизводствоСекции.Ссылка = &ЗаказНаПроизводство
    И спрТипСекции.Наименование = "Фллллл"
   falselight
 
18 - 22.09.16 - 11:25
(16) получилось, похоже от того было что там одна буква латинская
   ovrfox
 
19 - 22.09.16 - 11:25
Кстати, скорее всего вариант
 ВЫБОР
        КОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец.Наименование = "Полуфабрикат"
            ТОГДА ЗаказНаПроизводствоВсе.Номенклатура.Владелец
        ИНАЧЕ ЗаказНаПроизводствоВсе.Номенклатура.Владелец
    КОНЕЦ
Работать не будет. Нужно использовать явное разименование, хотя бы ссылочных полей

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.