Имя: Пароль:
   
1C
 
Повторяется запись в выборке по ДополнительнымРеквизитам
0 NIGHTHUNTER
 
naïve
01.04.21
08:38
Выбираю реквизиты из справочника контрагенты или партнеры.
Повторяется запись при выборке из дополнительных реквизитов.
1 NIGHTHUNTER
 
naïve
01.04.21
08:40
(0+)  http://joxi.ru/12MyVQliky8lE2

Как правильнее делать подобные запросы, что бы не задваивались записи? Делать вложенными запросами? Пакетными вроде тоже не подойдет .

ВЫБРАТЬ
    Партнеры.Код КАК Код,
    Партнеры.Наименование КАК Наименование,
    Партнеры.Ссылка КАК Ссылка,
    ПартнерыДополнительныеРеквизиты.Свойство КАК Свойство,
    ПартнерыДополнительныеРеквизиты.Значение КАК Значение,
    ПартнерыДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока,
    ПартнерыКонтактнаяИнформация.Тип КАК Тип,
    ПартнерыКонтактнаяИнформация.Вид КАК Вид,
    ПартнерыКонтактнаяИнформация.Представление КАК Представление,
    ПартнерыКонтактнаяИнформация.Значение КАК Значение1
ИЗ
    Справочник.Партнеры КАК Партнеры
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.ДополнительныеРеквизиты КАК ПартнерыДополнительныеРеквизиты
        ПО Партнеры.Ссылка = ПартнерыДополнительныеРеквизиты.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
2 Обработка
 
01.04.21
08:44
А вы уверены что записи дубли?
ТО что на рисунке выделено по виду отличается значит они не дубли...
3 dka80
 
01.04.21
09:05
+2 колонка Вид отличается. Это не дубли
4 NIGHTHUNTER
 
naïve
01.04.21
09:22
(2) Да отличаются http://joxi.ru/82QJW7EH9J4RZA

Но экспедитор Петров 2 раза почему??? Так и должно быть?
5 kobzon2
 
01.04.21
09:24
(4) Не заставляй людей ругаться матом с утра.
6 dka80
 
01.04.21
09:26
(4) У тебя несколько видов адресов: адрес (хз что это), адрес доставки, адрес прописки и т.д. И Петров может иметь каждый из этих адресов и тогда их будет не два, а три или четыре.
Поэтому вот это
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
надо заменить на
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
и ПартнерыКонтактнаяИнформация.Вид=ТРЕБУЕМЫЙВИД
7 Chameleon1980
 
naïve
01.04.21
09:31
посыл к автору и подобным.
вы хоть основы запросов и хранения данных уясните
и большинство ваших вопросов отпадет
каждый раз одно и тоже и связанное с основами
8 NIGHTHUNTER
 
naïve
01.04.21
09:43
(6) Я выбирал все что есть. Пока без фильтров.

Ввел курьер Иванов, этому контрагенту у которого экспедитор Петров, так он не выбирается. Не понимаю вообще почему.
9 Обработка
 
01.04.21
11:24
Реально глазами посмотри сколько там записей всего в таблицах
10 novichok79
 
naïve
01.04.21
11:30
я думаю что Андрей нас троллит, не бывает же так, чтобы человек работал программистом 1С и не разбирался в запросах.
11 Mikeware
 
01.04.21
11:35
(7) ну неспособен он... органически туп. принципиально.
это нельзя понять (реально нельзя понять), но можно просто запомнить его по никам.
12 Обработка
 
01.04.21
11:47
Бывает случаи когда человек выучил слово целиком но по буквам читать не научился. Ну это как учиться. Фундамент важнее всего.
Хотя запросы не всем легко даются даже с пониманием азов. Я вот почему-то не очень люблю вложенные запросы  не потому что не удобно просто мой мозг не воспринимает их нормально. Приучил себя делать отдельные запросы и потом их соединять или объединять. )))
13 Kassern
 
01.04.21
11:50
(12) по мне так лучше делать временные таблицы, а не вложенные запросы. Понимаю раньше, не было временных таблиц, приходилось вложенными пользоваться, а сейчас, можно создавать и уничтожать эти временные таблицы и писать более оптимальные запросы. Да и читаются такие запросы по мне так лучше.
14 Kassern
 
01.04.21
11:52
(1) а вас не смущает что "Вид" разный? В одном случае это адрес, а в другом - адрес доставки.
15 Обработка
 
01.04.21
11:52
(13)  Ну ВТ у меня самые любимые.
16 Обработка
 
01.04.21
11:54
(0) Кстати у меня недавно была задача переноса контактных данных из базы в базу вот там я точно помню что телефоны бывают разные.
Рабочий домашний, мобильный итп. И так же с адресами. Так что нужно фильтры навешать если нужно конечно.
17 NIGHTHUNTER
 
naïve
01.04.21
12:22
Я добавил курьера Иванов, записей стало 4. То есть это все нормально так да?
18 NIGHTHUNTER
 
