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

1С:Предприятие ::

Метки: 

Сложное условие в запросе / Возможно ли такое провернуть вообще?

Я
   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".

Отличается только последняя часть (разм ...).

Как сгруппировать элементы по цвету, в смысле по части строки в самом запросе?

Возможно как то по другому можно это сделать? Гугл не помог.

Заранее спасибо за любой дельный совет.
 
 
   hhhh
 
1 - 06.02.18 - 10:26
ну тоже так

    ВЫБОР
        КОГДА ЗначенияСвойствОбъектовРазм.Значение ЕСТЬ NULL
            ТОГДА """"
        ИНАЧЕ ЗначенияСвойствОбъектовРазм.Значение
    КОНЕЦ КАК Разм

       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектовРазм
        ПО Таб.Характеристика = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &СвойствоРазм)
   тарам пам пам
 
2 - 06.02.18 - 10:47
(0) По хорошему надо сначала обработать справочник и разделить характеристики, чтобы в цвете был действительно только цвет и в отдельной характеристике размер, вместо извращений при выводе отчета. После чего пользователи должны проверить, что все правильно разделилось. Потому что инфа 146% в какой-нибудь из номенклатур забит сначала размер, а потом цвет.
   dezss
 
3 - 06.02.18 - 10:51
(2) + или
(Т00024144) лен бежевые/красные огурцы /3.1.265/ разм 170-84-90


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