ВЫБРАТЬ
ВЗ.Заказчик КАК Клиент,
ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
ВЗ.Ссылка,
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
ВнутреннийЗаказТовары.СерияНоменклатуры,
ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВЗаказ
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЗаказ.Клиент,
ВЗаказ.Канал,
ВЗаказ.Номенклатура,
ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
ВЫРАЗИТЬ(ВЗаказ.ПервоначальноеЗначениеРезерва КАК ЧИСЛО(15, 2)) КАК ПервоначальноеЗнач,
ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК ТекЗначение,
ВЫРАЗИТЬ(ПродажиОбороты.КоличествоОборот / 3 КАК ЧИСЛО(15, 2)) КАК Среднее
ИЗ
ВЗаказ КАК ВЗаказ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
ПО ВЗаказ.Ссылка = ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
И ВЗаказ.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
И ВЗаказ.СерияНоменклатуры = ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры
И ВЗаказ.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
ПО ВЗаказ.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
УПОРЯДОЧИТЬ ПО
ДатаНачалаСрочногоРезерва,
ДатаКонцаСрочногоРезерва
Показать
В итоге среднее вообще не выводит. Среднее равно продажи за три последних месяца от текущей даты.
Не пойму в чём дело. Подскажите пожалуйста. Буду благодарен если укажете на ошибки.
ВЫБРАТЬ
ВЗ.Заказчик КАК Клиент,
ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
ВЗ.Ссылка,
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
ВнутреннийЗаказТовары.СерияНоменклатуры,
ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказ
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказ.Клиент,
втЗаказ.Канал,
втЗаказ.Ссылка,
втЗаказ.Номенклатура,
втЗаказ.ДатаКонцаСрочногоРезерва,
втЗаказ.ДатаНачалаСрочногоРезерва,
втЗаказ.ПервоначальноеЗначениеРезерва,
втЗаказ.СерияНоменклатуры,
втЗаказ.ХарактеристикаНоменклатуры
ТоварыВРезервеНаСкладахОстатки.Номенклатура,
ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказыРезервы
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказ КАК втЗаказ
ПО втЗаказ.Ссылка = Резервы.ДокументРезерва
И втЗаказ.Номенклатура = Резервы.Номенклатура
И втЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
И втЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
ГДЕ
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказыРезервы.Клиент,
втЗаказыРезервы.Канал,
втЗаказыРезервы.Ссылка,
втЗаказыРезервы.Номенклатура,
втЗаказыРезервы.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
втЗаказыРезервы.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
втЗаказыРезервы.ПервоначальноеЗначениеРезерва,
ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
втЗаказыРезервы КАК втЗаказыРезервы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
ПО втЗаказыРезервы.Номенклатура = ПродажиОбороты.Номенклатура
И втЗаказыРезервы.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
И втЗаказыРезервы.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
ПродажиОбороты.КоличествоОборот > 0
УПОРЯДОЧИТЬ ПО
ДатаНачалаСрочногоРезерва,
ДатаКонцаСрочногоРезерва
Показать
Базы с Вашими метаданными у меня нет, поэтому проверить корректность запроса не могу.
я бы сделал еще одну таблицу (после ВЗаказ) в которую вычислил среднее по номенклатуре из ВЗаказ, в виртуальной таблице сразу условие Номенклатура В ( Выбрать Номенклатура ИЗ ВЗаказ)
(6)имеете ввиду после взаказ взять регистр Продажи, оттуда количество и условие на виртуальную табл. Потом снова во временную и уже с остатками товары на складах выводить все ?
9.
vadim.semyonov.rzn
29.01.20 18:48 Сейчас в теме
Вы устанавливаете условие "ГДЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0" на результирующую таблицу с двумя левыми соединениями. Теоретически, это может внести сумятицу. Если нужно отбирать положительные остатки именно в результирующей таблице, лучше сформируйте еще одну вирт. таб. как во втором запросе, только без условия, а потом уже выберите из нее положительные остатки. Если нужно отобрать положительные остатки из резерва на складах, а уже потом добавить эти записи в результирующую таблицу, то лучше выборку из регистра резерва с условием утащить во вложенный запрос.
(9) Имеете ввиду где я связываю документ с регистром "ТоварыВРезервеНаСкладахОстатки" поместить во временную таблицу "Резервы" допустим. После создать запрос 3 и уже с регистром Продажи соединять вновь с временной таблицой "Резервы"?
12.
vadim.semyonov.rzn
30.01.20 11:10 Сейчас в теме
(10) Предлагаемые запросы:
1) Товары из внутренних заказов с отбором
2) Товары в резерве на складах с отбором
3) Соединение результата запроса 2 и оборотов "Продажи" с результатом запроса 1 левым способом, уже без отборов.
14.
vadim.semyonov.rzn
30.01.20 11:14 Сейчас в теме
(13) Это просто привычка )) Имеются в виду условия, в первом запросе "ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон И ВЗ.Проведен = ИСТИНА И ВЗ.ПометкаУдаления = ЛОЖЬ", во втором - "ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0"
1) Товары из внутренних заказов с отбором - Все нужные поля выбираю,после в временная таблица "Заказы".
2) Товары в резерве на складах с отбором - Вывожу поле количество из регистра. Помещаю во временную таблицу "Резервы".
3).Соединение результата запроса 2 и оборотов "Продажи" с результатом запроса 1 левым способом, уже без отборов. - Соединяю Таблицу "Заказы" левым соединением с регистром "Продажи" и временной талицей "Резервы".
(16) Буду пробывать сейчас.
А подскажите табличную часть документа и документ надо всегда полным соединением связывать по ссылке или левым таб.часть с документом по ссылке? Задался этим вопрос что то.
18.
vadim.semyonov.rzn
30.01.20 11:36 Сейчас в теме
(17) Разницы нет особой, поскольку табличная часть отдельно от документа не существует. Внутреннее соединение просто всегда подразумевает однозначность.
(18) Уверены в этом? Насколько я знаю теорию, если в реквизитах документа есть табличная часть, то для этого типа создается реальная таблица в базе данных и к ней можно спокойно обратиться, записи табличной части имеют реквизит ссылка, который указывает на документ, которому они принадлежат. Поэтому, мне кажется, что разница есть. Или я что-то не понимаю?
(17) чтобы не задаваться такими вопросами нужно понимать что такое левое соединение - это когда выбираются все элементы из левой таблицы, из правой только те, которые соответствуют условию ПО.
когда выбираются все элементы из левой таблицы, из правой только те, которые соответствуют условию ПО
Попробуйте смоделировать ситуацию, когда Вы обращаетесь к существующей табличной части несуществующего документа, всё станет ясно. Ссылка в документе и в табличной части всегда определяют однозначную их связь, поэтому разницы в видах соединения в данном случае нет.
(16) Вышло так. Но теперь "ТекЗначение" выводит null. Хотя условие на нул есть и количество > 0. Как быть?
ВЫБРАТЬ
ВЗ.Заказчик КАК Клиент,
ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
ВЗ.Ссылка,
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
ВнутреннийЗаказТовары.СерияНоменклатуры,
ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВЗаказ
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК ТекЗначение,
ТоварыВРезервеНаСкладахОстатки.Номенклатура,
ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
ПОМЕСТИТЬ Резервы
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
ГДЕ
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЗаказ.Клиент,
ВЗаказ.Канал,
ВЗаказ.Номенклатура,
ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗаказ.ПервоначальноеЗначениеРезерва КАК ПервоначальноеЗнач,
Резервы.ТекЗначение
ИЗ
ВЗаказ КАК ВЗаказ
ЛЕВОЕ СОЕДИНЕНИЕ Резервы КАК Резервы
ПО ВЗаказ.Номенклатура = Резервы.Номенклатура
И ВЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
И ВЗаказ.Ссылка = Резервы.ДокументРезерва
УПОРЯДОЧИТЬ ПО
ДатаНачалаСрочногоРезерва,
ДатаКонцаСрочногоРезерва
24.
vadim.semyonov.rzn
30.01.20 12:00 Сейчас в теме
(23) Вполне возможно, что по условиям соединения остатков нет. А проверку на ЕСТЬNULL нужно ставить в третьем запросе, а не во втором, поскольку при отсутствии строк в вирт. таб. Резервы даст именно NULL в третьем запросе.
(24) Но мне не нужны нулевые позиции. То есть условие количествоостаток > 0 должно в третьем запросе тоже быть ? Смысл второй временной таблицы тогда..
ВЫБРАТЬ
ВЗ.Заказчик КАК Клиент,
ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
ВЗ.Ссылка,
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
ВнутреннийЗаказТовары.СерияНоменклатуры,
ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВЗаказ
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТоварыВРезервеНаСкладахОстатки.Номенклатура,
ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ Резервы
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЗаказ.Клиент,
ВЗаказ.Канал,
ВЗаказ.Ссылка,
ВЗаказ.Номенклатура,
ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗаказ.ПервоначальноеЗначениеРезерва,
ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
ВЗаказ КАК ВЗаказ
ЛЕВОЕ СОЕДИНЕНИЕ Резервы КАК Резервы
ПО ВЗаказ.Ссылка = Резервы.ДокументРезерва
И ВЗаказ.Номенклатура = Резервы.Номенклатура
И ВЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
И ВЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
ПО ВЗаказ.Номенклатура = ПродажиОбороты.Номенклатура
И ВЗаказ.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
И ВЗаказ.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
Резервы.ТекЗначение > 0
И ПродажиОбороты.КоличествоОборот > 0
УПОРЯДОЧИТЬ ПО
ДатаНачалаСрочногоРезерва,
ДатаКонцаСрочногоРезерва
Показать
Вроде всё выводит корректно. Одно смущает, что заказов мало выводит. Тобишь из-за ПродажиОбороты.КоличествоОборот > 0. Это корректно вообще ?
(31) Да. Вы посмотрели мой запрос из (28) ?может Вам что то там бросится в глаза,я не вижу ошибку.
Ещё интересует,я в параметры виртуальной таблицы Продажи передаю &ДатаДок. После в параметрах скд присваиваю &ДатаДок значение ТекущаяДата().
Собственно как к этой ТекущаяДата() добавить именно КонецМесяца ? Вместо ТекущаяДата() Сделать текущиймесяц?
ВЫБРАТЬ
ВЗ.Заказчик КАК Клиент,
ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
ВЗ.Ссылка,
ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
ВнутреннийЗаказТовары.СерияНоменклатуры,
ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказ
ИЗ
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказ.Клиент,
втЗаказ.Канал,
втЗаказ.Ссылка,
втЗаказ.Номенклатура,
втЗаказ.ДатаКонцаСрочногоРезерва,
втЗаказ.ДатаНачалаСрочногоРезерва,
втЗаказ.ПервоначальноеЗначениеРезерва,
втЗаказ.СерияНоменклатуры,
втЗаказ.ХарактеристикаНоменклатуры
ТоварыВРезервеНаСкладахОстатки.Номенклатура,
ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение,
ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ втЗаказыРезервы
ИЗ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказ КАК втЗаказ
ПО втЗаказ.Ссылка = Резервы.ДокументРезерва
И втЗаказ.Номенклатура = Резервы.Номенклатура
И втЗаказ.СерияНоменклатуры = Резервы.СерияНоменклатуры
И втЗаказ.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
ГДЕ
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втЗаказыРезервы.Клиент,
втЗаказыРезервы.Канал,
втЗаказыРезервы.Ссылка,
втЗаказыРезервы.Номенклатура,
втЗаказыРезервы.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
втЗаказыРезервы.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
втЗаказыРезервы.ПервоначальноеЗначениеРезерва,
ЕСТЬNULL(Резервы.ТекЗначение, 0) КАК ТекЗначение,
ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Среднее
ИЗ
втЗаказыРезервы КАК втЗаказыРезервы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаДока, МЕСЯЦ, -3), &ДатаДока, , ) КАК ПродажиОбороты
ПО втЗаказыРезервы.Номенклатура = ПродажиОбороты.Номенклатура
И втЗаказыРезервы.СерияНоменклатуры = ПродажиОбороты.СерияНоменклатуры
И втЗаказыРезервы.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
ГДЕ
ПродажиОбороты.КоличествоОборот > 0
УПОРЯДОЧИТЬ ПО
ДатаНачалаСрочногоРезерва,
ДатаКонцаСрочногоРезерва
Показать
Базы с Вашими метаданными у меня нет, поэтому проверить корректность запроса не могу.
(33) Появился вопрос. Почему во втором запросе мы делаем полное соединение? Сейчас понадобилось убрать оба условия Количество > 0 из двух последних запросов. Но данные не корректно отображаются,если убрать условие на количество. Если сделать во втором запросе левое соединение документа с регистром, то в графе кол-во из продаж странные числа появляются...
Почему во втором запросе мы делаем полное соединение?
Пересмотрел запрос, полного соединения не нашел. Используется внутреннее соединение, чтобы в результат попали только те заказы, которые мы отобрали в первом запросе. А странности лучше всего изучить консолью запросов с просмотром временных таблиц.
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
это лишнее, в ВнутреннийЗаказТовары.Ссылка есть всё то же
это лишнее, в ВнутреннийЗаказТовары.Ссылка есть всё то же
Разрешено и возможно обратиться в запросе к реквизиту как "ВнутреннийЗаказТовары.Ссылка.Заказчик", но при этом система при выполнения запроса все равно соединит таблицу документов с табличной частью, и это действие будет повторено многократно. Поэтому при явном связывании табличной части с документом экономятся ресурсы. При тяжелых запросах это очень ощутимо.
Напишите ваше сообщение
(37) не знал, т.е. если я делаю "ВнутреннийЗаказТовары.Ссылка.Дата" и "ВнутреннийЗаказТовары.Ссылка.Номер", то получается основной запрос к таблице и нему лепятся 2 запроса к документу по каждому полю? o.O
44.
vadim.semyonov.rzn
31.01.20 14:39 Сейчас в теме
(43) В методических рекомендациях 1С указывается, что обращение к любому полю через ссылку приводит к полному считыванию объекта (включая все поля и все табличные части), что может существенно увеличить время считывания. При указании конкретных полей в запросе такой проблемы не наблюдается.