Имя: Пароль:
1C
1С v8
СКД Запрос по характеристикам с доп.измерением Страна
0 Taurus_may
 
26.06.17
17:43
Задача:
Дополнительные реквизиты по критерию (например по стране). Доп реквизит по номенклатуре (дата ввода в продажу, в разрезе каждой страны, значения разные)
Описание:
Есть ПВХ, есть РС с измерение Страна.
В запрос на закладке ХАРАКТЕРИСТИКИ добавил

[CODE]{ХАРАКТЕРИСТИКИ
    ТИП(Справочник.Номенклатура)
    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
            ВидыДополнительныхРеквизитов.Ссылка,
            ВидыДополнительныхРеквизитов.ТипЗначения,
            ВидыДополнительныхРеквизитов.Наименование + " [доп. реквизит]" КАК Наименование,
            ВидыДополнительныхРеквизитов.Страна
        ИЗ
            ПланВидовХарактеристик.ВидыДополнительныхРеквизитов КАК ВидыДополнительныхРеквизитов
        ГДЕ
            ВидыДополнительныхРеквизитов.НаборыДополнительныхРеквизитов = ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовСправочников.СправочникСсылка_Номенклатура))
    ПОЛЕКЛЮЧА Ссылка
    ПОЛЕИМЕНИ Наименование
    ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
    ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
            ЗначениеДополнительныхРеквизитовСрезПоследних.ВидДополнительногоРеквизита,
            ЗначениеДополнительныхРеквизитовСрезПоследних.Объект,
            ЗначениеДополнительныхРеквизитовСрезПоследних.ЗначениеРеквизита,
            ЗначениеДополнительныхРеквизитовСрезПоследних.Страна
        ИЗ
            РегистрСведений.ЗначениеДополнительныхРеквизитов.СрезПоследних(&КонецПериода, ) КАК ЗначениеДополнительныхРеквизитовСрезПоследних)
    ПОЛЕОБЪЕКТА Объект
    ПОЛЕВИДА ВидДополнительногоРеквизита
    ПОЛЕЗНАЧЕНИЯ ЗначениеРеквизита } [CODE]

В результате компоновки получается следующая картина:

[CODE]*
ИЗ
    РегистрНакопления.РегистрПродаж.Обороты(&П2, &П, Авто, ) КАК РегистрПродаж
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗначениеДополнительныхРеквизитовСрезПоследних.ВидДополнительногоРеквизита КАК ВидДополнительногоРеквизита,
            ЗначениеДополнительныхРеквизитовСрезПоследних.Объект КАК Объект,
            ЗначениеДополнительныхРеквизитовСрезПоследних.ЗначениеРеквизита КАК ЗначениеРеквизита,
            ЗначениеДополнительныхРеквизитовСрезПоследних.Страна КАК Страна
        ИЗ
            РегистрСведений.ЗначениеДополнительныхРеквизитов.СрезПоследних(&КонецПериода, ) КАК ЗначениеДополнительныхРеквизитовСрезПоследних) КАК ВложенныйЗапрос
        ПО (ВложенныйЗапрос.Объект = РегистрПродаж.Номенклатура
                И ВложенныйЗапрос.ВидДополнительногоРеквизита = &П4) [CODE]

Мне явно не хватает тут связи по стране. Для одного отчета не проблема, можно при компоновке, получили схему поменяли и ок, но возможно есть механизм более универсальный. Например изменить {ХАРАКТЕРИСТИКИ} можно, описав связи по типу (аналогично Объект = Номенклатура).
1 Taurus_may
 
27.06.17
08:27
Upну
2 sFAQer
 
27.06.17
08:35
(1) Замени ВидДополнительногоРеквизита на ключ в который входит ВидДополнительногоРеквизита и Страна и по ключам соединяй
3 Taurus_may
 
27.06.17
08:52
(2) Не пойму чем мне поможет ключ, все равно в регистре накопления нет этого ключа. А формировать его во всех запросах по всем видам... Можно подробней идею?
4 sFAQer
 
28.06.17
04:41
(3) ПОЛЕКЛЮЧА Ссылка, если тут будет лежать некий ключ собранный из всего что тебе надо, то и соединение по нему будет расти автоматически, без необходимсоти изголяться с механизмом характеристик...