Всем доброго времени суток. Дайте, пожалуйста, совет, как исправить проблему. Суть проблемы: запрос выводит данные для каждого товара в накладной, но с последней колонкой (РасходыПоСделке) не работает. (смотрите скриншот). Как я понимаю суть в том, что для последней колонки берутся данные из всех накладных по всем товарам и записываются во все строки. Числа получаются одинаковые в разных накладных во всех товарах. Не могу понять, как сделать так, чтобы для последней колонки (РасходыПоСделке) записывались лишь значения соответствующие товару (строке). Помогите, пожалуйста, понять.
Прилагаю код запроса:
Прилагаю код запроса:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СебестоимостьКВыгрузкеПроекты.Сделка КАК Сделка,
| &Организация КАК Организация
|ПОМЕСТИТЬ ВТ_СебестоимостьКВыгрузке
|ИЗ
| &ТЗ КАК СебестоимостьКВыгрузкеПроекты
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВТ_СебестоимостьКВыгрузке.Сделка КАК Сделка,
| СУММА(ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот, 0)) КАК Себестоимость,
| СУММА(ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.СуммаДополнительныхРасходовОборот, 0)) КАК ДопРасходы,
| ДополнительныеРасходыПоСделкеОбороты.СуммаВалОборот КАК РасходыПоСделке
|ИЗ
| ВТ_СебестоимостьКВыгрузке КАК ВТ_СебестоимостьКВыгрузке
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродажОбороты
| ПО (ВТ_СебестоимостьКВыгрузке.Сделка = ВЫРАЗИТЬ(ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента КАК Документ.ЗаказКлиента).Сделка)
| И ВТ_СебестоимостьКВыгрузке.Организация = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Организация
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты КАК ДополнительныеРасходыПоСделкеОбороты
| ПО ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация
|
|СГРУППИРОВАТЬ ПО
| ВТ_СебестоимостьКВыгрузке.Сделка,
| ДополнительныеРасходыПоСделкеОбороты.СуммаВалОборот";
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("ТЗ", Объект.Проекты.Выгрузить());
Объект.Проекты.Загрузить(Запрос.Выполнить().Выгрузить());
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление
- Ожидания RESOURCE_SEMAPHORE и RESOURCE_SEMAPHORE_QUERY_COMPILE – внешние проявления, и как с ними бороться
- 1C:Предприятие для программистов: Запросы и отчеты. Онлайн-интенсив с 14 мая по 13 июня 2024 г.
- Пользовательские настройки отчетов 1С. Часть 2. Группировки и варианты
- Как посмотреть итоговый запрос в отчете СКД
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродажОбороты
| ПО (ВТ_СебестоимостьКВыгрузке.Сделка = ВЫРАЗИТЬ(ВыручкаИСебестоимостьПродажОбороты.ЗаказКлиента КАК Документ.ЗаказКлиента).Сделка)
| И ВТ_СебестоимостьКВыгрузке.Организация = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Организация
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты КАК ДополнительныеРасходыПоСделкеОбороты
| ПО ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация
Видите разницу в том как соединяете регистр ВыручкаИСебестоимостьПродаж и регистр ДополнительныеРасходыПоСделке?
Для ДополнительныеРасходыПоСделке второе поле соединения заказ клиента.
Для ДополнительныеРасходыПоСделке соединение только по организации.
Соедините и по заказу если архитектура регистра это позволяет. И получите желаемое
Эти строки:
Необходимо заменить примерно на следующее:
Это в том случае, если в Регистре "ДополнительныеРасходыПоСделке" есть реквизит "Сделка"
Если нет такого реквизита, то или добавляйте его (и реквизит и программный код в обработку проведения),
или делайте периодичность этого регистра по Регистратору (если Регистратор - Накладная)
и тогда эти строки будут выглядеть так:
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты КАК ДополнительныеРасходыПоСделкеОбороты
| ПО ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация
Необходимо заменить примерно на следующее:
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты КАК ДополнительныеРасходыПоСделкеОбороты
| ПО (ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация)
| И (ВТ_СебестоимостьКВыгрузке.Сделка = ДополнительныеРасходыПоСделкеОбороты.Сделка)
Это в том случае, если в Регистре "ДополнительныеРасходыПоСделке" есть реквизит "Сделка"
Если нет такого реквизита, то или добавляйте его (и реквизит и программный код в обработку проведения),
или делайте периодичность этого регистра по Регистратору (если Регистратор - Накладная)
и тогда эти строки будут выглядеть так:
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты(, , Регистратор, ) КАК ДополнительныеРасходыПоСделкеОбороты
| ПО (ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация)
| И (ВТ_СебестоимостьКВыгрузке.Сделка = ДополнительныеРасходыПоСделкеОбороты.Регистратор)
(18) Судя по всему у вас что то в архитектуре данных наивно сделано.
ВыручкаИСебестоимостьПродаж - регистр типовой
Откуда собирается ВТ_СебестоимостьКВыгрузке из фрагмента запроса не ясно, но по связи понятно, что в этой ВТ сделка совпадает с измерением ЗаказКлиента в регистре ВыручкаИСебестоимостьПродаж.
Регистр ДополнительныеРасходыПоСделке в типовой УТ, например, отсутствует. Вероятно самодельный. Вы когда его проектировали сделку зачем сделали справочником? Может быть подразумевалось что у него тип справочиники.СделкиСКлиентами ? Но тогда с документом вы его разумеется не сопоставите.
Но на вашем же скрине есть измерение ЗаказКлиента под сделкой, сопоставляйте по нему?
ВыручкаИСебестоимостьПродаж - регистр типовой
Откуда собирается ВТ_СебестоимостьКВыгрузке из фрагмента запроса не ясно, но по связи понятно, что в этой ВТ сделка совпадает с измерением ЗаказКлиента в регистре ВыручкаИСебестоимостьПродаж.
Регистр ДополнительныеРасходыПоСделке в типовой УТ, например, отсутствует. Вероятно самодельный. Вы когда его проектировали сделку зачем сделали справочником? Может быть подразумевалось что у него тип справочиники.СделкиСКлиентами ? Но тогда с документом вы его разумеется не сопоставите.
Но на вашем же скрине есть измерение ЗаказКлиента под сделкой, сопоставляйте по нему?
(25) Да, регистр самодельный. И тип у сделки справочиники.СделкиСКлиентами, было сделано так, как сказали. ЗаказКлиента в данном регистре не было изначально, но начиная разбираться с проблемой я его добавил. Вот только если связывать по нему то всё равно на выходе пустые значения
(27) Данные посмотрите, может при формировании движений туда не пишется ничего :)
Если так то есть мутный ход - дописать заполнение измерения при проведении регистраторов. Затем провести все регистраторы сделавшие движения по этому регистру. Так вы получите консистентность данных, позволяющую вам связывать данные этого регистра с данными регистра ВыручкаИСебестоимостьПродаж.
Если так то есть мутный ход - дописать заполнение измерения при проведении регистраторов. Затем провести все регистраторы сделавшие движения по этому регистру. Так вы получите консистентность данных, позволяющую вам связывать данные этого регистра с данными регистра ВыручкаИСебестоимостьПродаж.
(29) Не думаю, что этот мутный ход мне подходит. Фирме не понравится. Получается мне нужно сделать так, чтобы в ЗаказКлиента начали записываться данные? И тогда можно будет сделать вот такие строчки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДополнительныеРасходыПоСделке.Обороты КАК ДополнительныеРасходыПоСделкеОбороты
| ПО ВТ_СебестоимостьКВыгрузке.Организация = ДополнительныеРасходыПоСделкеОбороты.Организация
| И ВТ_СебестоимостьКВыгрузке.Сделка = ДополнительныеРасходыПоСделкеОбороты.ЗаказКлиента
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот