Имя: Пароль:
1C
1С v8
v8: СКД. Почему-то дважды считает количество
0 Vigor06
 
29.04.13
12:04
Добрый день!
Столкнулся с непонятной штукой:
СКД при подсчете количества оказанных услуг считает это количество дважды.
Вроде ничего особенного не изобретаю,но победить не могу(
1С 8.2, конфигурация - хеликс фитнес

Вот сам текст запроса:

ВЫБРАТЬ
   ЦеныНоменклатуры.Цена КАК Себестоимость,
   ВложенныйЗапрос.Ссылка,
   ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ СебестоимостьОтчет
ИЗ
   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры,
   (ВЫБРАТЬ
       ВидыЦен.Ссылка КАК Ссылка
   ИЗ
       Справочник.ВидыЦен КАК ВидыЦен
   ГДЕ
       ВидыЦен.Наименование = "Розничная (разовая) цена") КАК ВложенныйЗапрос
ГДЕ
   ЦеныНоменклатуры.ВидЦен = ВложенныйЗапрос.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   Продажи.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
   Продажи.Склад КАК Склад,
   Продажи.Номенклатура КАК Номенклатура,
   Продажи.КоличествоОборот КАК Количество,
   Продажи.СтоимостьОборот КАК Стоимость,
   Продажи.СтоимостьБезСкидкиОборот КАК СтоимостьБезСкидки,
   Продажи.НомерСтроки КАК НомерСтроки,
   Продажи.Регистратор КАК ДокументДвижения,
   Продажи.ПериодСекунда КАК ПериодСекунда,
   Продажи.ПериодМинута КАК ПериодМинута,
   Продажи.ПериодЧас КАК ПериодЧас,
   Продажи.ПериодДень КАК ПериодДень,
   Продажи.ПериодНеделя КАК ПериодНеделя,
   Продажи.ПериодДекада КАК ПериодДекада,
   Продажи.ПериодМесяц КАК ПериодМесяц,
   Продажи.ПериодКвартал КАК ПериодКвартал,
   Продажи.ПериодПолугодие КАК ПериодПолугодие,
   Продажи.ПериодГод КАК ПериодГод,
   Продажи.Контрагент КАК Контрагент,
   Продажи.ДокументПродажи,
   Продажи.Партия,
   Продажи.Сотрудник,
   Продажи.Договор,
   Продажи.Абонемент,
   ВЫБОР
       КОГДА Продажи.Регистратор ССЫЛКА Документ.ВозвратОтПокупателя
           ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОпераций.Возврат)
       ИНАЧЕ ВЫБОР
               КОГДА Продажи.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
                       ИЛИ Продажи.Регистратор ССЫЛКА Документ.Реализация
                   ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыОпераций.Продажа)
               ИНАЧЕ Продажи.Регистратор.ВидОперации
           КОНЕЦ
   КОНЕЦ КАК ВидОперации,
   СебестоимостьОтчет.Себестоимость
{ВЫБРАТЬ
   Склад.* КАК Склад,
   Контрагент.* КАК Контрагент,
   Номенклатура.* КАК Номенклатура,
   Количество КАК Количество,
   Стоимость КАК Стоимость}
ИЗ
   РегистрНакопления.Продажи.Обороты(
           ,
           ,
           Авто,
           ВЫБОР
                   КОГДА &СегментНоменклатуры = ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)
                       ТОГДА ИСТИНА
                   ИНАЧЕ Номенклатура В
                           (ВЫБРАТЬ
                               НоменклатураСегмента.Номенклатура
                           ИЗ
                               РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
                           ГДЕ
                               НоменклатураСегмента.Сегмент = &СегментНоменклатуры)
               КОНЕЦ
               И ВЫБОР
                   КОГДА &СегментКонтрагентов = ЗНАЧЕНИЕ(Справочник.СегментыКонтрагентов.ПустаяСсылка)
                       ТОГДА ИСТИНА
                   ИНАЧЕ Контрагент В
                           (ВЫБРАТЬ
                               КонтрагентыСегмента.Контрагент
                           ИЗ
                               РегистрСведений.КонтрагентыСегмента КАК КонтрагентыСегмента
                           ГДЕ
                               КонтрагентыСегмента.Сегмент = &СегментКонтрагентов)
               КОНЕЦ {(Номенклатура).* КАК Номенклатура, (Склад).* КАК Склад, (Контрагент).* КАК Контрагент}) КАК Продажи
       {ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК ТаблицаСклады
       ПО (ТаблицаСклады.Ссылка = Продажи.Склад)}
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ СебестоимостьОтчет КАК СебестоимостьОтчет
       ПО Продажи.Номенклатура = СебестоимостьОтчет.Номенклатура
1 mikecool
 
29.04.13
12:07
убери агрегат при расчете ресурса
2 Defender aka LINN
 
29.04.13
12:08

ВЫБРАТЬ
   ЦеныНоменклатуры.Цена КАК Себестоимость,
   ВложенныйЗапрос.Ссылка,
   ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ СебестоимостьОтчет
ИЗ
   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры,
   (ВЫБРАТЬ
       ВидыЦен.Ссылка КАК Ссылка
   ИЗ
       Справочник.ВидыЦен КАК ВидыЦен
   ГДЕ
       ВидыЦен.Наименование = "Розничная (разовая) цена") КАК ВложенныйЗапрос
ГДЕ
   ЦеныНоменклатуры.ВидЦен = ВложенныйЗапрос.Ссылка

Жесть какая...
3 Ёпрст
 
гуру
29.04.13
12:08
(0) есть несколько цен для одной номенклатуры, только и всего
4 Vigor06
 
29.04.13
12:13
(1) Если убираю - то все ок,но мне ж надо и в группировках сумму выдавать. А без агрегата "Сумма" не хочет(
5 Vigor06
 
29.04.13
12:13
(2)Знаю,но так надо)
6 Vigor06
 
29.04.13
12:14
(3) Нет,в том то и дело.
В расшифровке,например,по документу продажи, пишет количество - 2,а открываю документ,там количество-1
7 Defender aka LINN
 
29.04.13
13:41
(5) ТАК - не надо, факт.
8 Vigor06
 
29.04.13
14:53
(7) Ну проблема то не в этом сейчас)
9 mikecool
 
29.04.13
14:57
о, декартово то я и не приметил...
(8) в этом )
10 Trotter
 
29.04.13
14:57
А для начинающих, что не так в отрывке кода который в (2)  ?
11 zladenuw
 
29.04.13
15:01
(10) что что. вот это ВидыЦен.Наименование = "Розничная (разовая) цена"
12 Vigor06
 
29.04.13
15:08
(11) Я понимаю,что привязываться к наименованию - моветон,но эти цены точно меняться не будут

(9)  а что в этом не так еще?
13 Vigor06
 
