Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обнаружено дублирование ключевых значений

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.