Имя: Пароль:
1C
1С v8
Отсутствует измерение во втором регистре, данные ресурсов группируются неверно
,
0 ac13
 
25.01.19
18:18
Два регистра "Продажи" и "ПродажиСебестоимость". В первом есть измерение "Менеджер", во втором нет. Надо отобрать данные стоимости и себестоимости продаж с детализацией по Менеджеру, но из-за отсутствия данного измерения во втором регистре записи в нем группируются, когда в продажах эта записи могут разбиваться на несколько строк, потому что для записей разные менеджеры.
В результате следующего запроса данные в отчете по себестоимости неверные. Как получить корректную сумму по себестоимости с учетом того, что данные при условии группировки по Менеджеру?
ВЫБРАТЬ
    ПродажиОбороты.Организация КАК Организация,
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.Регистратор КАК Регистратор,
    ПродажиОбороты.КоличествоОборот КАК КоличествоПродажи,
    ТаблицаРегистраПродажиСебестоимость.Количество КАК Количество,
    ПродажиОбороты.НДСОборот КАК НДС,
    ПродажиОбороты.СтоимостьОборот КАК Стоимость,
    ВЫБОР
        КОГДА ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.Количество, 0) > ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0)
            ТОГДА ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0) / ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.Количество, 0) * ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0)
        ИНАЧЕ ЕСТЬNULL(ТаблицаРегистраПродажиСебестоимость.СтоимостьОборот, 0)
    КОНЕЦ КАК Себестоимость,
    ПродажиОбороты.Склад КАК Склад,
    ПродажиОбороты.Менеджер КАК Менеджер
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, {(Организация).* КАК Организация, (Проект).* КАК Проект, (Подразделение).* КАК Подразделение, (Контрагент).* КАК Покупатель, (ДоговорКонтрагента).* КАК ДоговорПокупателя, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (ЗаказПокупателя).* КАК ЗаказПокупателя}) КАК ПродажиОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПродажиСебестоимость.Номенклатура КАК Номенклатура,
            ВЫБОР
                КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
                    ТОГДА ПродажиСебестоимость.ДокументДвижения
                ИНАЧЕ ПродажиСебестоимость.Регистратор
            КОНЕЦ КАК Регистратор,
            СУММА(ПродажиСебестоимость.Количество) КАК Количество,
            СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот
        ИЗ
            РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
        ГДЕ
            ПродажиСебестоимость.Период МЕЖДУ &ДатаНачала И &ДатаКонца
        {ГДЕ
            ПродажиСебестоимость.Проект.* КАК Проект,
            ПродажиСебестоимость.Подразделение.* КАК Подразделение,
            ПродажиСебестоимость.ДокументОприходования.* КАК ДокументОприходования,
            ПродажиСебестоимость.ДокументОприходования.Контрагент.* КАК Поставщик,
            ПродажиСебестоимость.Номенклатура.* КАК Номенклатура,
            ПродажиСебестоимость.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
            ПродажиСебестоимость.ЗаказПокупателя.* КАК ЗаказПокупателя}
        
        СГРУППИРОВАТЬ ПО
            ПродажиСебестоимость.Номенклатура,
            ВЫБОР
                КОГДА ПродажиСебестоимость.ДокументДвижения <> НЕОПРЕДЕЛЕНО
                    ТОГДА ПродажиСебестоимость.ДокументДвижения
                ИНАЧЕ ПродажиСебестоимость.Регистратор
            КОНЕЦ) КАК ТаблицаРегистраПродажиСебестоимость
        ПО (ТаблицаРегистраПродажиСебестоимость.Номенклатура = ПродажиОбороты.Номенклатура)
            И (ТаблицаРегистраПродажиСебестоимость.Регистратор = ПродажиОбороты.Регистратор)
1 lubitelxml
 
25.01.19
18:22
в поле менеджер что пишешь? во второй таблице через регистратор это поле не можешь получить?
2 ac13
 
25.01.19
18:23
(1) не могу, так как поле Менеджер в регистраторе - это реквизит табличной части
3 lubitelxml
 
25.01.19
18:24
(2) группируй сначала тч, потом ее присоединить ко второй таблице?
4 ac13
 
25.01.19
18:28
Проблема вот в чем, на примере:

Регистр Продажи
Тапочки меховые голубые, 1 шт., 240 руб., Иванов Павел
Тапочки меховые голубые, 2 шт., 480 руб., Петров Михаил

Регистр ПродажиСебестоимость
Тапочки меховые голубые, 3 шт., 600 руб. (себестоимость)

"Продажи" - главный регистр, "ПродажиСебестоимсть" соединяется с "Продажи".
5 lubitelxml
 
25.01.19
18:31
в регистраторе продажи у тебя менеджер в табличной части?
6 lubitelxml
 
25.01.19
18:32
в одной накладной грубо говоря несколько менеджеров может быть, или можно взять из первой строки?
7 ac13
 
25.01.19
18:38
(6) да, по одной накладной может быть несколько менеджеров
8 lubitelxml
 
25.01.19
18:39
ну так и сгруппируй табличную часть регистратора по менеджерам - получишь расшифровку, если у тебя там данные конечно совпадают...
9 ac13
 
25.01.19
18:41
(8) так мне как раз наоборот надо разгруппировать записи ПродажиСебестоимость
10 lubitelxml
 
25.01.19
18:44
(9) сначала надо получить менеджера во второй таблице таблице получить чтобы нормально соединить их
11 lubitelxml
 
25.01.19
18:47
не типовая уже? может добавить ПродажиСебестоимость измерение Менеджер и допилить движения?
12 ac13
 
25.01.19
18:50
(11) да, нетиповая, тоже подумал об этом
13 lubitelxml
 
25.01.19
18:54
если не типовая - то так правильнее
14 ac13
 
25.01.19
19:00
(13) понял, спасибо)
15 palsergeich
 
25.01.19
20:50
Ой я бы во все что касается себестоимости ничего лишнего не пихал. Нафиг надо.
Уж лучше параллельный регистр спроектировать и заполнить, чем трогать типовые.
16 palsergeich
 
25.01.19
20:52
Судя по коду - конфу мало что спасет через пол года...
17 palsergeich
 
25.01.19
20:58
Внутреннее с подзапросом в котором группировка - скользкая штука
18 d4rkmesa
 
26.01.19
09:47
(0) Можно добавить не измерение, а реквизит в регистр ПродажиСебестоимость. Похоже на УПП, там зачастую соединение таблицы оборотов по РН Продажи с "физической" ПродажиСебестоимость используется, для отчетов вроде этого нормально будет, да и на итоги не повлияет.
Независимо от того, куда вы едете — это в гору и против ветра!