1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| ЗапросПоТоварам.Текст = "
|ВЫБРАТЬ
| Истина КАК Пометка,
| Ложь КАК МеткаОстаткиПоСкладу,
| 3 КАК ПриоритетПоСкладам,
| ВнутреннийЗапрос.Номенклатура.Код КАК Код,
| ВнутреннийЗапрос.Номенклатура.Артикул КАК Артикул,
| ВнутреннийЗапрос.Номенклатура КАК Номенклатура,
| ВнутреннийЗапрос.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
| ВнутреннийЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ВнутреннийЗапрос.ЗаказПокупателя КАК ЗаказПокупателя,
| ВнутреннийЗапрос.ЗаказПокупателя.Склад КАК Склад,
| СУММА(ВнутреннийЗапрос.Запланировано) КАК Запланировано,"
+ ?(мЧастичноеЗаполнение, "
| ВЫБОР КОГДА СУММА(ВнутреннийЗапрос.Заполнено) ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ФлагЗаполнено,
| СУММА(ВнутреннийЗапрос.Заполнено) КАК Заполнено,
| СУММА(ВнутреннийЗапрос.ЗаполненоИзРезерва) КАК ЗаполненоИзРезерва,", "
| 0 КАК ФлагЗаполнено,
| 0 КАК Заполнено,
| 0 КАК ЗаполненоИзРезерва,") + "
| СУММА(ВнутреннийЗапрос.ОсталосьОтгрузить) КАК ОсталосьОтгрузить,
| СУММА(ОстаткиРезерв.КоличествоОстаток) КАК РезервПоЗаказу,"
+ ?(ПревышатьОстаткиОрганизации, "
| 0 КАК ОстатокПоОрганизации,", "
| СУММА(ОстаткиОрганизаций.КоличествоОстаток) КАК ОстатокПоОрганизации,") + "
| СУММА(ОстаткиНаСкладе.КоличествоОстаток) КАК СвободныйОстаток,
| 0 КАК МожноОтгрузить,
| 0 КАК ДобавитьВДокумент
|ИЗ
| (
| ВЫБРАТЬ
| ОстаткиЗаказ.ЗаказПокупателя КАК ЗаказПокупателя,
| ОстаткиЗаказ.Номенклатура КАК Номенклатура,
| ОстаткиЗаказ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| МАКСИМУМ(ОстаткиЗаказ.КоличествоКонечныйОстаток)КАК ОсталосьОтгрузить,"
+ ?(мЧастичноеЗаполнение, "
| СУММА("+ТекстКоличествоРеализация+") КАК Заполнено,
| СУММА(ВЫБОР КОГДА ДокументРеализация.СпособСписанияОстаткаТоваров=ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва) ТОГДА "+ТекстКоличествоРеализация+" ИНАЧЕ 0 КОНЕЦ) КАК ЗаполненоИзРезерва,", "") + "
| МАКСИМУМ(ОстаткиЗаказ.КоличествоПриход) КАК Запланировано
| ИЗ
| РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(,&ДатаОстатков,,, ДоговорКонтрагента = &ДоговорКонтрагента
| И ЗаказПокупателя В (&СписокЗаказов)
| И СтатусПартии <> &СтатусТары
| И Номенклатура.Услуга <> Истина) КАК ОстаткиЗаказ
|
|" + ?(мЧастичноеЗаполнение, "
|ЛЕВОЕ СОЕДИНЕНИЕ // заполнено
| Документ.РеализацияТоваровУслуг.Товары КАК ДокументРеализация
|ПО
| ДокументРеализация.Ссылка = &ДокументСсылка
| И ОстаткиЗаказ.ЗаказПокупателя = ДокументРеализация.ЗаказПокупателя
| И ОстаткиЗаказ.Номенклатура = ДокументРеализация.Номенклатура
| И ОстаткиЗаказ.ХарактеристикаНоменклатуры = ДокументРеализация.ХарактеристикаНоменклатуры", "") + "
|
| СГРУППИРОВАТЬ ПО
| ОстаткиЗаказ.ЗаказПокупателя,
| ОстаткиЗаказ.Номенклатура,
| ОстаткиЗаказ.ХарактеристикаНоменклатуры
|
| ) КАК ВнутреннийЗапрос
|
|ЛЕВОЕ СОЕДИНЕНИЕ // резервы
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков, ДокументРезерва В (&СписокЗаказов) "+?(НЕ мУказаниеСкладовВТЧ, " И Склад = &Склад","") +") КАК ОстаткиРезерв
|ПО
| ВнутреннийЗапрос.ЗаказПокупателя = ОстаткиРезерв.ДокументРезерва
| И ВнутреннийЗапрос.Номенклатура = ОстаткиРезерв.Номенклатура
| И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиРезерв.ХарактеристикаНоменклатуры
|"
+ ?(НЕ ПревышатьОстаткиОрганизации, "
|ЛЕВОЕ СОЕДИНЕНИЕ // остатки организаций
| РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков, Организация = &Организация) КАК ОстаткиОрганизаций
|ПО
| ВнутреннийЗапрос.Номенклатура = ОстаткиОрганизаций.Номенклатура
| И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиОрганизаций.ХарактеристикаНоменклатуры", "") + "
|
|ЛЕВОЕ СОЕДИНЕНИЕ // реальные товары на складе за вычетом резервов и товаров к передаче
| (
| ВЫБРАТЬ
| ОстаткиНаСкладе.Номенклатура,
| ОстаткиНаСкладе.ХарактеристикаНоменклатуры,
| ОстаткиНаСкладе.КоличествоОстаток
| - ВЫБОР КОГДА ОстаткиВРезерве.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ОстаткиВРезерве.КоличествоОстаток КОНЕЦ
| - ВЫБОР КОГДА ОстаткиКПередаче.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ОстаткиКПередаче.КоличествоОстаток КОНЕЦ КАК КоличествоОстаток
|
| ИЗ "+ПодзапросОстатки+"
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков," + УсловиеСклад + ") КАК ОстаткиВРезерве
| ПО
| ОстаткиНаСкладе.Номенклатура = ОстаткиВРезерве.Номенклатура
| И ОстаткиНаСкладе.ХарактеристикаНоменклатуры = ОстаткиВРезерве.ХарактеристикаНоменклатуры
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаОстатков," + УсловиеСклад + ") КАК ОстаткиКПередаче
| ПО
| ОстаткиНаСкладе.Номенклатура = ОстаткиКПередаче.Номенклатура
| И ОстаткиНаСкладе.ХарактеристикаНоменклатуры = ОстаткиКПередаче.ХарактеристикаНоменклатуры
|
| ) КАК ОстаткиНаСкладе
|ПО
| ВнутреннийЗапрос.Номенклатура = ОстаткиНаСкладе.Номенклатура
| И ВнутреннийЗапрос.ХарактеристикаНоменклатуры = ОстаткиНаСкладе.ХарактеристикаНоменклатуры
|ГДЕ
| Запланировано > 0
| И ОсталосьОтгрузить >= 0
|
| СГРУППИРОВАТЬ ПО
| ВнутреннийЗапрос.ЗаказПокупателя,
| ВнутреннийЗапрос.ЗаказПокупателя.Склад,
| ВнутреннийЗапрос.Номенклатура,
| ВнутреннийЗапрос.ХарактеристикаНоменклатуры
|"; |