|
Сложное условие в запросе / Возможно ли такое провернуть вообще? | ☑ | ||
---|---|---|---|---|
0
plur
06.02.18
✎
10:21
|
Приветствую всех!
Имеется следующий запрос: ВЫБРАТЬ РАЗРЕШЕННЫЕ СпрНоменклатура.Номенклатура КАК Номенклатура, СпрНоменклатура.Характеристика КАК Характеристика ПОМЕСТИТЬ ВТНоменклатура ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа {ГДЕ Номенклатура.Ссылка.* КАК Номенклатура} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СпрХарактеристики.Владелец, СпрХарактеристики.Ссылка ИЗ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики {ГДЕ СпрХарактеристики.Владелец.* КАК Номенклатура, СпрХарактеристики.Ссылка.* КАК ХарактеристикаНоменклатуры}) КАК СпрНоменклатура ГДЕ СпрНоменклатура.Номенклатура В ИЕРАРХИИ(&Группа) СГРУППИРОВАТЬ ПО СпрНоменклатура.Характеристика, СпрНоменклатура.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТНоменклатура.Номенклатура, ВТНоменклатура.Характеристика, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ТипЦен, ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)) КАК ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ПОМЕСТИТЬ Таб ИЗ ВТНоменклатура КАК ВТНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ) КАК ЦеныНоменклатурыСрезПоследних ПО ВТНоменклатура.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ВТНоменклатура.Характеристика = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО ВТНоменклатура.Характеристика, ВТНоменклатура.Номенклатура, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ТипЦен, ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)), ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ Таб.Номенклатура, Таб.Характеристика, ВЫРАЗИТЬ(Таб.Характеристика.титНаименованиеДляПечати КАК СТРОКА(300)) КАК Цвет, Таб.Номенклатура.Наименование КАК Товар, Таб.Номенклатура.ОсновноеИзображение КАК Изображение, Таб.Номенклатура.Модель КАК Модель, Таб.Номенклатура.Рисунок КАК Рисунок, Таб.Номенклатура.Размер КАК Размер, Таб.Номенклатура.ТехникаВышивки.НаименованиеПечати КАК ТипВышивки, ВЫРАЗИТЬ(Таб.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК СТРОКА(300)) КАК Описание, Таб.Характеристика.НаименованиеКраткое КАК МатериалОсновной, ВЫРАЗИТЬ(Таб.Номенклатура.Фурнитура КАК СТРОКА(300)) КАК Фурнитура, Таб.ТипЦен КАК ТипЦен, Таб.Цена КАК Цена, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL ТОГДА """" ИНАЧЕ ЗначенияСвойствОбъектов.Значение.Рост КОНЕЦ КАК Рост, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL ТОГДА """" ИНАЧЕ ЗначенияСвойствОбъектов.Значение.Вышивка КОНЕЦ КАК Вышивка ИЗ Таб КАК Таб ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО Таб.Характеристика = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство = &Свойство) СГРУППИРОВАТЬ ПО Таб.Номенклатура.ОсновноеИзображение, Таб.Номенклатура, Таб.Характеристика, Таб.Номенклатура.Наименование, Таб.Номенклатура.Модель, Таб.Номенклатура.Рисунок, Таб.Номенклатура.Размер, Таб.Номенклатура.ТехникаВышивки.НаименованиеПечати, Таб.Характеристика.НаименованиеКраткое, Таб.ТипЦен, Таб.Цена, ВЫРАЗИТЬ(Таб.Характеристика.титНаименованиеДляПечати КАК СТРОКА(300)), ВЫРАЗИТЬ(Таб.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК СТРОКА(300)), ВЫРАЗИТЬ(Таб.Номенклатура.Фурнитура КАК СТРОКА(300)), ВЫБОР КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL ТОГДА """" ИНАЧЕ ЗначенияСвойствОбъектов.Значение.Рост КОНЕЦ, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL ТОГДА """" ИНАЧЕ ЗначенияСвойствОбъектов.Значение.Вышивка КОНЕЦ УПОРЯДОЧИТЬ ПО Таб.Номенклатура, Таб.Характеристика АВТОУПОРЯДОЧИВАНИЕ Из "Характеристики" интересует поле "Цвет", проблема в том что считывается он конструкцией Если ЗначениеЗаполнено(ТекСтрока.Цвет) Тогда ТекЦвет = СокрЛП(ТекСтрока.Цвет); Если Найти(ТекЦвет, "/") > 0 Тогда ПозицияРазделителя = СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(ТекЦвет, "/"); ТекСтрока.Цвет = Лев(ТекЦвет, ПозицияРазделителя - 1); КонецЕсли; КонецЕсли; т.е. в цикле после запроса как часть строки вида "(Т00024144) лен бежевые огурцы /3.1.265/ разм 170-84-90". Отличается только последняя часть (разм ...). Как сгруппировать элементы по цвету, в смысле по части строки в самом запросе? Возможно как то по другому можно это сделать? Гугл не помог. Заранее спасибо за любой дельный совет. |
|||
1
hhhh
06.02.18
✎
10:26
|
ну тоже так
ВЫБОР КОГДА ЗначенияСвойствОбъектовРазм.Значение ЕСТЬ NULL ТОГДА """" ИНАЧЕ ЗначенияСвойствОбъектовРазм.Значение КОНЕЦ КАК Разм ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектовРазм ПО Таб.Характеристика = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство = &СвойствоРазм) |
|||
2
тарам пам пам
06.02.18
✎
10:47
|
(0) По хорошему надо сначала обработать справочник и разделить характеристики, чтобы в цвете был действительно только цвет и в отдельной характеристике размер, вместо извращений при выводе отчета. После чего пользователи должны проверить, что все правильно разделилось. Потому что инфа 146% в какой-нибудь из номенклатур забит сначала размер, а потом цвет.
|
|||
3
dezss
06.02.18
✎
10:51
|
(2) + или
(Т00024144) лен бежевые/красные огурцы /3.1.265/ разм 170-84-90 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |