|   |   | 
| 
 | Почему дублируются записи в результате запроса? | ☑ | ||
|---|---|---|---|---|
| 0
    
        novmax 21.01.22✎ 14:10 | 
        Добрый день! Я начинающий. Подскажите, пожалуйста, почему так и что делать? Управление торговлей 11
 Запрос: ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Документ, КонтрагентыКонтактнаяИнформация.Ссылка КАК Контрагент, КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка Результат: Документ Контрагент НомерТелефона Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир 9876543 Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир Реализация товаров и услуг ТДУТ-000025 от 04.12.2017 18:33:00 Альтаир 9876543 Проблемы: 1. Почему так много строк? В документе в табличной части 2 товара. 2. Почему номер телефона выводится не в каждой строке? | |||
| 1
    
        ДенисЧ 21.01.22✎ 14:11 | 
        потому что контактной информации больше одной.     | |||
| 2
    
        Ёпрст гуру 21.01.22✎ 14:11 | 
        (0) сколько строк в табличной части товары, столько ты и видишь при выводе     | |||
| 3
    
        Ёпрст гуру 21.01.22✎ 14:12 | 
        ну и в КонтактнаяИнформация  нужно фильтр ставить на вид/тип.. там же и адрес и телефон ит т.д     | |||
| 4
    
        PuhUfa 21.01.22✎ 14:13 | 
        А лучше почитать интернет на предмет "как работают соединения"     | |||
| 5
    
        Dmitrii гуру 21.01.22✎ 14:18 | 
        (0) В табличной части Товары вашего документа две строчки. А у Контрагента три вида/типа контактной информации - помимо телефона , например, ещё адрес и электронная почта.
 И даже если отобрать по виду контактной информации, вовсе не факт, что у контрагента только один телефон. Их может быть и несколько. | |||
| 6
    
        novmax 21.01.22✎ 14:20 | 
        Так ведь другая контактная информация не запрашивается, только телефон, очень странно.     | |||
| 7
    
        Dmitrii гуру 21.01.22✎ 14:21 | 
        (0) Вот это "ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка" исправь на "ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = КонтрагентыКонтактнаяИнформация.Ссылка". Реквизит Контрагент - это уже Ссылка. Получать от него ссылку не нужно.     | |||
| 8
    
        Dmitrii гуру 21.01.22✎ 14:25 | 
        (6) >> другая контактная информация не запрашивается, только телефон.
 Где это написано? Не в условиях ГДЕ, не в условиях соединения отбора виду или типу контактной информации нет. А реквизит "Телефон" есть во всех строках табличной части Контрагенты.КонтактнаяИнформация. Если там десять строк, то все они и выводятся. | |||
| 9
    
        Курцвейл 21.01.22✎ 14:33 | 
        (0) Рекомендую внимательно прочитать https://intuit.ru/studies/courses/5/5/lecture/130
 А еще лучше весь курс прочитать. Будет понимание что ты делаешь с СУБД в запросах. | |||
| 10
    
        exwill 21.01.22✎ 14:39 | 
        (6) Это называется: нормализация - денормализация. В идеале все таблицы должны быть нормализованы. Тогда бы в базе была специальная таблица: "Телефоны". И в ней хранились бы только телефоны. Но на практике полную нормализацию никто не делает. И даже более того. Иногда специально прибегают к денормализации. Поэтому появляется таблица: "Контакты". И эта таблица разреженная. В том смысле, что, например, в записи относящейся к адресу будет только адрес. А все прочие реквизиты, в том числе и "телефон" будут в этой записи пустые.     | |||
| 11
    
        ДенисЧ 21.01.22✎ 14:40 | 
        (10) Идиотизм.     | |||
| 12
    
        exwill 21.01.22✎ 14:41 | 
        (11) По существу есть что возразить?     | |||
| 13
    
        ДенисЧ 21.01.22✎ 14:43 | 
        (12) нет, по тебе возражений нет.     | |||
| 14
    
        mikecool 21.01.22✎ 14:44 | 
        (12) есть достоверность и производительность, нормализация ближе к производительности, но в ущерб достоверности     | |||
| 15
    
        mikecool 21.01.22✎ 14:44 | 
        +14 хотя куда я лезу, я же теорию не читаю     | |||
| 16
    
        Ёпрст гуру 21.01.22✎ 14:45 | 
        (15) да-да-да.. не надо увеличивать энтропию     | |||
| 17
    
        exwill 21.01.22✎ 14:46 | 
        (14) Нормализация экономит место в ущерб производительности.     | |||
| 18
    
        Курцвейл 21.01.22✎ 14:47 | 
        Все субд по умолчанию нормализованные к 3 или 4 форме. Давно уже теорию по норме форм не читал.     | |||
| 19
    
        ДенисЧ 21.01.22✎ 14:48 | 
        (18) Кто тебе такую фигню сказал?     | |||
| 20
    
        trad 21.01.22✎ 14:50 | 
        (16) можно я увеличу?.. спасибо     | |||
| 21
    
        trad 21.01.22✎ 14:51 | 
        (10) если в этой "специальная таблица: "Телефоны"" будет несколько телефонов одного контра вы же потребуете чтоб возвращался один, любой. А то что этот джойн себе позволяет ))     | |||
| 22
    
        exwill 21.01.22✎ 14:53 | 
        (18) Таблица Справочник.Контрагенты.КонтактнаяИнформация не находится даже во второй нормальной форме     | |||
| 23
    
        exwill 21.01.22✎ 14:55 | 
        А строго говоря, даже и в первой потенциально не находится. Но это зависит от того, как сильно придираться.     | |||
| 24
    
        Курцвейл 21.01.22✎ 14:59 | 
        (19) Это не фигня, а так считается. Если найду ссылку, то напишу суда.     | |||
| 25
    
        ДенисЧ 21.01.22✎ 15:02 | 
        (24) Кем считается?     | |||
| 26
    
        exwill 21.01.22✎ 15:03 | 
        (24) Извини, но он прав. Ты фигню сказал. Если у тебя в таблице могут быть повторяющиеся строки, то это уже не первая нормальная форма. Если у тебя могут быть "пустоты", как в рассматриваемом примере, то это уже не вторая нормальная форма. Выводы сам делай.     | |||
| 27
    
        Ёпрст гуру 21.01.22✎ 15:04 | 
        (20) Можно. Но только один раз.     | |||
| 28
    
        Мультук гуру 21.01.22✎ 15:08 | 
        А ставкаНДС это вообще по всем признаком фотон.
 Потому как может быть или перечислением, или справочником, или перечислением и справочником одновременно. | |||
| 29
    
        FIXXXL 21.01.22✎ 15:19 | 
        (12) а не сам ли ты эти темы клепаешь? для попи..деть :)     | |||
| 30
    
        pechkin 21.01.22✎ 16:40 | 
        (22) ключ вообщето составным может быть и он в КИ как раз такой. так что вполне 2 нормальная форма     | |||
| 31
    
        Sserj 21.01.22✎ 17:27 | 
        (26) Вот какую ерунду ты сеешь в головы начинающих.
 У тебя нет и не может быть в принципе "повторяющихся строк" в 1С. У каждой строки есть уникальный идентификатор, это уже гарантирует что строки не повторяющиеся. Так что контактная информация абсолютно нормализированная таблица. | |||
| 32
    
        novmax 21.01.22✎ 17:35 | 
        После добавления условия в ГДЕ
 КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) по контрагентам, у которых телефон в карточке не указан, строки перестали выводиться вообще | |||
| 33
    
        shuhard 21.01.22✎ 17:37 | 
        (32) замени на левое соединение     | |||
| 34
    
        Kassern 21.01.22✎ 17:37 | 
        (0) "ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент.Ссылка = КонтрагентыКонтактнаяИнформация.Ссылка И КонтрагентыКонтактнаяИнформация.Вид=&НужныйВид"     | |||
| 35
    
        Kassern 21.01.22✎ 17:37 | 
        Еще и тип лучше прописать     | |||
| 36
    
        Kassern 21.01.22✎ 17:38 | 
        (35) имеется в виду КонтрагентыКонтактнаяИнформация.Тип=&НужныйТип     | |||
| 37
    
        exwill 21.01.22✎ 17:39 | 
        (31) Я сразу сказал, что если не придираться то это первая нормальная форма. А если придираться, то никакая.
 Первая нормальная форма требует, чтобы строки не были упорядочены каким-либо образом. Т.е. можно сказать, что нумерация срок нарушает первую нормальную форму. | |||
