Ошибка в отчёте

1. Intercititude 29.01.20 17:42 Сейчас в теме
Есть запрос на скд:

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЗаказ.Клиент,
	ВЗаказ.Канал,
	ВЗаказ.Номенклатура,
	ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
	ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
	ВЫРАЗИТЬ(ВЗаказ.ПервоначальноеЗначениеРезерва КАК ЧИСЛО(15, 2)) КАК ПервоначальноеЗнач,
	ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК ТекЗначение,
	ВЫРАЗИТЬ(ПродажиОбороты.КоличествоОборот / 3 КАК ЧИСЛО(15, 2)) КАК Среднее
ИЗ
	ВЗаказ КАК ВЗаказ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
		ПО ВЗаказ.Ссылка = ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
			И ВЗаказ.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
			И ВЗаказ.СерияНоменклатуры = ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры
			И ВЗаказ.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
		ПО ВЗаказ.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
	ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0

УПОРЯДОЧИТЬ ПО
	ДатаНачалаСрочногоРезерва,
	ДатаКонцаСрочногоРезерва
Показать



В итоге среднее вообще не выводит. Среднее равно продажи за три последних месяца от текущей даты.
Не пойму в чём дело. Подскажите пожалуйста. Буду благодарен если укажете на ошибки.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
33. vadim.semyonov.rzn 30.01.20 15:42 Сейчас в теме +0.33 $m
(32)
Вы посмотрели мой запрос из
Я бы нарисовал по-другому (как вначале писал):
ВЫБРАТЬ
    ВЗ.Заказчик КАК Клиент,
    ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
    ВЗ.Ссылка,
    ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
    ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
    ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
    ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
    ВнутреннийЗаказТовары.СерияНоменклатуры,
    ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказ
ИЗ
    Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
        ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
    ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
    И ВЗ.Проведен = ИСТИНА
    И ВЗ.ПометкаУдаления = ЛОЖЬ

ИНДЕКСИРОВАТЬ ПО
    Номенклатура
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    втЗаказ.Клиент,
    втЗаказ.Канал,
    втЗаказ.Ссылка,
    втЗаказ.Номенклатура,
    втЗаказ.ДатаКонцаСрочногоРезерва,
    втЗаказ.ДатаНачалаСрочногоРезерва,
    втЗаказ.ПервоначальноеЗначениеРезерва,
    втЗаказ.СерияНоменклатуры,
    втЗаказ.ХарактеристикаНоменклатуры
    ТоварыВРезервеНаСкладахОстатки.Номенклатура,
    ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
    ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
    ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказыРезервы
ИЗ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказ КАК втЗаказ
        ПО втЗаказ.Ссылка = Резервы.ДокументРезерва
            И втЗаказ.Номенклатура = Резервы.Номенклатура
            И втЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
            И втЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
ГДЕ
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    втЗаказыРезервы.Клиент,
    втЗаказыРезервы.Канал,
    втЗаказыРезервы.Ссылка,
    втЗаказыРезервы.Номенклатура,
    втЗаказыРезервы.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
    втЗаказыРезервы.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
    втЗаказыРезервы.ПервоначальноеЗначениеРезерва,
    ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
    ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
    втЗаказыРезервы КАК втЗаказыРезервы
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
        ПО втЗаказыРезервы.Номенклатура = ПродажиОбороты.Номенклатура
            И втЗаказыРезервы.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
            И втЗаказыРезервы.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
    ПродажиОбороты.КоличествоОборот > 0

УПОРЯДОЧИТЬ ПО
    ДатаНачалаСрочногоРезерва,
    ДатаКонцаСрочногоРезерва
