Имя: Пароль:
1C
1С v8
Запрос и дублирование полей
0 AlexKulikov
 
16.02.17
18:17
Добрый день, уважаемые форумчане.

Есть запрос для УТ 10.3 (10.3.35.1), который формирует отчет по номенклатуре в разрезе определенных цен( всего 4 вида цены).
Так вот, понадобилось мне вытащить Валюту, только для определенной цены, в итоге получается задвоение строк, одна строка с ценой и валютой, все остальные пустые и вторая строка со всеми остальными ценами, но без валюты.

Помогите пожалуйста понять, где я накосячил, ниже привожу код запроса:
<code>
ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения КАК ЕденицаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Закупочная,
    |    NULL КАК ОтПоставщика,
    |    NULL КАК КраснаяЦена,
    |    NULL КАК ЗеленаяЦена,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код,
    |    NULL КАК Валюта
    |ПОМЕСТИТЬ ТестВременнаяТаблица
    |ИЗ
    |    Справочник.Номенклатура КАК СПРНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &Закупочная) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СПРНоменклатура.Ссылка)
    |
    |СГРУППИРОВАТЬ ПО
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    NULL,
    |    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена),
    |    NULL,
    |    NULL,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код,
    |    ЦеныНоменклатурыСрезПоследних.Валюта
    |ИЗ
    |    Справочник.Номенклатура КАК СПРНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ЦенаПоставщика) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СПРНоменклатура.Ссылка)
    |
    |СГРУППИРОВАТЬ ПО
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код,
    |    ЦеныНоменклатурыСрезПоследних.Валюта
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    NULL,
    |    NULL,
    |    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена),
    |    NULL,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код,
    |    NULL
    |ИЗ
    |    Справочник.Номенклатура КАК СПРНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &КраснаяЦена) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СПРНоменклатура.Ссылка)
    |
    |СГРУППИРОВАТЬ ПО
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    NULL,
    |    NULL,
    |    NULL,
    |    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена),
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код,
    |    NULL
    |ИЗ
    |    Справочник.Номенклатура КАК СПРНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ЗеленаяЦена) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СПРНоменклатура.Ссылка)
    |
    |СГРУППИРОВАТЬ ПО
    |    СПРНоменклатура.Наименование,
    |    СПРНоменклатура.Артикул,
    |    СПРНоменклатура.БазоваяЕдиницаИзмерения,
    |    СПРНоменклатура.ЕдиницаХраненияОстатков,
    |    СПРНоменклатура.MOQ,
    |    СПРНоменклатура.ШиринаРемня,
    |    СПРНоменклатура.ДлинаРемня,
    |    СПРНоменклатура.Референс,
    |    СПРНоменклатура.ПрофильШкива,
    |    СПРНоменклатура.Ссылка,
    |    СПРНоменклатура.Родитель,
    |    СПРНоменклатура.Код
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ТестВременнаяТаблица.Артикул,
    |    ТестВременнаяТаблица.ЕденицаИзмерения,
    |    ТестВременнаяТаблица.ЕдиницаХраненияОстатков,
    |    ТестВременнаяТаблица.MOQ,
    |    ТестВременнаяТаблица.ШиринаРемня,
    |    ТестВременнаяТаблица.ДлинаРемня,
    |    ТестВременнаяТаблица.Референс,
    |    ТестВременнаяТаблица.ПрофильШкива,
    |    МАКСИМУМ(ТестВременнаяТаблица.Закупочная) КАК Закупочная,
    |    МАКСИМУМ(ТестВременнаяТаблица.ОтПоставщика) КАК ОтПоставщика,
    |    МАКСИМУМ(ТестВременнаяТаблица.КраснаяЦена) КАК КраснаяЦена,
    |    МАКСИМУМ(ТестВременнаяТаблица.ЗеленаяЦена) КАК ЗеленаяЦена,
    |    ТестВременнаяТаблица.Ссылка,
    |    ТестВременнаяТаблица.Родитель,
    |    ТестВременнаяТаблица.Код,
    |    ТестВременнаяТаблица.Валюта
    |ИЗ
    |    ТестВременнаяТаблица КАК ТестВременнаяТаблица
    |
    |СГРУППИРОВАТЬ ПО
    |    ТестВременнаяТаблица.ЕденицаИзмерения,
    |    ТестВременнаяТаблица.MOQ,
    |    ТестВременнаяТаблица.ПрофильШкива,
    |    ТестВременнаяТаблица.Артикул,
    |    ТестВременнаяТаблица.ЕдиницаХраненияОстатков,
    |    ТестВременнаяТаблица.ШиринаРемня,
    |    ТестВременнаяТаблица.ДлинаРемня,
    |    ТестВременнаяТаблица.Референс,
    |    ТестВременнаяТаблица.Ссылка,
    |    ТестВременнаяТаблица.Родитель,
    |    ТестВременнаяТаблица.Код,
    |    ТестВременнаяТаблица.Валюта
    |
    |УПОРЯДОЧИТЬ ПО
    |    ТестВременнаяТаблица.Ссылка.ЭтоГруппа ИЕРАРХИЯ,
    |    ТестВременнаяТаблица.Ссылка.Наименование
</code>
1 AlexKulikov
 
16.02.17
18:18
С уважением, Алексей.
2 AlexKulikov
 
16.02.17
18:25
До добавления поля Валюта, отчет отрабатывал корректно. Теперь же появилась вот такая хрень. Хотя количество полей в запросе одинаковое, данные по валюте берутся только в одном запросе из 4, во всех остальных запросах используется NULL
3 kosts
 
16.02.17
19:59
В принципе такой конструкции должно быть достаточно.
Единственно все измерения регистра ЦеныНоменклатуры надо добавить в условия дополнительно к ТипЦен (ну кроме номенклатуры, конечно).


ВЫБРАТЬ
        СПРНоменклатура.Наименование,
        СПРНоменклатура.Артикул,
        СПРНоменклатура.БазоваяЕдиницаИзмерения КАК ЕденицаИзмерения,
        СПРНоменклатура.ЕдиницаХраненияОстатков,
        СПРНоменклатура.MOQ,
        СПРНоменклатура.ШиринаРемня,
        СПРНоменклатура.ДлинаРемня,
        СПРНоменклатура.Референс,
        СПРНоменклатура.ПрофильШкива,
        Закупочные.Цена КАК Закупочная,
        Поставщика.Цена  КАК ОтПоставщика,
        Красные.Цена  КАК КраснаяЦена,
        Зеленые.Цена  КАК ЗеленаяЦена,
        СПРНоменклатура.Ссылка,
        СПРНоменклатура.Родитель,
        СПРНоменклатура.Код,
        Поставщика.Валюта КАК ВалютаЦенПоставщика
    ИЗ
        Справочник.Номенклатура КАК СПРНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &Закупочная) КАК Закупочные
            ПО (Закупочные.Номенклатура = СПРНоменклатура.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ЦенаПоставщика) КАК Поставщика
            ПО (Поставщика.Номенклатура = СПРНоменклатура.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &КраснаяЦена) КАК Красные
            ПО (Красные.Номенклатура = СПРНоменклатура.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ЗеленаяЦена) КАК Зеленые
            ПО (Зеленые.Номенклатура = СПРНоменклатура.Ссылка)