Нужно вывести в отчет товары, харатеристики и значение нескольких свойств в поля. Делаю выборку товаров, их характеристик, значения свойств получаю соединяя с регистром значений свойств.
ВЫБРАТЬ ВТ.Владелец КАК Номенклатура, ВТ.Ссылка КАК Характеристика, Штрихкоды.Штрихкод КАК Штрихкод, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, ПеремещениеТоваровТовары.Ссылка КАК ДокументПеремещение, ПеремещениеТоваровТовары.ХарактеристикаНоменклатуры, ЕСТЬNULL(КодЦвета.Значение, "") КАК КодЦвета, Цвет.Значение КАК Цвет, Пол.Значение КАК Пол, ДатаПроизвод.Значение КАК ДатаПроизводства ИЗ Справочник.ХарактеристикиНоменклатуры КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды ПО ВТ.Владелец = Штрихкоды.Владелец И ВТ.Ссылка = Штрихкоды.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ПО ВТ.Ссылка = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК КодЦвета ПО ВТ.Ссылка = КодЦвета.Объект ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Цвет ПО ВТ.Ссылка = Цвет.Объект ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Пол ПО ВТ.Ссылка = Пол.Объект ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ДатаПроизвод ПО ВТ.Ссылка = ДатаПроизвод.Объект, Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ГДЕ Цвет.Свойство = &СвойствоЦвет И КодЦвета.Свойство = &СвойствоКодЦвета И Пол.Свойство = &СвойствоПол И ДатаПроизвод.Свойство = &СвойствоДатаПр
УПОРЯДОЧИТЬ ПО Номенклатура, Характеристика, Штрихкод, Цена, КодЦвета, Цвет, Пол, ДатаПроизводства
Но проблема в том, что если значение свойтства не определено, то такая позиция в отчет не выводится. Потому что: "если есть отбор (на уровне всего отчета)по полям из «подчиненного» набора — Соединение внутреннее, Если в группировке участвует поле из «подчиненного» набора соединение так же внутреннее" [необходимо зарегистрироваться для просмотра ссылки]
Что тогда делать? Как выйти из ситуации?
andreykyiv@bigmir.net @ Сегодня, 10:17
,
Пытался обойти через использование ЕСТЬNULL(КодЦвета.Значение, ""), это можно видеть в коде.. но не вариант. Если есть условие на подчиненную таблицу, то соединение становится внутренним. ((
Вроде бы получилось. Сделал еще один набор данных. Соединение Наборов данных - там 100% работает левое соединение. Для свойства "КодЦвета". Текст немного более громоздкий получается, но не это главное. Боялся, что будут тормоза на больших объемах. Так что интересно, отчет стал выдаваться даже быстрее. Закончу все свойства так описывать, отчитаюсь
Создал наборы данных из нужных мен "ЗначениеСвойствОбъектов", соединяю их с основной таблицей Характеристик. Все работает
Но главное другое: скорость отчета хорошая, т.е. выборка свойств идет хоть и из отдельных наборов, но достаточно быстро. Наверное итоговый запрос к базе оптимизируется
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!