Показать
Базы с Вашими метаданными у меня нет, поэтому проверить корректность запроса не могу.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dakork 33 29.01.20 17:46 Сейчас в теме
(1)
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3)
вот это не сработает в СКД. Используй фигурные скобки т.е. РегистрНакопления.Продажи.Обороты({(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3)},
3. Intercititude 29.01.20 17:55 Сейчас в теме
(2) добавил фигурные, вообще НачалоПериода сбрасывает
4. Intercititude 29.01.20 17:58 Сейчас в теме
(2) Сомневаюсь, что в этом вообще дело. Убрал в принципе добавитькдате. Всё равно ничего не выводит в поле "Среднее"
5. ErshKUS 2 29.01.20 18:08 Сейчас в теме
(1) пробуй "есть по частям", для начала просто
ПродажиОбороты.КоличествоОборот
, потом подели на 3, может там нулл прилетает или еще какой то "прикол"
Intercititude; +1 Ответить
11. Intercititude 30.01.20 11:10 Сейчас в теме
(5) null есть да. Но его не должно быть по идее.
6. alex-l19041 8 29.01.20 18:09 Сейчас в теме
я бы сделал еще одну таблицу (после ВЗаказ) в которую вычислил среднее по номенклатуре из ВЗаказ, в виртуальной таблице сразу условие Номенклатура В ( Выбрать Номенклатура ИЗ ВЗаказ)
8. Intercititude 29.01.20 18:37 Сейчас в теме
(6)имеете ввиду после взаказ взять регистр Продажи, оттуда количество и условие на виртуальную табл. Потом снова во временную и уже с остатками товары на складах выводить все ?
alex-l19041; +1 Ответить
7. ErshKUS 2 29.01.20 18:10 Сейчас в теме
Нужно бить на части и смотреть в консоли что в вирт.таблицах содержится, так проще найти ошибку
vadim.semyonov.rzn; +1 Ответить
9. vadim.semyonov.rzn 29.01.20 18:48 Сейчас в теме
Вы устанавливаете условие "ГДЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0" на результирующую таблицу с двумя левыми соединениями. Теоретически, это может внести сумятицу. Если нужно отбирать положительные остатки именно в результирующей таблице, лучше сформируйте еще одну вирт. таб. как во втором запросе, только без условия, а потом уже выберите из нее положительные остатки. Если нужно отобрать положительные остатки из резерва на складах, а уже потом добавить эти записи в результирующую таблицу, то лучше выборку из регистра резерва с условием утащить во вложенный запрос.
10. Intercititude 30.01.20 11:07 Сейчас в теме
(9) Имеете ввиду где я связываю документ с регистром "ТоварыВРезервеНаСкладахОстатки" поместить во временную таблицу "Резервы" допустим. После создать запрос 3 и уже с регистром Продажи соединять вновь с временной таблицой "Резервы"?
12. vadim.semyonov.rzn 30.01.20 11:10 Сейчас в теме
(10) Предлагаемые запросы:
1) Товары из внутренних заказов с отбором
2) Товары в резерве на складах с отбором
3) Соединение результата запроса 2 и оборотов "Продажи" с результатом запроса 1 левым способом, уже без отборов.
13. Intercititude 30.01.20 11:11 Сейчас в теме
(12) Что подразумевается под отборами?
14. vadim.semyonov.rzn 30.01.20 11:14 Сейчас в теме
(13) Это просто привычка )) Имеются в виду условия, в первом запросе "ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон И ВЗ.Проведен = ИСТИНА И ВЗ.ПометкаУдаления = ЛОЖЬ", во втором - "ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0"
15. Intercititude 30.01.20 11:21 Сейчас в теме
(14) Тогда правильно ли я понял?

1) Товары из внутренних заказов с отбором - Все нужные поля выбираю,после в временная таблица "Заказы".
2) Товары в резерве на складах с отбором - Вывожу поле количество из регистра. Помещаю во временную таблицу "Резервы".
3).Соединение результата запроса 2 и оборотов "Продажи" с результатом запроса 1 левым способом, уже без отборов. - Соединяю Таблицу "Заказы" левым соединением с регистром "Продажи" и временной талицей "Резервы".
16. vadim.semyonov.rzn 30.01.20 11:28 Сейчас в теме
(15) Ну да, как-то так попробуйте.
17. Intercititude 30.01.20 11:31 Сейчас в теме
(16) Буду пробывать сейчас.
А подскажите табличную часть документа и документ надо всегда полным соединением связывать по ссылке или левым таб.часть с документом по ссылке? Задался этим вопрос что то.
18. vadim.semyonov.rzn 30.01.20 11:36 Сейчас в теме
(17) Разницы нет особой, поскольку табличная часть отдельно от документа не существует. Внутреннее соединение просто всегда подразумевает однозначность.
20. l4h 30.01.20 11:40 Сейчас в теме
(18) Уверены в этом? Насколько я знаю теорию, если в реквизитах документа есть табличная часть, то для этого типа создается реальная таблица в базе данных и к ней можно спокойно обратиться, записи табличной части имеют реквизит ссылка, который указывает на документ, которому они принадлежат. Поэтому, мне кажется, что разница есть. Или я что-то не понимаю?
19. l4h 30.01.20 11:37 Сейчас в теме
(17) чтобы не задаваться такими вопросами нужно понимать что такое левое соединение - это когда выбираются все элементы из левой таблицы, из правой только те, которые соответствуют условию ПО.
21. Intercititude 30.01.20 11:42 Сейчас в теме
(19) Выходит и правда неважно каким соединением, раз ПО ссылке ?
22. vadim.semyonov.rzn 30.01.20 11:44 Сейчас в теме
(19)
когда выбираются все элементы из левой таблицы, из правой только те, которые соответствуют условию ПО
Попробуйте смоделировать ситуацию, когда Вы обращаетесь к существующей табличной части несуществующего документа, всё станет ясно. Ссылка в документе и в табличной части всегда определяют однозначную их связь, поэтому разницы в видах соединения в данном случае нет.
26. l4h 30.01.20 12:05 Сейчас в теме
(22) Понял Вас. Вы правы, в данном случае разницы не будет. Спасибо.
23. Intercititude 30.01.20 11:54 Сейчас в теме
(16) Вышло так. Но теперь "ТекЗначение" выводит null. Хотя условие на нул есть и количество > 0. Как быть?

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

ИНДЕКСИРОВАТЬ ПО
	Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК ТекЗначение,
	ТоварыВРезервеНаСкладахОстатки.Номенклатура,
	ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
	ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
ПОМЕСТИТЬ Резервы
ИЗ
	РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
ГДЕ
	ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЗаказ.Клиент,
	ВЗаказ.Канал,
	ВЗаказ.Номенклатура,
	ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
	ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
	ВЗаказ.ПервоначальноеЗначениеРезерва КАК ПервоначальноеЗнач,
	Резервы.ТекЗначение
ИЗ
	ВЗаказ КАК ВЗаказ
		ЛЕВОЕ СОЕДИНЕНИЕ Резервы КАК Резервы
		ПО ВЗаказ.Номенклатура = Резервы.Номенклатура
			И ВЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
			И ВЗаказ.Ссылка = Резервы.ДокументРезерва

УПОРЯДОЧИТЬ ПО
	ДатаНачалаСрочногоРезерва,
	ДатаКонцаСрочногоРезерва
Показать
24. vadim.semyonov.rzn 30.01.20 12:00 Сейчас в теме
(23) Вполне возможно, что по условиям соединения остатков нет. А проверку на ЕСТЬNULL нужно ставить в третьем запросе, а не во втором, поскольку при отсутствии строк в вирт. таб. Резервы даст именно NULL в третьем запросе.
25. Intercititude 30.01.20 12:05 Сейчас в теме
(24) Но мне не нужны нулевые позиции. То есть условие количествоостаток > 0 должно в третьем запросе тоже быть ? Смысл второй временной таблицы тогда..
27. vadim.semyonov.rzn 30.01.20 12:07 Сейчас в теме
(25) Тогда соединяйте вторую таблицу с первой опять же внутренним способом
28. Intercititude 30.01.20 12:19 Сейчас в теме
(27) В общем вот итог :

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

ИНДЕКСИРОВАТЬ ПО
	Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТоварыВРезервеНаСкладахОстатки.Номенклатура,
	ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
	ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
	ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
	ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ Резервы
ИЗ
	РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЗаказ.Клиент,
	ВЗаказ.Канал,
	ВЗаказ.Ссылка,
	ВЗаказ.Номенклатура,
	ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
	ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
	ВЗаказ.ПервоначальноеЗначениеРезерва,
	ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
	ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
	ВЗаказ КАК ВЗаказ
		ЛЕВОЕ СОЕДИНЕНИЕ Резервы КАК Резервы
		ПО ВЗаказ.Ссылка = Резервы.ДокументРезерва
			И ВЗаказ.Номенклатура = Резервы.Номенклатура
			И ВЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
			И ВЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
		ПО ВЗаказ.Номенклатура = ПродажиОбороты.Номенклатура
			И ВЗаказ.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
			И ВЗаказ.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
	Резервы.ТекЗначение > 0
	И ПродажиОбороты.КоличествоОборот > 0