| 38
    
        novmax 21.01.22✎ 17:42 | 
        Спасибо! Получилось!     | |||
| 39
    
        Kassern 21.01.22✎ 17:43 | 
        (0) Чтобы было понимание, почему столько строк, возьмите листок бумаги, или эксельку и нарисуйте 2 таблицы. Первая будет с номерами заказов и контрагентами. Вторая будет с Таблчиной частью Контактная информация, где у вас будет Телефон, Электронная почта, адрес (множество строк) для одного контрагента. Можете прям из вашего контрагента табличку эту вытянуть. А далее почитать как работают соединения таблиц, внутреннее, левое, правое. И тогда у вас будет понимание, как их соединить и как отобрать нужные строки     | |||
| 40
    
        Sserj 21.01.22✎ 17:53 | 
        (37) Ну вот теперь ты совсем заблудился :)
 "чтобы строки не были упорядочены каким-либо образом" - нет такого требования, даже упоминания. Это у тебя обрывки воспоминаний из реляционной алгебры. В ней это называется реляционным множеством, состоящим из кортежей. Контактная информация удовлетворяет всем правилам нормализации вплоть до четвертой. Каждая строка уникальна, каждая строка однозначно идентифицируется по первичному ключу. В таблице нет ссылок на саму себя (4 форма). Она не может нормализоваться дальше. Так как твой пример - отдельно сделать таблицу для телефонов не может быть тут применен. Телефон у клиента он самодостаточен как строка, он не может быть применен к другим клиентам. Иными словами на него нельзя ссылаться из других строк. | |||
| 41
    
        exwill 21.01.22✎ 18:04 | 
        (40) https://ru.wikipedia.org/wiki/Первая_нормальная_форма
 https://ru.wikipedia.org/wiki/Вторая_нормальная_форма Здесь обратите внимание на это: "Вторая нормальная форма по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа" В частности этим запрещаются разреженные "таблицы", когда вы делаете колонки, которые заполняются в разных строках. | |||
| 42
    
        exwill 21.01.22✎ 18:06 | 
        (40) Да и просто можно включить общее понимание. Нормализация - это устранение избыточности. Пустая ячейка в контактных данных - явно избыточна.     | |||
| 43
    
        Sserj 21.01.22✎ 18:28 | 
        (41) Меньше читай википедичку. Так для справки - в СУБД таблицы в принципе не могут иметь какого-либо порядка. Порядок имеют только ключи.
 Вот тут более близко к тому как на самом деле трактовал нормализацию Дейт: https://habr.com/ru/post/254773/ "В частности этим запрещаются разреженные "таблицы", когда вы делаете колонки, которые заполняются в разных строках." А кто сказал что они заполняются в разных строках. Они заполнены везде пустой строкой, 1С не допускает NULL. И ни что не мешает к любому типу информации добавлять при необходимости и телефон. И к юрадресу и к физадресу и даже к емайлу кстати. (41) Пустая ячейка в контактных явно избыточна. А вот она там и не пустая. Она строка нулевой длинны, но это лишь показывает о том что вот в этой организации ее не заполняют. Но 1С работает в сотнях тысяч организаций и довольно часто она заполнена совсем не пустой строкой. | |||
| 44
    
        exwill 21.01.22✎ 20:04 | 
        (43) Как я вижу, вы просто не понимаете - о чем тут речь
 Вид контакта Адрес Email Телефон ====================================================== Адрес г.Москва... Email info@mail.ru Телефон 123-45-67 Эта таблица не нормализована. Хоть у кого спросите | |||
| 45
    
        pechkin 21.01.22✎ 20:12 | 
        (44) вроде не так же хранится: Вид контакта - представление | |||
| 46
    
        exwill 21.01.22✎ 20:12 | 
        (45) См. запрос в (0)     | |||
| 47
    
        exwill 21.01.22✎ 20:13 | 
        И результат запроса     | |||
| 48
    
        pechkin 21.01.22✎ 20:52 | 
        Точто там же еще расшифровка хранится     | |||
| 49
    
        exwill 21.01.22✎ 21:55 | 
        (48) Если бы там было одно поле "представление", то и этой темы не было бы. ТС не погрузился бы в недоумение - а почему это у меня телефоны пустые     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |