|
помогите с запросом | ☑ | ||
---|---|---|---|---|
0
dvrk
06.04.22
✎
09:56
|
ВЫБРАТЬ
УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл КАК НоменклатураКодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура КАК Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения КАК ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара КАК НоменклатураВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента КАК КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент КАК Контрагент ИЗ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПОЛНОЕ СОЕДИНЕНИЕ Документ.УсловияПоставокПоДоговорамКонтрагентов.НоменклатураДоговора КАК УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора ПО НоменклатураКонтрагентов.Номенклатура = УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура ГДЕ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент проблема с НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, если не ставлю в отборе нужного контрагента, то он выводит номенклатуру контрагента по всем контрагентам, если ставлю в отбборе нужного контрагента, то он не выводит номенклатуру у которой нет номенклатуры контрагента, подскажите как решить |
|||
1
dvrk
06.04.22
✎
10:00
|
левое соединение*
|
|||
2
hhhh
06.04.22
✎
10:05
|
(1) баян
ПО НоменклатураКонтрагентов.Номенклатура = УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура И УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка |
|||
3
dvrk
06.04.22
✎
10:09
|
и что не так
|
|||
4
dvrk
06.04.22
✎
10:13
|
(2) это к чему вообще? я реально не понял смысла сообщения
|
|||
5
Йохохо
06.04.22
✎
10:23
|
"то он не выводит номенклатуру у которой нет номенклатуры контрагента" вероятно от Вас хотели обратное, номенклатуру контрагента у которой нет номенклатуры
|
|||
6
Kassern
06.04.22
✎
10:25
|
(0) Поймите уже как работают соединения и отборы в запросе. Попробую "на пальцах" объяснить:
Есть Таблица1 соединена левым соединением с Таблицей2 по номенклатуре. В этом случае для всех строк таблицы1 будут сопоставлены строки таблицы2. (надеюсь это понятно) Теперь, если мы возьмем и сделаем отбор по таблице2, в этом случае порядок следующий: Таб1 соединяется с Таб2, а только ПОТОМ отрабатывает отбор и срезает все строки не удовлетворяющие условию. Если же писать условие с соединении для таблицы2, тогда: Вначале отработает условие (срежет лишние строки таблицы2) а потом будет соединение с Таб1. Так же, если дело не с виртуальной таблицей, то отбирают Таблицу2 во временной таблице а потом уже присоединяют ее к основной. В общем запомните, что отбор отрабатывает ПОСЛЕ соединения |
|||
7
Kassern
06.04.22
✎
10:27
|
с виртуальными таблицами еще проще, все можно указать в параметрах виртуальной таблицы, срезав ненужные строки, а потом уже соединять с основной таблицей
|
|||
8
dvrk
06.04.22
✎
10:31
|
(5) не
|
|||
9
dvrk
06.04.22
✎
10:35
|
(6) я думаю мой вопрос просто не поняли
|
|||
10
vicof
06.04.22
✎
10:38
|
(9) Ты плохо думаешь
|
|||
11
Kassern
06.04.22
✎
10:44
|
(9) главное, чтобы вы поняли, как работает отбор вместе с соединением.
Вот у вас Таб1 это Регистр "НоменклатураКонтрагентов", а таб2 это "Документ.УсловияПоставокПоДоговорамКонтрагентов.НоменклатураДоговора" с учетом (1) вы соединяете ТЧ документа к регистру левым соединением. Читаем еще раз внимательно (6) и понимаем, что используя ОТБОР в Таблице2, вы срежете все строки таблицы1 не удовлетворяющие условию. У вас по факту, для каждой строчки регистра будет соединена строчка из ТЧ, далее уже эта таблица режется отбором вашим. Поэтому у вас "проблема с НоменклатураКонтрагентов.КодНоменклатурыКонтрагента" |
|||
12
hhhh
06.04.22
✎
10:50
|
(9) просто сделай как в (2) и у тебя ысё получится.
|
|||
13
Kassern
06.04.22
✎
10:52
|
(12) это как раз то, что я ему пытался объяснить, как работает соединения и отборы...Можно и во временной таблице ТЧ номенклатуры порезать как надо, а потом уже ее цеплять к регистру сведений, если не хочется в соединении доп условия писать
|
|||
14
Kassern
06.04.22
✎
10:53
|
(13) *ТЧ документа
|
|||
15
dvrk
06.04.22
✎
10:57
|
(13) (12) (11) ну, всё равно выдаёт только ту номенклатуру, которая есть в регистре Номенклатура контрагентов
|
|||
16
Kassern
06.04.22
✎
11:01
|
(15) конечно, потому что у вас Регистр является основной таблицей. Вот как работает левое соединение ТАб1 и Таб2
Таб1: Номенклатура,Цвет,Количество Ложка, Белая, 1шт Таб2: Номенклатура,Цена Вилка, 100 Ложка, 50 Итоговая таблица после левого соединения к Таб1 по номенклатуре: Ложка, белая 1шт, 50 //вилка срезалась, так как в таб1 ее и не было. |
|||
17
Kassern
06.04.22
✎
11:01
|
Почитайте внимательно про соединения таблиц, вот к примеру: https://helpme1s.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-soedineniya
|
|||
18
dvrk
06.04.22
✎
11:02
|
(16) я сделал таб1 - тч
|
|||
19
Kassern
06.04.22
✎
11:03
|
(18) покажите как сделали, скиньте текст запроса с отбором
|
|||
20
Kassern
06.04.22
✎
11:07
|
так же имейте в виду, при левом соединении могут быть поля со значением NULL (поле из Таб2, по которому не нашлось найти соответствие по условиям соединения)
|
|||
21
dvrk
06.04.22
✎
11:09
|
(19)
ВЫБРАТЬ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура КАК Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения КАК ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара КАК НоменклатураВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента КАК КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент КАК Контрагент ИЗ Документ.УсловияПоставокПоДоговорамКонтрагентов.НоменклатураДоговора КАК УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПО (НоменклатураКонтрагентов.Номенклатура = УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура) И (УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка) |
|||
22
Kassern
06.04.22
✎
11:10
|
вот тут от 1с про соединения таблиц https://its.1c.ru/db/metod8dev/content/2591/hdoc
|
|||
23
Kassern
06.04.22
✎
11:11
|
(21) а где же? Или вы не весь запрос скинули?
ГДЕ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка |
|||
24
Kassern
06.04.22
✎
11:11
|
или вы по всем документам делаете?)
|
|||
25
dvrk
06.04.22
✎
11:12
|
(24) ВЫБРАТЬ
УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл КАК НоменклатураКодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура КАК Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения КАК ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара КАК НоменклатураВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента КАК КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент КАК Контрагент ИЗ Документ.УсловияПоставокПоДоговорамКонтрагентов.НоменклатураДоговора КАК УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПО (НоменклатураКонтрагентов.Номенклатура = УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура) И (УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка) ГДЕ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент |
|||
26
Kassern
06.04.22
✎
11:14
|
(25) А это что такое??
И (УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка) а потом такой бац: ГДЕ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка )) |
|||
27
Kassern
06.04.22
✎
11:15
|
где у вас условие по контрагенту?
|
|||
28
dvrk
06.04.22
✎
11:16
|
(27) я хз как условие по контрагенту сделать, если учитывать, что мне нужен контрагент из шапки документа и пустые
|
|||
29
dvrk
06.04.22
✎
11:18
|
ну т.е. строки ТЧ, где номенклатура контрагента пусто
|
|||
30
Kassern
06.04.22
✎
11:18
|
для Таб1, нет смысла писать условие в соединении, так как это основная таблица при левом соединении. Достаточно условие прописать в Отборе. Когда речь идет, про срез Таб2 предварительный перед соедениением, тогда уже отбор не канает, так как срежет и строчки нужные из Таб1
|
|||
31
Kassern
06.04.22
✎
11:19
|
(28) вам нужен контрагент для регистра сведений из шапки документа?
|
|||
32
Kassern
06.04.22
✎
11:20
|
если да, то все очень просто:
Там где у вас соединение вместо корявого дубля "УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка" пропишите ваш РегСведений.Контрагент=&Контрагент |
|||
33
Kassern
06.04.22
✎
11:21
|
предчувствуя следующий вопрос про "РегСведений.Контрагент")
НоменклатураКонтрагентов.Контрагент=&Контрагент |
|||
34
dvrk
06.04.22
✎
11:22
|
(32) да, так изначально и сделал, но проблема в том, что строки, для которых в этом РСе записей нет он обрезал
|
|||
35
Kassern
06.04.22
✎
11:23
|
(34) потому что у вас основной таблицей был РС судя по (0)
|
|||
36
Kassern
06.04.22
✎
11:24
|
вы брали РС, резали его отборами по ТЧ выбранного документа, конечно у вас пустых строк не будет
|
|||
37
vicof
06.04.22
✎
11:25
|
(35) у тебя хорошая стабильная нервная система)
|
|||
38
Kassern
06.04.22
✎
11:26
|
(34) вы понимаете разницу в написании НоменклатураКонтрагентов.Контрагент=&Контрагент в соединении и в отборе? В первом случае срежутся строки правой таблицы перед соединением, во втором случае срежутся все строки объединенной таблицы
|
|||
39
Kassern
06.04.22
✎
11:26
|
(37) тренирую здесь)
|
|||
40
Kassern
06.04.22
✎
11:27
|
после пары таких топиков, бухи в отчетный период кажутся милыми юзверами)
|
|||
41
dvrk
06.04.22
✎
11:30
|
(38) видимо не понимаю, потому что теперь он вывел номенклатуру, которой в документе нет
|
|||
42
dvrk
06.04.22
✎
11:33
|
(40) если я пишу НоменклатураКонтрагентов.Контрагент = &Контрагент в "Условии", то он ТОЛЬКО контрагента из параметра выдаёт, без пустых строк, если пишу в "Связи" то он все пустые номенклатуры даёт и те которые в параметре есть, но все пустые не из документа, а из всего справочника видимо
|
|||
43
Kassern
06.04.22
✎
11:34
|
еще раз запрос скиньте весь с условием в соединении ко контрагенту
|
|||
44
dvrk
06.04.22
✎
11:35
|
(43) ВЫБРАТЬ
УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл КАК НоменклатураКодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура КАК Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения КАК ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара КАК НоменклатураВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента КАК КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент КАК Контрагент ИЗ Документ.УсловияПоставокПоДоговорамКонтрагентов.НоменклатураДоговора КАК УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов ПО (НоменклатураКонтрагентов.Номенклатура = УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура) И (НоменклатураКонтрагентов.Контрагент = &Контрагент) ГДЕ УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.КодОракл, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВестиУчетПоХарактеристикам, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.ЕдиницаИзмерения, УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Номенклатура.ВидТовара, НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, НоменклатураКонтрагентов.Контрагент |
|||
45
Kassern
06.04.22
✎
11:38
|
(44) Вот, теперь вы для каждой строчки ТЧ документа &Ссылка присоединяете строки РС, у которых номенклатура совпадает и контрагент=&Контрагент. Кстати если у вас в шапке указан контрагент, то смысл вообще в параметре? Можно же проще УсловияПоставокПоДоговорамКонтрагентовНоменклатураДоговора.Ссылка.Контрагент=НоменклатураКонтрагентов.Контрагент
|
|||
46
Kassern
06.04.22
✎
11:39
|
я правильно понимаю, у вас задублились строчки ТЧ в результате такого запроса?
|
|||
47
dvrk
06.04.22
✎
11:43
|
(46) сейчас точно проверю
|
|||
48
Kassern
06.04.22
✎
11:45
|
попробуйте на досуге создать базу пустышку с вашей конфой и заведите небольшое количество строчек в нужных документах/регистрах. А дальше уже через консоль запросов любайтесь с данными, пока не разберетесь как это работает. Лучше в купе с книжкой/статьей про запросы. На нескольких строчках гораздо легче разобраться как повела себя 1с при соединениях и отборах в запросе
|
|||
49
dvrk
06.04.22
✎
11:47
|
(48) я ещё не дошел до запросов, задание просто срочно надо было сделать, но вообще весь косяк из-за того, что я изначально сделал 1ой таблицей РС, а точнее от незнания как это всё и на что влияет, спасибо большое, не знаю повлияло ли это как то, но почистив кэш, (44) это нормально отработало, а до очистки выдало 1800 строк(хотя в доке столько нет)
|
|||
50
Kassern
06.04.22
✎
11:48
|
(49) пора уже доходить, это основной инструмент для работы с данными базы
|
|||
51
dvrk
06.04.22
✎
11:51
|
(50) не лень время было тратить, учитывая, что я всё равно мало что понял?
|
|||
52
dvrk
06.04.22
✎
11:52
|
ну точнее я понял+-, но сначала не понял ничего
|
|||
53
Kassern
06.04.22
✎
11:55
|
(51) ну а смысл этого форума как раз в этом и состоит. Задавать вопросы по 1с и помогать, если знаешь сам. Может кому-то потом это пригодиться, можно будет ссылку на эту ветку скинуть.
|
|||
54
dvrk
06.04.22
✎
12:17
|
(53) а я думал смысл форума тролить очень смешно и тонко по мнению тролера и не помогать
|
|||
55
dvrk
06.04.22
✎
12:17
|
(53) спасибо огромное
|
|||
56
d_monah
06.04.22
✎
12:34
|
(54) Думать надо меньше,делать больше.Или не думать ,а трясти)
|
|||
57
dvrk
06.04.22
✎
13:14
|
(56) вово, примерно так я себе и представлял ответы на форуме
|
|||
58
d_monah
06.04.22
✎
13:18
|
(57) Я не мог тебя разочароввть.
|
|||
59
dvrk
06.04.22
✎
13:21
|
(58) нравится издеваться над маленькими да?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |