Kickout, количество мест в упаковке это значение, постоянно привязанное к упаковке, и со временем не меняется. Делать под это отдельную таблицу (Регистр сведений) может быть расценено как избыточность данных. То же самое можно сказать про твой второй регистр оборотов ДопЗатраты. Почему нельзя было сразу писать в уже имеющийся регистр Продажи?
В отчете текст запроса
ВЫБРАТЬ
ДопЗатратыОбороты.Номенклатура,
ДопЗатратыОбороты.Накладная,
ПродажиОбороты.КоличествоОборот КАК Количество,
ДопЗатратыОбороты.СуммаОборот + ПродажиОбороты.СебестоимостьОборот КАК Себестоимость,
ПродажиОбороты.ВыручкаОборот - (ДопЗатратыОбороты.СуммаОборот + ПродажиОбороты.СебестоимостьОборот) КАК Прибыль,
ПродажиОбороты.ВыручкаОборот
ИЗ
РегистрНакопления.ДопЗатраты.Обороты КАК ДопЗатратыОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
ПО ДопЗатратыОбороты.Номенклатура = ПродажиОбороты.Номенклатура
И ДопЗатратыОбороты.Накладная = ПродажиОбороты.Накладная
Я бы использовал
ОЪЕДИНИТЬ ВСЕ
вместо левого соединения. Понятно, что на практике правая таблица всегда будет больше или равна левой, но все равно нужна проверка ЕСТЬNULL на ресурс левой таблицы. В обработке проведения распределения затрат в запросе тоже нет проверки на NULL.