30.04.13
12:08
АП что ли(
14 Defender aka LINN
 
30.04.13
12:15
(12) Нахрена городить какой-то вложенный запрос, еще и соединение с ним делать? Почему не написать

ВЫБРАТЬ
   ЦеныНоменклатуры.Цена КАК Себестоимость,
   ЦеныНоменклатуры.ВидЦен,
   ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ СебестоимостьОтчет
ИЗ
   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры,
ГДЕ
    ЦеныНоменклатуры.ВидЦен = &ВидЦен

?

Ну и почему физическая таблица регистра, почему не срез?
15 Vigor06
 
30.04.13
12:48
(12) Ну так мне в СКД нужно еще ж задать тип цен.А именно цены с указанным наименованием.

И в конце концов,дело то не в ценах,а в количестве.

Пробовал выводить этот отчет вообще без себестоимости - все равно на 2 умножает количество((А если в ресурсах не суммируешь - то все ок,только в группировках не суммирует(
16 Defender aka LINN
 
30.04.13
13:29
(15) ППЦ... С питанием проблем не возникает, ложка до рта нормально доносится?

ГДЕ
    ЦеныНоменклатуры.ВидЦен.Наименование = "Абырвалг"
17 Defender aka LINN
 
30.04.13
13:30
+(16) Хотя я за такое избил бы ногами подчиненного
18 Vigor06
 
30.04.13
13:37
(17)Не сомневаюсь
(16) Вы бы это,пустырничка что ли попили


Друзья!
Да,я сделал криво,не спорю!

Но проблему то поставленную не решаем сейчас(((
19 Defender aka LINN
 
30.04.13
13:40
(18) Дык когда человек элементарные вещи спрашивает - начинаешь задумываться.
Проблема вида "ресурс увеличивается в N раз" - в соединениях, о чем тебе уже сказали. Чего ты еще хочешь, лично мне неясно.
20 Vigor06
 
06.05.13
10:55
Переписал в таком формате:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
   Продажи.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
   Продажи.Склад КАК Склад,
   Продажи.Номенклатура КАК Номенклатура,
   Продажи.КоличествоОборот КАК Количество,
   Продажи.СтоимостьОборот КАК Стоимость,
   Продажи.СтоимостьБезСкидкиОборот КАК СтоимостьБезСкидки,
   Продажи.НомерСтроки КАК НомерСтроки,
   Продажи.Регистратор КАК ДокументДвижения,
   Продажи.ПериодСекунда КАК ПериодСекунда,
   Продажи.ПериодМинута КАК ПериодМинута,
   Продажи.ПериодЧас КАК ПериодЧас,
   Продажи.ПериодДень КАК ПериодДень,
   Продажи.ПериодНеделя КАК ПериодНеделя,
   Продажи.ПериодДекада КАК ПериодДекада,
   Продажи.ПериодМесяц КАК ПериодМесяц,
   Продажи.ПериодКвартал КАК ПериодКвартал,
   Продажи.ПериодПолугодие КАК ПериодПолугодие,
   Продажи.ПериодГод КАК ПериодГод,
   Продажи.Контрагент КАК Контрагент,
   Продажи.ДокументПродажи,
   Продажи.Партия,
   Продажи.Сотрудник,
   Продажи.Договор,
   Продажи.Абонемент,
   ВложенныйЗапрос.Цена КАК Себестоимость
ИЗ
   РегистрНакопления.Продажи.Обороты(
           ,
           ,
           Авто,
           ВЫБОР
                   КОГДА &СегментНоменклатуры = ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)
                       ТОГДА ИСТИНА
                   ИНАЧЕ Номенклатура В
                           (ВЫБРАТЬ
                               НоменклатураСегмента.Номенклатура
                           ИЗ
                               РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
                           ГДЕ
                               НоменклатураСегмента.Сегмент = &СегментНоменклатуры)
               КОНЕЦ
               И ВЫБОР
                   КОГДА &СегментКонтрагентов = ЗНАЧЕНИЕ(Справочник.СегментыКонтрагентов.ПустаяСсылка)
                       ТОГДА ИСТИНА
                   ИНАЧЕ Контрагент В
                           (ВЫБРАТЬ
                               КонтрагентыСегмента.Контрагент
                           ИЗ
                               РегистрСведений.КонтрагентыСегмента КАК КонтрагентыСегмента
                           ГДЕ
                               КонтрагентыСегмента.Сегмент = &СегментКонтрагентов)
               КОНЕЦ {(Номенклатура).* КАК Номенклатура, (Контрагент).* КАК Контрагент}) КАК Продажи
       ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
           ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
       ИЗ
           РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
       ГДЕ
           ЦеныНоменклатурыСрезПоследних.ВидЦен.Наименование = "Розничная (разовая) цена") КАК ВложенныйЗапрос
       ПО Продажи.Номенклатура = ВложенныйЗапрос.Номенклатура



Все равно удваивает количество(
21 Vigor06
 
06.05.13
17:40
Апну разок


НЕ знаю,как иначе построить запрос.Без выбора себестоимости - все ок считает.Но наличие себестоимости в отчете - обязательное условие