|
запрос по неотгруженным заказам и остаткам номенклатуры | ☑ | ||
---|---|---|---|---|
0
rassigor
20.02.16
✎
09:43
|
Делаю Динамический список, в нем мне нужны заказы покупателей не отгруженные, но при этом с номенклатурой которая есть на остатках.
Те если хоть одна номенклатура есть на остатках. В динамическом списке пишу, как мне добавить в него отбор по Остаткам (Регистр ЗапасыНаСкладах) ВЫБРАТЬ ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ТОГДА ВЫБОР КОГДА ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияПлан.Заказ ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И ДокументЗаказПокупателя.Закрыт ТОГДА 2 ИНАЧЕ 0 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ЕСТЬNULL(ГрафикВыполненияФакт.Выполнено, 0) = 0 И ЕСТЬNULL(ГрафикВыполненияПлан.Выполнено, 0) = 0 ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Финиш < &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период < &АкутальнаяДатаСеанса ТОГДА 6 КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Старт <= &АкутальнаяДатаСеанса И ДокументЗаказПокупателя.Финиш >= &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период = &АкутальнаяДатаСеанса ТОГДА 4 ИНАЧЕ 2 КОНЕЦ ИНАЧЕ 2 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Финиш < &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период < &АкутальнаяДатаСеанса ТОГДА 5 КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Старт <= &АкутальнаяДатаСеанса И ДокументЗаказПокупателя.Финиш >= &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период = &АкутальнаяДатаСеанса ТОГДА 3 ИНАЧЕ 1 КОНЕЦ ИНАЧЕ 1 КОНЕЦ КОНЕЦ КОНЕЦ ИНАЧЕ 2 КОНЕЦ КАК НомерКартинкиОтгрузки, ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен ТОГДА ВЫБОР КОГДА (ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ИЛИ ЕСТЬNULL(ФактОплаты.Сумма, 0) <> 0) И ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) = 0 ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ЗапланироватьОплату И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт И НЕ ГрафикОплаты.СчетНаОплату ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ГрафикОплаты.Период < &АкутальнаяДатаСеанса ТОГДА 6 КОГДА ГрафикОплаты.Период = &АкутальнаяДатаСеанса ТОГДА 4 ИНАЧЕ 2 КОНЕЦ ИНАЧЕ 2 КОНЕЦ КОГДА ЕСТЬNULL(ФактОплаты.Сумма, 0) <= ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И ДокументЗаказПокупателя.Закрыт ТОГДА 2 ИНАЧЕ 0 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.ЗапланироватьОплату И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт И НЕ ГрафикОплаты.СчетНаОплату ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ГрафикОплаты.Период < &АкутальнаяДатаСеанса ТОГДА 5 КОГДА ГрафикОплаты.Период = &АкутальнаяДатаСеанса ТОГДА 3 ИНАЧЕ 1 КОНЕЦ ИНАЧЕ 1 КОНЕЦ КОНЕЦ ИНАЧЕ 2 КОНЕЦ КАК НомерКартинкиОплаты, ДокументЗаказПокупателя.Ссылка, ДокументЗаказПокупателя.Номер, ДокументЗаказПокупателя.Дата, ДокументЗаказПокупателя.Автор, ДокументЗаказПокупателя.ВалютаДокумента, ДокументЗаказПокупателя.ДатаОтгрузки, ДокументЗаказПокупателя.Договор, ДокументЗаказПокупателя.Комментарий, ДокументЗаказПокупателя.Контрагент, ДокументЗаказПокупателя.Организация, ДокументЗаказПокупателя.Ответственный, ДокументЗаказПокупателя.СостояниеЗаказа, ВЫБОР КОГДА (ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ИЛИ ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе)) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА "В работе" ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен) ТОГДА "Выполнен" ИНАЧЕ "Отменен" КОНЕЦ КОНЕЦ КАК СтатусЗаказа, ДокументЗаказПокупателя.Старт, ДокументЗаказПокупателя.СтруктурнаяЕдиницаПродажи, ДокументЗаказПокупателя.СтруктурнаяЕдиницаРезерв, ДокументЗаказПокупателя.СуммаДокумента, ДокументЗаказПокупателя.Финиш, ДокументЗаказПокупателя.Ячейка, ВЫБОР КОГДА ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияПлан.Заказ ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК КОтгрузке, ЕСТЬNULL(ФактОплаты.Сумма, 0) - ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) - ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) КАК КОплате, ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен И ДокументЗаказПокупателя.СуммаДокумента > 0 ТОГДА ВЫРАЗИТЬ((ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0)) * 100 / ДокументЗаказПокупателя.СуммаДокумента КАК ЧИСЛО(15, 2)) ИНАЧЕ 0 КОНЕЦ КАК ПроцентОплаты, ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) КАК Оплачено, ДокументЗаказПокупателя.Контрагент.КонтактноеЛицо КАК КонтактноеЛицо, СостоянияЭД.СостояниеВерсииЭД ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты( , , Авто, , ЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаПродажу) И (Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Запас) ИЛИ Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))) КАК ЗаказыПокупателейОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ДокументЗаказПокупателя ПО ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя = ДокументЗаказПокупателя.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполнения ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполнения.Заказ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполненияФакт ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполненияФакт.Заказ) И (ГрафикВыполненияФакт.Период <= &АкутальнаяДатаСеанса) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполненияПлан ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполненияПлан.Заказ) И (ГрафикВыполненияПлан.Период > &АкутальнаяДатаСеанса) {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплатыЗаказов КАК ГрафикОплаты ПО (ДокументЗаказПокупателя.Ссылка = ГрафикОплаты.СчетНаОплату) И (ГрафикОплаты.Период <= &АкутальнаяДатаСеанса)} ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФактОплатыЗаказов КАК ФактОплаты ПО (ДокументЗаказПокупателя.Ссылка = ФактОплаты.СчетНаОплату) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (ДокументЗаказПокупателя.Ссылка = СостоянияЭД.СсылкаНаОбъект) ГДЕ (НЕ ГрафикВыполнения.Заказ ЕСТЬ NULL ИЛИ ДокументЗаказПокупателя.Ссылка В (&СписокЗаказов)) И НЕ ДокументЗаказПокупателя.Закрыт И ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаПродажу) |
|||
1
rassigor
20.02.16
✎
09:45
|
УНФ 1.6.3.11
|
|||
2
rassigor
24.02.16
✎
08:17
|
апну
|
|||
3
samozvanec
24.02.16
✎
08:32
|
ctrl+A -> Delete
|
|||
4
HeKrendel
24.02.16
✎
08:35
|
(3) Плюсану, постановка задачи ацтой
(0) У тебя там 3 тысячи заказов, что такой отчет актуален? |
|||
5
rassigor
24.02.16
✎
08:42
|
заказов мало, поэтому и постановка задача такая
|
|||
6
samozvanec
24.02.16
✎
08:43
|
фу какой запрос. а потом жалуются, что 1с тормозит. не надо такое в ДС, сделай отчетом
|
|||
7
rassigor
24.02.16
✎
08:46
|
Это ТИПОВОЙ ЗАПРОС, который стоит в динамическом списке в УНФ, нужно его модифицировать, не я его писал.
|
|||
8
samozvanec
24.02.16
✎
08:57
|
(7) см. (3) :)
|
|||
9
samozvanec
24.02.16
✎
09:24
|
в поддержку моего мнения
"Это ТИПОВОЙ ЗАПРОС" "ГрафикВыполненияПлан.Период > &АкутальнаяДатаСеанса" что за "Акутальная" дата такая? проф сленг? |
|||
10
rassigor
24.02.16
✎
09:30
|
(9)Ага
но суть не в этом, суть в том, что надо сравнить с Остатками все это в запросе, и выводить те заказы, товары в которых есть на остатках на определенном складе, чтобы нажать кнопку отгрузить и они списались по остаткам |
|||
11
samozvanec
24.02.16
✎
09:33
|
(10) хитрый какой. что не получается? с остатками соедини и отбери
|
|||
12
Dmitry1c
24.02.16
✎
09:53
|
Оффтоп, а нет ли возможности на мисте указать кусок кода, чтобы было по-человечески? типа [code]Код[/code]
|
|||
13
Качели
24.02.16
✎
09:56
|
|
|||
14
Качели
24.02.16
✎
09:56
|
ы "
" |
|||
15
Качели
24.02.16
✎
09:56
|
||||
16
rassigor
24.02.16
✎
14:18
|
[code]
ВЫБРАТЬ ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ТОГДА ВЫБОР КОГДА ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияПлан.Заказ ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И ДокументЗаказПокупателя.Закрыт ТОГДА 2 ИНАЧЕ 0 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ЕСТЬNULL(ГрафикВыполненияФакт.Выполнено, 0) = 0 И ЕСТЬNULL(ГрафикВыполненияПлан.Выполнено, 0) = 0 ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Финиш < &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период < &АкутальнаяДатаСеанса ТОГДА 6 КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Старт <= &АкутальнаяДатаСеанса И ДокументЗаказПокупателя.Финиш >= &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период = &АкутальнаяДатаСеанса ТОГДА 4 ИНАЧЕ 2 КОНЕЦ ИНАЧЕ 2 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Финиш < &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период < &АкутальнаяДатаСеанса ТОГДА 5 КОГДА ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И ДокументЗаказПокупателя.Старт <= &АкутальнаяДатаСеанса И ДокументЗаказПокупателя.Финиш >= &АкутальнаяДатаВремяСеанса ИЛИ ДокументЗаказПокупателя.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд) И НЕ ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияФакт.Период = &АкутальнаяДатаСеанса ТОГДА 3 ИНАЧЕ 1 КОНЕЦ ИНАЧЕ 1 КОНЕЦ КОНЕЦ КОНЕЦ ИНАЧЕ 2 КОНЕЦ КАК НомерКартинкиОтгрузки, ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен ТОГДА ВЫБОР КОГДА (ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ИЛИ ЕСТЬNULL(ФактОплаты.Сумма, 0) <> 0) И ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) = 0 ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.ЗапланироватьОплату И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт И НЕ ГрафикОплаты.СчетНаОплату ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ГрафикОплаты.Период < &АкутальнаяДатаСеанса ТОГДА 6 КОГДА ГрафикОплаты.Период = &АкутальнаяДатаСеанса ТОГДА 4 ИНАЧЕ 2 КОНЕЦ ИНАЧЕ 2 КОНЕЦ КОГДА ЕСТЬNULL(ФактОплаты.Сумма, 0) <= ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) ТОГДА ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И ДокументЗаказПокупателя.Закрыт ТОГДА 2 ИНАЧЕ 0 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.ЗапланироватьОплату И ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе) И НЕ ДокументЗаказПокупателя.Закрыт И НЕ ГрафикОплаты.СчетНаОплату ЕСТЬ NULL ТОГДА ВЫБОР КОГДА ГрафикОплаты.Период < &АкутальнаяДатаСеанса ТОГДА 5 КОГДА ГрафикОплаты.Период = &АкутальнаяДатаСеанса ТОГДА 3 ИНАЧЕ 1 КОНЕЦ ИНАЧЕ 1 КОНЕЦ КОНЕЦ ИНАЧЕ 2 КОНЕЦ КАК НомерКартинкиОплаты, ДокументЗаказПокупателя.Ссылка, ДокументЗаказПокупателя.Номер, ДокументЗаказПокупателя.Дата, ДокументЗаказПокупателя.Автор, ДокументЗаказПокупателя.ВалютаДокумента, ДокументЗаказПокупателя.ДатаОтгрузки, ДокументЗаказПокупателя.Договор, ДокументЗаказПокупателя.Комментарий, ДокументЗаказПокупателя.Контрагент, ДокументЗаказПокупателя.Организация, ДокументЗаказПокупателя.Ответственный, ДокументЗаказПокупателя.СостояниеЗаказа, ВЫБОР КОГДА (ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт) ИЛИ ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе)) И НЕ ДокументЗаказПокупателя.Закрыт ТОГДА "В работе" ИНАЧЕ ВЫБОР КОГДА ДокументЗаказПокупателя.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен) ТОГДА "Выполнен" ИНАЧЕ "Отменен" КОНЕЦ КОНЕЦ КАК СтатусЗаказа, ДокументЗаказПокупателя.Старт, ДокументЗаказПокупателя.СтруктурнаяЕдиницаПродажи, ДокументЗаказПокупателя.СтруктурнаяЕдиницаРезерв, ДокументЗаказПокупателя.СуммаДокумента, ДокументЗаказПокупателя.Финиш, ДокументЗаказПокупателя.Ячейка, ВЫБОР КОГДА ГрафикВыполненияФакт.Заказ ЕСТЬ NULL И ГрафикВыполненияПлан.Заказ ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК КОтгрузке, ЕСТЬNULL(ФактОплаты.Сумма, 0) - ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) - ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) КАК КОплате, ВЫБОР КОГДА ДокументЗаказПокупателя.Проведен И ДокументЗаказПокупателя.СуммаДокумента > 0 ТОГДА ВЫРАЗИТЬ((ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0)) * 100 / ДокументЗаказПокупателя.СуммаДокумента КАК ЧИСЛО(15, 2)) ИНАЧЕ 0 КОНЕЦ КАК ПроцентОплаты, ЕСТЬNULL(ФактОплаты.СуммаОплаты, 0) + ЕСТЬNULL(ФактОплаты.СуммаАванса, 0) КАК Оплачено, ДокументЗаказПокупателя.Контрагент.КонтактноеЛицо КАК КонтактноеЛицо, СостоянияЭД.СостояниеВерсииЭД ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты( , , Авто, , ЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаПродажу) И (Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Запас) ИЛИ Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))) КАК ЗаказыПокупателейОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ДокументЗаказПокупателя ПО ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя = ДокументЗаказПокупателя.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполнения ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполнения.Заказ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполненияФакт ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполненияФакт.Заказ) И (ГрафикВыполненияФакт.Период <= &АкутальнаяДатаСеанса) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикВыполненияЗаказов КАК ГрафикВыполненияПлан ПО (ДокументЗаказПокупателя.Ссылка = ГрафикВыполненияПлан.Заказ) И (ГрафикВыполненияПлан.Период > &АкутальнаяДатаСеанса) {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикОплатыЗаказов КАК ГрафикОплаты ПО (ДокументЗаказПокупателя.Ссылка = ГрафикОплаты.СчетНаОплату) И (ГрафикОплаты.Период <= &АкутальнаяДатаСеанса)} ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФактОплатыЗаказов КАК ФактОплаты ПО (ДокументЗаказПокупателя.Ссылка = ФактОплаты.СчетНаОплату) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (ДокументЗаказПокупателя.Ссылка = СостоянияЭД.СсылкаНаОбъект) ГДЕ (НЕ ГрафикВыполнения.Заказ ЕСТЬ NULL ИЛИ ДокументЗаказПокупателя.Ссылка В (&СписокЗаказов)) И НЕ ДокументЗаказПокупателя.Закрыт И ДокументЗаказПокупателя.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаПродажу) [/code] |
|||
17
rassigor
24.02.16
✎
14:19
|
|
|||
18
rassigor
24.02.16
✎
14:19
|
простите за прошлый косяк) теперь указал правильно
|
|||
19
rassigor
24.02.16
✎
14:48
|
Внутреннее соединение
Используя внутреннее соединение мы говорим системе, что в результате хотим видеть только те записи, которые удовлетворяют условию связи как из правой таблицы, так и из левой. Таким образом, количество результирующих записей будет меньше или равно количеству записей самой "короткой таблицы", участвующей в соединении. Применим внутреннее соединение к полям Товар и Цвет наших таблиц: Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Товар, | Номенклатура.Цвет, | Остатки.Количество КАК Количество |ИЗ | Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Остатки КАК Остатки | ПО Номенклатура.Товар = Остатки.Товар | И Номенклатура.Цвет = Остатки.Цвет"; Правильно ли я понел, что мне нужно внутренним соединением связать Заказы и остатки чтобы остались только те заказы, в которых есть остатки |
|||
20
rassigor
24.02.16
✎
14:58
|
вот так?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |