Имя: Пароль:
1C
1С v8
Простой запрос по двум регистрам
0 thezos
 
17.10.11
22:10
Запрос для универсального отчета, который показывает прибыль в УТ 10.3. Используется всего два регистра: продажи и продажи себестоимость. Но есть мелкая фигня, от которой не знаю как избавиться. Если по регистру продажи себестоимость списалось две и более партии, то количество и сумма из регистра продаж будут умножаться на это количество партий. Значит я не правильно соединил таблицы. Есть соображения как выйти из положения?
Вот сам запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Продажи.Номенклатура,
   |    Продажи.Регистратор КАК Документ,
   |    Продажи.Контрагент,
   |    Продажи.Организация,
   |    Продажи.ДоговорКонтрагента.Агент КАК Агент,
   |    Продажи.ДоговорКонтрагента.Супервайзер КАК Супервайзер,
   |    Продажи.ДоговорКонтрагента.АдресДоставки КАК Направление,
   |    Продажи.Количество КАК Количество,
   |    Продажи.Стоимость КАК Сумма,
   |    ПродажиСебестоимость.Стоимость КАК Себестоимость,
   |    Продажи.Регистратор.ВидОперации КАК ВидПродажи,
   |    Продажи.Стоимость - ПродажиСебестоимость.Стоимость КАК Доход,
   |    ВЫБОР
   |        КОГДА ПродажиСебестоимость.Стоимость < 0
   |            ТОГДА -1 * (Продажи.Стоимость - ПродажиСебестоимость.Стоимость) / ПродажиСебестоимость.Стоимость * 100
   |        КОГДА ПродажиСебестоимость.Стоимость = 0
   |            ТОГДА 0
   |        ИНАЧЕ (Продажи.Стоимость - ПродажиСебестоимость.Стоимость) / ПродажиСебестоимость.Стоимость * 100
   |    КОНЕЦ КАК ДоходПроценты,
   |    Продажи.Регистратор.ТипЦен КАК ТипЦен
   |{ВЫБРАТЬ
   |    Номенклатура.*,
   |    Контрагент.*,
   |    Организация.*,
   |    Агент.*,
   |    Супервайзер.*,
   |    Направление.*,
   |    Количество,
   |    Сумма,
   |    Себестоимость,
   |    Документ.*,
   |    Доход,
   |    ДоходПроценты,
   |    ТипЦен.*}
   |ИЗ
   |    РегистрНакопления.Продажи КАК Продажи
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
   |        ПО Продажи.Регистратор = ПродажиСебестоимость.Регистратор
   |            И Продажи.Номенклатура = ПродажиСебестоимость.Номенклатура
   |ГДЕ
   |    Продажи.Период МЕЖДУ &Дата1 И &Дата2
   |{ГДЕ
   |    Продажи.Номенклатура.*,
   |    Продажи.Контрагент.*,
   |    Продажи.Организация.*,
   |    Продажи.ДоговорКонтрагента.Агент.* КАК Агент,
   |    Продажи.ДоговорКонтрагента.Супервайзер.* КАК Супервайзер,
   |    Продажи.ДоговорКонтрагента.АдресДоставки.* КАК Направление,
   |    Продажи.Количество,
   |    ПродажиСебестоимость.Стоимость КАК Себестоимость,
   |    Продажи.Стоимость,
   |    Продажи.Регистратор.ВидОперации.* КАК ВидПродажи,
   |    (ВЫБОР
   |            КОГДА ПродажиСебестоимость.Стоимость < 0
   |                ТОГДА -1 * (Продажи.Стоимость - ПродажиСебестоимость.Стоимость) / ПродажиСебестоимость.Стоимость * 100
   |            КОГДА ПродажиСебестоимость.Стоимость = 0
   |                ТОГДА 0
   |            ИНАЧЕ (Продажи.Стоимость - ПродажиСебестоимость.Стоимость) / ПродажиСебестоимость.Стоимость * 100
   |        КОНЕЦ) КАК ДоходПроценты,
   |    (Продажи.Стоимость - ПродажиСебестоимость.Стоимость) КАК Доход,
   |    Продажи.Регистратор.ТипЦен.* КАК ТипЦен}
   |{УПОРЯДОЧИТЬ ПО
   |    Продажи.Период,
   |    Организация.*,
   |    Контрагент.*,
   |    Документ.*,
   |    Номенклатура.*}
   |ИТОГИ
   |    СУММА(Количество),
   |    СУММА(Сумма),
   |    СУММА(Себестоимость),
   |    СУММА(Доход),
   |    СРЕДНЕЕ(ДоходПроценты)
   |ПО
   |    ОБЩИЕ
   |{ИТОГИ ПО
   |    Документ.*,
   |    Контрагент.*,
   |    Организация.*,
   |    Агент.*,
   |    Супервайзер.*,
   |    Направление.*,
   |    Номенклатура.*}
1 Kom-off
 
17.10.11
22:26
Вместо левого соединения к регистру используй левое соединение к запросу к этому регистру и проводи группировку в этом запросе чтобы записи "схлопнулись". А еще в верхнем левом углу есть банер СКД: Бесплатный курс. Скачай и посмотри уроки 86, 87 и 88 - лишним не будет.
2 shuhard
 
17.10.11
22:26
(0) ИЗ
   |    РегистрНакопления.Продажи КАК Продажи

либо группируй в подзапросе, если взял физические таблицы,
либо возьми обороты, там уже сгруппировано
3 Жан Пердежон
 
17.10.11
22:28
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ...)
и в подзапросе сгруппируй как надо
4 thezos
 
17.10.11
22:29
мысль понял, спасибо
5 thezos
 
17.10.11
23:02
(1) хех, в итоге с универсального отчета переделал на скд