naïve
01.04.21
12:22
19 NIGHTHUNTER
 
naïve
01.04.21
12:29
(6) Я же выбираю без фильтра!!!!
20 Kassern
 
01.04.21
12:30
(18) возьми ручку, или карандаш и нарисуй свои таблицы и как ты их соединяешь и сразу будет понятно почему у тебя строки задваиваются, раз в голове представить соединение не можешь
21 Mikeware
 
01.04.21
12:31
(17) да. там - все нормально. а ошибка - она в ДНК
22 Kassern
 
01.04.21
12:31
(20) если все равно не понятно, берешь умную книжку и читаешь про левое соединение таблиц
23 Mikeware
 
01.04.21
12:34
(20) (22) анекдот про негра и молоко...
24 NIGHTHUNTER
 
naïve
01.04.21
12:34
(22) Может подскажете как будет правильно?
Строки различаются только экспедитором петровым и курьером Ивановым.
Я думаю тогда это выбирать вложенными запросами, что бы не было задвоений, а эти дополнительные реквизиты выходили новым полем.

Так ли?
25 NIGHTHUNTER
 
naïve
01.04.21
12:36
Я во всем этом вижу решение, что в данном случае, из 4х строк, должно быть 2.
А курьер и экспедитор идут дополнительными полями.

Или как тут нужно правильно?
26 Kassern
 
01.04.21
12:38
(25) почитай вот эту ветку, как раз на днях было. Если соображалка работает, то думаю сможешь на свой пример перенести.
Выбрать свойства номенклатуры в запросе
27 Kassern
 
01.04.21
12:38
(23) что за анекдот?
28 NIGHTHUNTER
 
naïve
01.04.21
12:41
(6) Интересно как это так будет связано? Справочник партнеры УТ, вкладка дополнительно,
туда добавлен экспедитор и курьер. А адрес на своей вкладке адреса и телефоны, адрес, адрес доставки и тд.
Так что не факт что так может быть связанно как вы сказали. Я вот и пытаюсь понять как тут правильно делать запрос, что бы не задваивать записи.
29 Mikeware
 
01.04.21
12:45
(27) идет чувак по нью-йорку. Видит, стоит негр, и пьет молоко прямо из пакета...
ну, постоял, посмотрел, и говорит:  Не, не поможет!
©
30 NIGHTHUNTER
 
naïve
01.04.21
12:45
(26) Ну то есть нужно фильтр устанавливать по свойству, что бы не было задвоений, это вы хотели сказать?

Получается вот так как в (0) нельзя выбирать, без установки фильтрации ?

Или на вид, контактной информации.
31 Kassern
 
01.04.21
12:48
(30) потому что без фильтра по каждой строчке из левой таблице, присоединятся все строчки из правой таблицы у которых совпадает связь, а у тебя связью является только ссылка. Если в правой таблице 2-3 строчки с данной ссылкой, то в результирующей таблице будет так же 2-3 строчки. Чтобы это избежать, нужно правую таблицу обрезать, в данном случае фильтром
32 Kassern
 
01.04.21
12:50
(31) поэтому я и написал, чтобы ты почитал про соединения таблиц, нарисовал данные таблицы хоть на листочке и сам убедился почему у тебя идет задвоение
33 NIGHTHUNTER
 
naïve
01.04.21
12:51
(31) Ну понятно. Я рассматривал ситуацию без фильтров. Что есть фильтры, можно делать, это понятно.
А важно ещё показать без фильтров. То есть, понятно мне, что без фильтра тут не обойтись. У меня нет конкретной цели, по этому я плутаю тут сам.
34 Mikeware
 
01.04.21
12:53
(33) "нас невозможно сбить с пути - нам пох*ю, куда идти!"©
(32) я ж в (11) еще написал.
35 Kassern
 
01.04.21
12:54
(34) надежда умирает последней
36 novichok79
 
naïve
01.04.21
12:59
(13) это пока данных не очень много в таблицах, можно все в ВТ запихнуть. а если там 60 млн записей, то чисто INSERT INTO будет выполняться 40% времени запроса.
37 Chameleon1980
 
naïve
01.04.21
13:00
автор так и не услышал про "почитать про азы"
и, похоже, так никогда и не услышит
38 Chameleon1980
 
naïve
01.04.21
13:01
(36)ну а с вложенным, в этом случае, ещё хуже
39 Kassern
 
01.04.21
13:02
(36) в этом случае делаешь срез базы, архивчик в чулан и дальше работаешь)
40 novichok79
 
naïve
01.04.21
13:06
(38) ок, доказательства в студию.
на реальном проекте, ускорение составило с 35 до 13 секунд по таблице с 60 млн записей на MS SQL сервере.
41 novichok79
 
naïve
01.04.21
13:07
(39) ну да, я вчера родился и не знал про архивы. в архиве данных еще больше было.
42 kobzon2
 
01.04.21
13:10
(0) Если у тебя база не 60 млн записей и плохо понимаешь соединения, делай как советуют выше через ВТ.
Выбери в первом запросе адрес и ссылку из Справочник.Партнеры.ДополнительныеРеквизиты, с условием что доп реквизит равен такому то адресу, и помести в ВТ.
Вторым запросом выбирай различные контрагенты из справочника Партнеры и адрес из ВТ и соединяй их левым.
Хотя цель так и не понятно, что зачем надо.
43 Kassern
 
01.04.21
13:10
(40) Вот что нашел на просторах инета
На дисках ИТС - есть специальный раздел, посвященный оптимизации запросов :)

В общем случае лучше использовать временные таблицы, тогда улучшается читаемость запросов, появляется возможность многократного использования полученного результата, в большинстве случаев работа со временными таблицами происходит быстрее.

Простые вложенные запросы при использование MS SQL версии могут выполняться быстрее - все-таки в MS SQL встроен оптимизатор выполнения запроса, который может соединить подзапросы быстрее чем если явно будет прописана выборка данных во временную таблицу.... но иногда оптимизатор работает не правильно ;) и тогда запросы без временных таблиц - ну просто тормозят ;)
44 Chameleon1980
 
naïve
01.04.21
13:11
(40) а запрос покажи?
а с вложенным и как повезет
SQL при использовании вложенного запроса заранее не знает количество
получивших я записей и может неверно построить
план запроса. в отличие от вт
45 novichok79
 
naïve
01.04.21
13:14
(44) это да, но в отличие от ВТ - помещать во временную таблицу ничего не надо. по поводу запроса - ЕМНИП там шел сбор таблицы со свойствами во временную. уволился с той конторы год назад, cf сейчас уже не найду. там была самописка по сбору данных, поэтому и записей под 60 млн в оперативной базе (срез данных за месяц вроде).
46 novichok79
 
naïve
01.04.21
13:15
(43) это да, MS SQL очень хорошо оптимизирован.
47 MouHacTaBHuk
 
01.04.21
13:35
пол сотни сообщений, а задача-то не прозвучала. Прозвучал тезис в теме, что строки повторяются, и сразу же был ответ - нет, не повторяются. Далее-то что обсуждать без задачи? Что выбрать-то надо: все свойства/всю контактную информацию, или, например, список всех контрагентов, у которых есть хоть какой-то адрес, или и так далее
48 Kassern
 
01.04.21
13:36
(47) Был вопрос: Как правильнее делать подобные запросы, что бы не задваивались записи? На него почти сразу и ответили...
49 MouHacTaBHuk
 
01.04.21
13:41
(48) да, но по последующим вопросам ТСа видно, что он не совсем понимает что делает, а следовательно он не сформулировал для себя какой результат ему нужен. Тут мы все бессильны пока что
50 Mikeware
 
01.04.21
13:42
(49) вы излишне оптимистичны, сэр!
51 NIGHTHUNTER
 
naïve
02.04.21
07:22
(49) Я хотел сделать выборку контрагентов и их таблиц, без учета фильтров и параметров, выдать все что есть.
Получается дополнительные реквизиты нужно исключить. либо обрабатывать их как то отдельно. Так как по ним идет задвоение записей.
Не буду я использовать фильтры и отборы, это противоречит самой выборки, выбраться должно все, без исключения. Такая была цель.

Вывести все что есть по контрагентам. И если у них есть дополнительные реквизиты то их тоже.
52 FIXXXL
 
02.04.21
07:58
(51) можешь предварительно раскидать по отдельным временным таблицам контактную информацию в зависимости от типа, а уже потом каждую вязать по отдельности и выводить каждую КИ в отдельное поле
53 NIGHTHUNTER
 
naïve
02.04.21
08:15
(52) временный таблицы, это имеется ввиду через

МВТ = Новый МенеджерВременныйТаблиц;

Не пакетные запросы?

И с использованием МВТ , это единственный вариант решения? наверное давно не сталкивался с ним, да и не часто использовал.
Нет можно сказать понимания. Но нужно! Я вот и ищу область для изучения, что бы взять ее в понимание.

Нужно заняться. буду благодарен любым напутствиям, и наставлениям на правильный путь развития.
54 Mikeware
 
02.04.21
08:28
(53) наставления даже в этой ветке были даны трижды: в(7),(20),(22)
55 novichok79
 
naïve
02.04.21
08:46
цитаты великих: "Я вот и ищу область для изучения, что бы взять ее в понимание."
56 FIXXXL
 
02.04.21
08:49
(53) как умеешь, хоть через вложенные запросы
57 Mikeware
 
02.04.21
08:52
(55) "область" - мелко. надо как минимум "пространство"
58 Kassern
 
02.04.21
09:21
59 NIGHTHUNTER
 
naïve
02.04.21
10:18
(58) А что это за обработка КонструкторЗапросовУпр_Конфетка ?