|
помогите с запросом | ☑ | ||
---|---|---|---|---|
0
ded20ded
03.12.21
✎
09:54
|
Добрый день, всем!
Мне нужно получить все мин и макс запасы, если РС нет данных, тогда по этому складу мин = макс =0 ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СкладыКомпании.Ссылка КАК Склады, СкладыКомпании.Подразделение КАК Подразделение ПОМЕСТИТЬ спрСклады ИЗ Справочник.СкладыКомпании КАК СкладыКомпании ГДЕ НЕ СкладыКомпании.ЭтоГруппа И НЕ СкладыКомпании.ГрафикРаботы = ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрСклады.Склады КАК Склады, спрНоменклатура.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МаксимальныйЗапас) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МаксЗапас, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МинимальныйОстаток) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МинЗапас ИЗ спрНоменклатура КАК спрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ПРАВОЕ СОЕДИНЕНИЕ спрСклады КАК спрСклады ПО (спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании) ПО спрНоменклатура.Номенклатура = ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура ГДЕ спрНоменклатура.Номенклатура = &Номенклатура |
|||
1
Chameleon1980
03.12.21
✎
09:59
|
а склады у тебя как доп. реквизит чего?
|
|||
2
ded20ded
03.12.21
✎
10:03
|
в РС - подразделение а от туда уже получаю склад
|
|||
3
ded20ded
03.12.21
✎
10:05
|
В РС номенклатура, подразделение, допРеквизит и значение
в спрСклады склад и подразделение |
|||
4
lubitelxml
03.12.21
✎
10:08
|
Помогите развидеть ПРАВОЕ СОЕДИНЕНИЕ :)
|
|||
5
ded20ded
03.12.21
✎
10:13
|
(4) если левое тогда ерунда получается, склады заполнены, а номенклатура пустая
|
|||
6
ded20ded
03.12.21
✎
10:13
|
ИЗ
спрСклады КАК спрСклады ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО спрНоменклатура.Номенклатура = ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура ПО спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании |
|||
7
ded20ded
03.12.21
✎
10:15
|
ИЗ
спрСклады КАК спрСклады ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ПРАВОЕ СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО спрНоменклатура.Номенклатура = ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура ПО спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании |
|||
8
ded20ded
03.12.21
✎
10:15
|
(7) так ближе к сути, но номенклатура пустая
|
|||
9
ded20ded
03.12.21
✎
10:15
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа И Номенклатура.Ссылка = &Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СкладыКомпании.Ссылка КАК Склады, СкладыКомпании.Подразделение КАК Подразделение ПОМЕСТИТЬ спрСклады ИЗ Справочник.СкладыКомпании КАК СкладыКомпании ГДЕ НЕ СкладыКомпании.ЭтоГруппа И НЕ СкладыКомпании.ГрафикРаботы = ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрСклады.Склады КАК Склады, спрНоменклатура.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МаксимальныйЗапас) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МаксЗапас, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МинимальныйОстаток) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МинЗапас ИЗ спрСклады КАК спрСклады ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ПРАВОЕ СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО спрНоменклатура.Номенклатура = ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура ПО спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании |
|||
10
Dmitrii
гуру
03.12.21
✎
10:46
|
Бред какой-то.
По логике у тебя должно быть три отдельных левых соединения с РС. Одно для получения МинЗапас, второе для получения МаксЗапас, третье для получения склада. А у тебя всё в одной куче. В каждой строке результата (даже если напишешь правильно условие соединения) ты будешь получать либо одно, либо второе, либо третье. В одной строке все три поля ты не увидишь никогда. |
|||
11
Малыш Джон
03.12.21
✎
10:49
|
(0) так а что нужно то в итоге? по всем складам и по всей номенклатуре - подтянуть остатки из рс?
|
|||
12
Dmitrii
гуру
03.12.21
✎
10:54
|
(11) Он походу сам не знает что ему нужно.
В первом запросе пакета он отбирает весь справочник, в в последнем лепит условие ГДЕ спрНоменклатура.Номенклатура = &Номенклатура. Вот и поди догадайся - что ему нужно. В любом случае в тексте запроса какой-то бред. Автор совершенно не понимает - как получить нужные данные. |
|||
13
ded20ded
03.12.21
✎
11:06
|
(11) по всем складам, по всей номенклатуре, если в РС нет тогда мин = макс запас и равно 0
|
|||
14
ded20ded
03.12.21
✎
11:06
|
если в РС нет данных по этим складам тогда мин и макс =0
|
|||
15
youalex
03.12.21
✎
11:12
|
(13) По всем, даже если у них нет связи по спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании ?
|
|||
16
ded20ded
03.12.21
✎
11:18
|
(15) да
|
|||
17
ded20ded
03.12.21
✎
11:19
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа И Номенклатура.Ссылка = &Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СкладыКомпании.Ссылка КАК Склады, СкладыКомпании.Подразделение КАК Подразделение ПОМЕСТИТЬ спрСклады ИЗ Справочник.СкладыКомпании КАК СкладыКомпании ГДЕ НЕ СкладыКомпании.ЭтоГруппа И НЕ СкладыКомпании.ГрафикРаботы = ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрСклады.Склады КАК Склады, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МаксимальныйЗапас) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МаксЗапас, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МинимальныйОстаток) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МинЗапас, ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура ПОМЕСТИТЬ МинИМаксЗапас ИЗ спрСклады КАК спрСклады ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ПО спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрНоменклатура.Номенклатура КАК Номенклатура, спрСклады.Склады КАК Склады, МинИМаксЗапас.МаксЗапас КАК МаксЗапас, МинИМаксЗапас.МинЗапас КАК МинЗапас ИЗ МинИМаксЗапас КАК МинИМаксЗапас ЛЕВОЕ СОЕДИНЕНИЕ спрСклады КАК спрСклады ПО (спрСклады.Склады = МинИМаксЗапас.Склады) Правое СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО спрНоменклатура.Номенклатура = МинИМаксЗапас.Номенклатура |
|||
18
Малыш Джон
03.12.21
✎
11:19
|
(13) ну значит сначала надо делать полное соединение складов и номенклатуры по ИСТИНА, чтобы получить матрицу склады-номенклатура, а потом к ней левым соединением присоединять два раза РС, одно соединение на макс запса, другое - на мин запас
|
|||
19
ded20ded
03.12.21
✎
11:19
|
(17) делаю так показывает только что есть в РС
|
|||
20
ded20ded
03.12.21
✎
11:21
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ спрНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа И Номенклатура.Ссылка = &Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СкладыКомпании.Ссылка КАК Склады, СкладыКомпании.Подразделение КАК Подразделение ПОМЕСТИТЬ спрСклады ИЗ Справочник.СкладыКомпании КАК СкладыКомпании ГДЕ НЕ СкладыКомпании.ЭтоГруппа И НЕ СкладыКомпании.ГрафикРаботы = ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрСклады.Склады КАК Склады, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МаксимальныйЗапас) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МаксЗапас, ВЫБОР КОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ДополнительныйРеквизит.Ссылка = ЗНАЧЕНИЕ(Перечисление.ДополнительныеРеквизитыНоменклатуры.МинимальныйОстаток) ТОГДА ДополнительныеРеквизитыНоменклатурыСрезПоследних.ЗначениеРеквизита ИНАЧЕ 0 КОНЕЦ КАК МинЗапас, ДополнительныеРеквизитыНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура ПОМЕСТИТЬ МинИМаксЗапас ИЗ спрСклады КАК спрСклады ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыНоменклатуры.СрезПоследних(&Data, ) КАК ДополнительныеРеквизитыНоменклатурыСрезПоследних ПО спрСклады.Подразделение = ДополнительныеРеквизитыНоменклатурыСрезПоследних.ПодразделениеКомпании ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ спрНоменклатура.Номенклатура КАК Номенклатура, спрСклады.Склады КАК Склады, МинИМаксЗапас.МаксЗапас КАК МаксЗапас, МинИМаксЗапас.МинЗапас КАК МинЗапас ИЗ МинИМаксЗапас КАК МинИМаксЗапас ЛЕВОЕ СОЕДИНЕНИЕ спрСклады КАК спрСклады ПО (спрСклады.Склады = МинИМаксЗапас.Склады) Левое СОЕДИНЕНИЕ спрНоменклатура КАК спрНоменклатура ПО спрНоменклатура.Номенклатура = МинИМаксЗапас.Номенклатура |
|||
21
ded20ded
03.12.21
✎
11:22
|
(20) склады есть номенклатуры нет, и список слишком большой
|
|||
22
Малыш Джон
03.12.21
✎
11:24
|
(21) если у тебя N складов и M номенклатуры, то строк у тебя в любом случае будет N*M, потому что ты, даже если сочетания склад-номенклатура в РС нет, все равно хочешь туда подтягивать 0. Т.е. все строки в любом случае будут присутствовать.
|
|||
23
youalex
03.12.21
✎
11:27
|
(16) тогда зачем тебе эта связь, делай как в (18), СОЕДИНЕНИЕ ПО ИСТИНА, без всяких временных таблиц.
Единственно, значения НУЖНЫХ доп. реквизитов из среза можно предварительно запихать в вт |
|||
24
Dmitrii
гуру
03.12.21
✎
12:59
|
Что-то типа такого должно быть.
Могут быть синтаксические ошибки, т.к. частично писал текст вручную.
|
|||
25
youalex
03.12.21
✎
13:25
|
Как то так :
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |