новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Решить проблему в отчет СКД

    • #1
    • 29.10.2020 14:11
    0
    Имеется запрос. Мне нужны данные по продажам беру я их из регистра накопления ПродажиОбороты, но в каждом контрагенте есть свойства которые мне тоже нужны в отчете (Вид доставки, Категория клиента...  Подробнее>>
    • #2
    • 29.10.2020 14:12
    0
    Если свойство одно, укажи в условиях какое. Если нужно много свойств соединяй с несколькими таблицами ЗначениеСвойствОбъектов и для каждой указывай в условиях какое именно свойство нужно. Это по простому.
    • #3
    • 29.10.2020 14:14
    0
    Нюанс с левым соединением
    • #4
    • 29.10.2020 14:15
    0
    Вот так должно заработать:

    ВЫБРАТЬ
    ВлСвойства.Контрагент КАК Контрагент,
    МАКСИМУМ(ВлСвойства.ВидДоставки) КАК ВидДоставки,
    МАКСИМУМ(ВлСвойства.КатегорияКлиента) КАК КатегорияКлиента
    ПОМЕСТИТЬ ВтСвойства
    ИЗ
    (ВЫБРАТЬ
    ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Контрагенты) КАК Контрагент,
    ЗначенияСвойствОбъектов.Значение КАК ВидДоставки,
    НЕОПРЕДЕЛЕНО КАК КатегорияКлиента
    ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &СвойствоВидДоставки

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Контрагенты),
    НЕОПРЕДЕЛЕНО,
    ЗначенияСвойствОбъектов.Значение
    ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &СвойствоКатегорияКлиента) КАК ВлСвойства

    СГРУППИРОВАТЬ ПО
    ВлСвойства.Контрагент

    ИНДЕКСИРОВАТЬ ПО
    Контрагент
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.СтоимостьОборот КАК Стоимость,
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.НДСОборот КАК НДС,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Регистратор,
    ПродажиОбороты.Регистратор.Ссылка,
    ВтСвойства.ВидДоставки,
    ВтСвойства.КатегорияКлиента
    ИЗ
    РегистрНакопления.Продажи.Обороты(, , Регистратор, ) КАК ПродажиОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ ВтСвойства КАК ВтСвойства
    ПО ПродажиОбороты.Контрагент = ВтСвойства.Контрагент
    • #5
    • 29.10.2020 14:27
    -1
    Коллеги. Помните, что отчет на СКД.

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


    В-общем, копайте в этом направлении. Либо могу Вам сделать именно для Вашего случая, но чуть попозже.
    • #6
    • 29.10.2020 14:33
    0
    Назаренко Сергей Васильевич
    В-общем, копайте в этом направлении.


    Забыл уточнить. И левое соединение с РегистрСведений.ЗначенияСвойствОбъектов из исходного запроса вообще уберите. Конструкция {ХАРАКТЕРИСТИКИ ...} работает без него.
    • #7
    • 29.10.2020 14:37
    • Отредактировано: 29.10.2020 14:54:37
    0
    Декартово произведение. Сколько реквизитов, такой и множитель будет. Нужно для каждого реквизита делать отдельное соединение с одной и той же таблицей допреквизитов, но с разными условиями.
    • #8
    • 29.10.2020 15:12
    -1
    Олег
    Нужно для каждого реквизита делать отдельное соединение


    Перестаньте вводить Заказчика в заблуждение. Не нужно тут никаких соединений вообще. Нужно пользоваться СКД-расширением языка запросов.
    • #9
    • 29.10.2020 15:50
    0
    ВЫБРАТЬ РАЗЛИЧНЫЕ

    В остальном Запрос верный
    • #10
    • 29.10.2020 16:23
    0
    самый простой способ наверно сделать 2 Набора. В первом наборе данные из рег накопления, во втором из рег сведений. соединяетесь по контрагенту, ресурсы из регистра накоплений рассчитывайте только на уровне контрагента, группировки. В этом случае дублировать данные не будет
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться