Имя: Пароль:
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) написали про два набора данных. В первом Остатки, во втором Продажи. Не могу сказать насчет не работающего отбора по характеристикам.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший