Версия для печати темы (https://pro1c.org.ua/index.php?s=37a2ac42c80bcb73afcd7de4234dd9d4&showtopic=46589)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Обнаружено дублирование ключевых значений в колонках: ссылка

Автор: Andrian 11.07.18, 9:06

При переходе в режиме Предприятия на вкладку "Заказы Клиентов" выдает ошибку "обнаружено дублирование ключевых значений в колонках: ссылка"
вот код запроса

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДокументЗаказКлиента.Ссылка КАК Ссылка,
    ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления,
    ДокументЗаказКлиента.Номер КАК Номер,
    ДокументЗаказКлиента.Дата КАК Дата,
    ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
    ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
    ДокументЗаказКлиента.Проведен КАК Проведен,
    ДокументЗаказКлиента.Приоритет КАК Приоритет,
    ДокументЗаказКлиента.Партнер КАК Партнер,
    ДокументЗаказКлиента.Контрагент КАК Контрагент,
    ДокументЗаказКлиента.Организация КАК Организация,
    ДокументЗаказКлиента.Соглашение КАК Соглашение,
    ДокументЗаказКлиента.Договор КАК Договор,
    ДокументЗаказКлиента.Сделка КАК Сделка,
    ДокументЗаказКлиента.Валюта КАК Валюта,
    ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
    ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары,
    ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты,
    ДокументЗаказКлиента.ЖелаемаяДатаОтгрузки КАК ЖелаемаяДатаОтгрузки,
    ДокументЗаказКлиента.Склад КАК Склад,
    ДокументЗаказКлиента.Статус КАК Статус,
    ДокументЗаказКлиента.Менеджер КАК Менеджер,
    ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения,
    ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки,
    ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки,
    ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
    ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов,
    ВЫБОР
        КОГДА НЕ ДокументЗаказКлиента.Проведен
            ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
        ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
    КОНЕЦ КАК Состояние,
    ВЫБОР
        КОГДА НЕ ДокументЗаказКлиента.Проведен
            ТОГДА ЛОЖЬ
        КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
                И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Просрочен,
    ВЫБОР
        КОГДА ДокументЗаказКлиента.Приоритет В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    Приоритеты.Ссылка КАК Приоритет
                ИЗ
                    Справочник.Приоритеты КАК Приоритеты
                УПОРЯДОЧИТЬ ПО
                    Приоритеты.РеквизитДопУпорядочивания)
            ТОГДА 0
        КОГДА ДокументЗаказКлиента.Приоритет В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    Приоритеты.Ссылка КАК Приоритет
                ИЗ
                    Справочник.Приоритеты КАК Приоритеты
                УПОРЯДОЧИТЬ ПО
                    Приоритеты.РеквизитДопУпорядочивания УБЫВ)
            ТОГДА 2
        ИНАЧЕ 1
    КОНЕЦ КАК КартинкаПриоритета,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки,
    ВЫБОР
        КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0
            ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
        ИНАЧЕ 0
    КОНЕЦ КАК НашДолг,
    ВЫБОР
        КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0
            ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
        ИНАЧЕ 0
    КОНЕЦ КАК ДолгКлиента,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия,
    ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная,
    СостоянияЭД.СостояниеВерсииЭД,
    РеализацияТоваровУслуг.Дата КАК ДатаРеализации,
    ВЫРАЗИТЬ(РАЗНОСТЬДАТ(&ТекущаяДата, РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК ЧИСЛО(15, 1)) КАК Просрочка,
    РеализацияТоваровУслуг.ДокументОснование.Ссылка
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДокументЗаказКлиента
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
            ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)
            {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
            ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)}
        ПО РеализацияТоваровУслуг.ЗаказКлиента = ДокументЗаказКлиента.Ссылка
            И РеализацияТоваровУслуг.ДокументОснование = ДокументЗаказКлиента.Ссылка

Автор: Petre 11.07.18, 9:14

Andrian @ Today, 9:06 * ,
Ошибка говорит о том, что в результате вашего соединения у вас несколько строк с одной и той же ссылкой на запись основной таблицы.

Автор: Andrian 11.07.18, 10:01

Petre @ Сегодня, 10:14 * ,
А как это можно исправить?

Автор: ed.kharkov 11.07.18, 10:08

Andrian @ Сегодня, 11:01 * ,
Обратите внимание на соединения в запросе, а именно на соединение с регистром сведений СостоянияЗаказовКлиентов.
Если в этом регистре несколько записей для одно заказа, то это может быть причиной ошибки.

Автор: Petre 11.07.18, 11:17

Andrian @ Today, 10:01 * ,
Поменять концепцию. Не делать из списка отчет.
Либо отдельно собирайте информацию о наличии у документа связей с другими документами (есть или нет) и отображайте флажком / картинкой, либо по команде выводите список связанных документов, либо по команде формируйте отчет с группировками, деревьями и прочим блекджеком...

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua