Имя: Пароль:
   
1C
1С v8
Обнаружено дублирование ключевых значений
0 AnisaL
 
07.06.19
17:01
Добрый день!
Подскажите,пожалуйста, в форме выбора справочника Партии номенклатуры есть динамический список с запросом, и он выдает такую ошибку: Обнаружено дублирование ключевых значений в колонках "Ссылка". Отображение данных в списке невозможно
1 AnisaL
 
07.06.19
17:02
(0) вот запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ВЫБОР
        КОГДА ПартииКонтрагентов.Номенклатура ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК Основная,
    СправочникПартииНоменклатуры.Ссылка КАК Ссылка,
    СправочникПартииНоменклатуры.ПометкаУдаления КАК ПометкаУдаления,
    СправочникПартииНоменклатуры.Владелец КАК Владелец,
    СправочникПартииНоменклатуры.Код КАК Код,
    СправочникПартииНоменклатуры.Наименование КАК Наименование,
    СправочникПартииНоменклатуры.Статус КАК Статус,
    ВЫБОР
        КОГДА СправочникПартииНоменклатуры.ВладелецПартии = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
            ТОГДА "<Без владельца>"
        ИНАЧЕ СправочникПартииНоменклатуры.ВладелецПартии
    КОНЕЦ КАК ВладелецПартии,
    СправочникПартииНоменклатуры.Предопределенный КАК Предопределенный,
    СправочникПартииНоменклатуры.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
    СправочникПартииНоменклатуры.Недействителен КАК Недействителен,
    ВЫБОР
        КОГДА СправочникПартииНоменклатуры.ПометкаУдаления ЕСТЬ NULL
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА СправочникПартииНоменклатуры.ПометкаУдаления
                    ТОГДА 5
                ИНАЧЕ 4
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ВЫБОР
        КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
            ТОГДА 0
        КОГДА НаличиеФайлов.ЕстьФайлы
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК ЕстьФайлы,
    ЗапасыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика,
    МАКСИМУМ(ЗапасыНаСкладахОстаткиИОбороты.Период) КАК ДатаПоступления,
    СУММА(ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
    СУММА(ЕСТЬNULL(ЗапасыОстатки.СуммаОстаток, 0)) КАК СуммаОстаток
ИЗ
    Справочник.ПартииНоменклатуры КАК СправочникПартииНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартииКонтрагентов КАК ПартииКонтрагентов
        ПО СправочникПартииНоменклатуры.Ссылка = ПартииКонтрагентов.Партия
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
        ПО СправочникПартииНоменклатуры.Ссылка = НаличиеФайлов.ОбъектСФайлами}
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.ОстаткиИОбороты(, , Регистратор, , ) КАК ЗапасыНаСкладахОстаткиИОбороты
        ПО (ЗапасыНаСкладахОстаткиИОбороты.Номенклатура = СправочникПартииНоменклатуры.Владелец)
            И (ЗапасыНаСкладахОстаткиИОбороты.Партия = СправочникПартииНоменклатуры.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Остатки(, ) КАК ЗапасыОстатки
        ПО (ЗапасыОстатки.Номенклатура = СправочникПартииНоменклатуры.Владелец)
            И (ЗапасыОстатки.Партия = СправочникПартииНоменклатуры.Ссылка)
ГДЕ
    НЕ СправочникПартииНоменклатуры.Статус В (&ФОДляИсключения)
    И ((ЗапасыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ВводНачальныхОстатков
                ИЛИ ЗапасыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходнаяНакладная)
                И ВЫБОР
                    КОГДА &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                        ТОГДА ЗапасыНаСкладахОстаткиИОбороты.Организация = &Организация
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                И ВЫБОР
                    КОГДА &ТолькоПоложительныеОстатки = 1
                        ТОГДА ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) > 0
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
            ИЛИ ЗапасыНаСкладахОстаткиИОбороты.Период ЕСТЬ NULL
                И ВЫБОР
                    КОГДА &ТолькоПоложительныеОстатки = 1
                        ТОГДА ЛОЖЬ
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                И ВЫБОР
                    КОГДА &Организация <> ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                        ТОГДА ЛОЖЬ
                    ИНАЧЕ ИСТИНА
                КОНЕЦ)

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ПартииКонтрагентов.Номенклатура ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ,
    СправочникПартииНоменклатуры.Ссылка,
    СправочникПартииНоменклатуры.ПометкаУдаления,
    СправочникПартииНоменклатуры.Владелец,
    СправочникПартииНоменклатуры.Код,
    СправочникПартииНоменклатуры.Наименование,
    СправочникПартииНоменклатуры.Статус,
    ВЫБОР
        КОГДА СправочникПартииНоменклатуры.ВладелецПартии = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
            ТОГДА "<Без владельца>"
        ИНАЧЕ СправочникПартииНоменклатуры.ВладелецПартии
    КОНЕЦ,
    СправочникПартииНоменклатуры.Предопределенный,
    СправочникПартииНоменклатуры.ИмяПредопределенныхДанных,
    СправочникПартииНоменклатуры.Недействителен,
    ВЫБОР
        КОГДА СправочникПартииНоменклатуры.ПометкаУдаления ЕСТЬ NULL
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА СправочникПартииНоменклатуры.ПометкаУдаления
                    ТОГДА 5
                ИНАЧЕ 4
            КОНЕЦ
    КОНЕЦ,
    ВЫБОР
        КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
            ТОГДА 0
        КОГДА НаличиеФайлов.ЕстьФайлы
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ,
    ЗапасыНаСкладахОстаткиИОбороты.Характеристика
2 vicof
 
07.06.19
17:04
Не надо делать левых соединений в динамических списках, или по минимуму. Они не для этого предназначены.
3 AnisaL
 
07.06.19
17:04
(2) а как обойтись без них?
4 vicof
 
07.06.19
17:05
В общем, тебе нужно сделать такой запрос, чтобы не было двух строк с одной ссылкой
5 vicof
 
07.06.19
17:05
(3) Отчеты
6 AnisaL
 
07.06.19
17:09
(5) это не вариант
7 AnisaL
 
07.06.19
17:15
(5) так как можно запрос исправить?
8 vicof
 
07.06.19
17:16
(7) см (4)
9 lodger
 
07.06.19
17:18
(7) убрать
ВЫБОР
        КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
            ТОГДА 0
        КОГДА НаличиеФайлов.ЕстьФайлы
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ,
    ЗапасыНаСкладахОстаткиИОбороты.Характеристика

из группировки.
10 lodger
 
07.06.19
17:19
ЕстьФайлы можно в сумму завернуть.
Характеристика хз. может вообще из списка выбросить?
11 AnisaL
 
07.06.19
17:25
(10) характеристика нужна
12 lodger
 
07.06.19
17:27
(11) можно повесить сумму различных или максимум, на твой вкус.
13 AnisaL
 
07.06.19
17:36
(12) сумму различных чего? ЕстьФайлы ?
14 hhhh
 
07.06.19
17:41
(13) и то и другое. типа

МАКСИМУМ(ЗапасыНаСкладахОстаткиИОбороты.Характеристика) КАК Характеристика,

и то же самое про есть файлы.
15 AnisaL
 
07.06.19
17:43
(14) а им нужно видеть характеристику, нельзя делать МАКСИМУМ
16 vicof
 
07.06.19
17:45
(15) Тогда (5) или не динамический список
17 hhhh
 
07.06.19
17:46
(15) ну ты им объясни, что невозможно 2 характеристики впихнуть в одну строчку. Это даже теорема есть такая: нельзя посадить двух кроликов в одну клетку, чтобы в каждой клетке было не более одного кролика.
18 AnisaL
 
07.06.19
18:12
(17) нашла я у них ошибку в документах, после которой пошла эта ошибка пошла, они оприходовали товар в одну партию с разными характеристиками
19 AnisaL
 
07.06.19
18:13
(18) и поэтому получилось несколько строк с одинаковой ссылкой; я им объяснила что так делать нельзя
20 lodger
 
07.06.19
18:42
(19) льзя
21 rsv
 
07.06.19
20:06
(0) А с другой стороны... если уж  дали возможность движку  динамически выводить  результаты  ручного запроса - почему бы не выводить результат как  он есть ?
22 Красный рассвет
 
07.06.19
23:29
(21) Чтобы юзвери не пугались от задвоения/задвухсотъения полей в списке, например.
23 Сияющий в темноте
 
08.06.19
10:57
ключевое поле должно быть уникально,например,та же характеристика,если у товара она есть,а если нет,то номенклатура,на остальные поля списку положить.