УПОРЯДОЧИТЬ ПО
	ДатаНачалаСрочногоРезерва,
	ДатаКонцаСрочногоРезерва
Показать


Вроде всё выводит корректно. Одно смущает, что заказов мало выводит. Тобишь из-за ПродажиОбороты.КоличествоОборот > 0. Это корректно вообще ?
29. vadim.semyonov.rzn 30.01.20 13:10 Сейчас в теме
(28)
Одно смущает, что заказов мало выводит.
Ну так никто не мешает Вам пройтись в консоли запросов по виртуальным таблицам и сравнить их "глазами". Вполне возможно, что всё корректно.
30. Intercititude 30.01.20 13:56 Сейчас в теме
(29) Сверил с типовым отчётом продажи. Там почему то количество больше у некоторых позиции..
31. vadim.semyonov.rzn 30.01.20 15:12 Сейчас в теме
(30) Периоды для оборотов задаете корректно (начало дня - конец дня)?
32. Intercititude 30.01.20 15:28 Сейчас в теме
(31) Да. Вы посмотрели мой запрос из (28) ?может Вам что то там бросится в глаза,я не вижу ошибку.

Ещё интересует,я в параметры виртуальной таблицы Продажи передаю &ДатаДок. После в параметрах скд присваиваю &ДатаДок значение ТекущаяДата().
Собственно как к этой ТекущаяДата() добавить именно КонецМесяца ? Вместо ТекущаяДата() Сделать текущиймесяц?
33. vadim.semyonov.rzn 30.01.20 15:42 Сейчас в теме +0.33 $m
(32)
Вы посмотрели мой запрос из
Я бы нарисовал по-другому (как вначале писал):
ВЫБРАТЬ
    ВЗ.Заказчик КАК Клиент,
    ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
    ВЗ.Ссылка,
    ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
    ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
    ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
    ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
    ВнутреннийЗаказТовары.СерияНоменклатуры,
    ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказ
ИЗ
    Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
        ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
    ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
    И ВЗ.Проведен = ИСТИНА
    И ВЗ.ПометкаУдаления = ЛОЖЬ

ИНДЕКСИРОВАТЬ ПО
    Номенклатура
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    втЗаказ.Клиент,
    втЗаказ.Канал,
    втЗаказ.Ссылка,
    втЗаказ.Номенклатура,
    втЗаказ.ДатаКонцаСрочногоРезерва,
    втЗаказ.ДатаНачалаСрочногоРезерва,
    втЗаказ.ПервоначальноеЗначениеРезерва,
    втЗаказ.СерияНоменклатуры,
    втЗаказ.ХарактеристикаНоменклатуры
    ТоварыВРезервеНаСкладахОстатки.Номенклатура,
    ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
    ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
    ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказыРезервы
ИЗ
    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказ КАК втЗаказ
        ПО втЗаказ.Ссылка = Резервы.ДокументРезерва
            И втЗаказ.Номенклатура = Резервы.Номенклатура
            И втЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
            И втЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
ГДЕ
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    втЗаказыРезервы.Клиент,
    втЗаказыРезервы.Канал,
    втЗаказыРезервы.Ссылка,
    втЗаказыРезервы.Номенклатура,
    втЗаказыРезервы.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
    втЗаказыРезервы.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
    втЗаказыРезервы.ПервоначальноеЗначениеРезерва,
    ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
    ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
    втЗаказыРезервы КАК втЗаказыРезервы
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
        ПО втЗаказыРезервы.Номенклатура = ПродажиОбороты.Номенклатура
            И втЗаказыРезервы.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
            И втЗаказыРезервы.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
    ПродажиОбороты.КоличествоОборот > 0

УПОРЯДОЧИТЬ ПО
    ДатаНачалаСрочногоРезерва,
    ДатаКонцаСрочногоРезерва
Показать
Базы с Вашими метаданными у меня нет, поэтому проверить корректность запроса не могу.
36. Intercititude 30.01.20 16:36 Сейчас в теме
(33) А по поводу округления в большую сторону,вы не знаете как ?

Допустим у меня ЕСТЬNULL(ПродажиОбороты.КоличествоОборот / 3, 0) КАК Среднее

КоличествоОборот = 11/3 = 3.6666666
Как округлить в запросе чтобы было 4 ?

Этот способ верен ? : Выразить(моеЧисло+0.4999999999 КАК ЧИСЛО(10,0))
38. vadim.semyonov.rzn 30.01.20 17:21 Сейчас в теме
(36)
Как округлить в запросе чтобы было 4 ?
А не проще задать целый формат в полях через форматную строку?
Intercititude; +1 Ответить
41. ErshKUS 2 31.01.20 13:05 Сейчас в теме
(38) а как там организовать округление вверх. Насколько помню там только 1,5 > 2 ; 1,4 > 1
42. Intercititude 31.01.20 13:30 Сейчас в теме
(41) Тоже не смог через форматную строку, оставил свой вариант.
39. ErshKUS 2 31.01.20 12:17 Сейчас в теме
45. Intercititude 05.02.20 11:30 Сейчас в теме
(33) Появился вопрос. Почему во втором запросе мы делаем полное соединение? Сейчас понадобилось убрать оба условия Количество > 0 из двух последних запросов. Но данные не корректно отображаются,если убрать условие на количество. Если сделать во втором запросе левое соединение документа с регистром, то в графе кол-во из продаж странные числа появляются...
46. vadim.semyonov.rzn 05.02.20 14:00 Сейчас в теме
(45)
Почему во втором запросе мы делаем полное соединение?
Пересмотрел запрос, полного соединения не нашел. Используется внутреннее соединение, чтобы в результат попали только те заказы, которые мы отобрали в первом запросе. А странности лучше всего изучить консолью запросов с просмотром временных таблиц.
Intercititude; +1 Ответить
47. Intercititude 05.02.20 14:43 Сейчас в теме
(46) Ошибся, полное да. Просто если я убираю в двух последних запросах условие Количество > 0. То происходит вакханалия какая то )
34. ErshKUS 2 30.01.20 15:56 Сейчас в теме
(28) по запросу:
1. зачем в "ВЗаказ"
    Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
        ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка

это лишнее, в ВнутреннийЗаказТовары.Ссылка есть всё то же
35. Intercititude 30.01.20 16:13 Сейчас в теме
(34) Это достоверная информация?
37. vadim.semyonov.rzn 30.01.20 17:20 Сейчас в теме
(34)
это лишнее, в ВнутреннийЗаказТовары.Ссылка есть всё то же
Разрешено и возможно обратиться в запросе к реквизиту как "ВнутреннийЗаказТовары.Ссылка.Заказчик", но при этом система при выполнения запроса все равно соединит таблицу документов с табличной частью, и это действие будет повторено многократно. Поэтому при явном связывании табличной части с документом экономятся ресурсы. При тяжелых запросах это очень ощутимо.
40. ErshKUS 2 31.01.20 12:19 Сейчас в теме
Напишите ваше сообщение
(37) не знал, т.е. если я делаю "ВнутреннийЗаказТовары.Ссылка.Дата" и "ВнутреннийЗаказТовары.Ссылка.Номер", то получается основной запрос к таблице и нему лепятся 2 запроса к документу по каждому полю? o.O
43. ErshKUS 2 31.01.20 14:17 Сейчас в теме
(37) похоже что это неверно, будет только один join таблицы и документа https://forum.infostart.ru/forum9/topic69827/#message749789 зато код запроса в 1С короче и легче к восприятию.
44. vadim.semyonov.rzn 31.01.20 14:39 Сейчас в теме
(43) В методических рекомендациях 1С указывается, что обращение к любому полю через ссылку приводит к полному считыванию объекта (включая все поля и все табличные части), что может существенно увеличить время считывания. При указании конкретных полей в запросе такой проблемы не наблюдается.
Intercititude; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот