Имя: Пароль:
1C
1С v8
Левое соединение - в правой части задваиваются показатели
0 Темный
 
03.08.12
11:11
Добрый день, коллеги! С пятницей всех! Есть запросик (оборачиваемость). Так вот, данные по продажам задваиваются. Не могу понять, в чем дело? Подскажите, плз.
Вот запрос (СКД)
ВЫБРАТЬ
   Номенклатура1.Ссылка КАК Номенклатура,
   ЗапросОстатков.Склад,
   ЗапросОстатков.ХарактеристикаНоменклатуры,
   ЗапросОстатков.КоличествоОстаток КАК КоличествоОстаток,
   ЗапросОстатков.Период КАК Период,
   ЗапросПродажи.КоличествоОборот КАК КоличествоПродажи,
   НЕДЕЛЯ(&Период) КАК СтолбецПериод
ИЗ
   Справочник.Номенклатура КАК Номенклатура1
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ТоварыНаСкладахОстатки.Склад КАК Склад,
           ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
           ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
           &Период КАК Период,
           ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура
       ИЗ
           РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, &ОстаткиНаСкладе) КАК ТоварыНаСкладахОстатки
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           ТоварыПереданныеОстатки.Контрагент,
           ТоварыПереданныеОстатки.ХарактеристикаНоменклатуры,
           ТоварыПереданныеОстатки.КоличествоОстаток,
           &Период,
           ТоварыПереданныеОстатки.Номенклатура
       ИЗ
           РегистрНакопления.ТоварыПереданные.Остатки(&Период, &ОстаткиУКоммисионеров) КАК ТоварыПереданныеОстатки) КАК ЗапросОстатков
           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               ПродажиОбороты.Номенклатура КАК Номенклатура,
               ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
               ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
               &Период КАК Период
           ИЗ
               РегистрНакопления.Продажи.Обороты(&Период, КОНЕЦПЕРИОДА(&Период, ДЕНЬ), День, ) КАК ПродажиОбороты) КАК ЗапросПродажи
           ПО ЗапросОстатков.Номенклатура = ЗапросПродажи.Номенклатура
               И ЗапросОстатков.ХарактеристикаНоменклатуры = ЗапросПродажи.ХарактеристикаНоменклатуры
       ПО Номенклатура1.Ссылка = ЗапросОстатков.Номенклатура
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Номенклатура)
   СПИСОК (ВЫБРАТЬ
           СвойстваОбъектов.Ссылка,
           СвойстваОбъектов.Наименование + " (св-во)" КАК Наименование,
           СвойстваОбъектов.ТипЗначения
       ИЗ
           ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
       ГДЕ
           СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
           И (НЕ СвойстваОбъектов.ПометкаУдаления))
   ИДЕНТИФИКАТОР Ссылка
   ИМЯ Наименование
   ТИПЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯ РегистрСведений.ЗначенияСвойствОбъектов
   ОБЪЕКТ Объект
   ХАРАКТЕРИСТИКА Свойство
   ЗНАЧЕНИЕ Значение }
1 Defender aka LINN
 
03.08.12
11:13
Делай 2 набора данных
2 Темный
 
03.08.12
11:25
(1) Пробовал, кажется. Не работает отбор по характеристикам, кажется. В этом случае. Ну и собственно интересно - а почему так не работает? Не вижу ошибки...
3 Темный
 
03.08.12
11:30
(1) Вспомнил, в чем проблема была с еще одним набором данных. Мне же надо использовать в отчете и остатки (один набор данных), и продажи (другой набор данных). Я плохо знаю СКД и у меня не получилось использовать данные в отчете из двух наборов.
4 viktor_vv
 
03.08.12
11:33
Ошибка в том, что одна и та же номенклатура у тебя может быть и на складах и в товарах переденных, то есть в ЗапросОстатки у тебя будет две строки с одинаковой номенклатурой, и при левом соединении с Продажами по Номенклатуре продажи и к той и к другой строке присоедянятся одинаковые.
5 viktor_vv
 
03.08.12
11:36
И с продажами ты соединяшь только по двум измерениям, при этом в остатках есть еще одно измерение Склад/Конрагент.
6 Темный
 
03.08.12
11:42
(5) Вот, это в точку. (4) не в тему, т. к. при полном объединении поле одно, просто ресурсы суммируются. То есть, на разных складах (или у разных контрагентов) дублируются записи, и поэтому продажи задваиваются.... Точно, истино так. Хм. А как обойти?
7 viktor_vv
 
03.08.12
12:31
(6) (5) это продолжение от (4). В (4) рассказал откуда берутся несколько строк с одинаковым набором Номенклатура - Характеристика.
Тебе ж в (1) написали про два набора данных. В первом Остатки, во втором Продажи. Не могу сказать насчет не работающего отбора по характеристикам.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший