Имя: Пароль:
1C
1С v8
БП 3. Дублирование ссылок
0 Puzoter
 
17.08.15
11:02
При отключении отбора в форме списка спр. сотрудники появляется сообщение "Обнаружено дублирование ключевых значений в колонке "ссылка" отображение данных невозможно. По всей видимости проблема возникла из-за некорректного обмена данными. Вопрос в том, как эти ссылки найти. Запрос вида

ВЫБРАТЬ
    КОЛИЧЕСТВО(СотрудникиОрганизаций.Ссылка) КАК Ссылка,
    СотрудникиОрганизаций1.Ссылка КАК Ссылка1
ИЗ
    Справочник.Сотрудники КАК СотрудникиОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СотрудникиОрганизаций1
        ПО СотрудникиОрганизаций.Ссылка = СотрудникиОрганизаций1.Ссылка

СГРУППИРОВАТЬ ПО
    СотрудникиОрганизаций1.Ссылка

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(СотрудникиОрганизаций.Ссылка) > 1

Ничего не возвращает.
1 Puzoter
 
03.09.15
11:53
Подниму тему...
Сделал тестирование и исправление, удалил все битые ссылки, результат тот же.
При открытии формы подбора или отключении отбора по организации в форме списка появляется сообщение "Обнаружено дублирование ключевых значений в колонке "Ссылка" Отображение данных в списке невозможно"

Как решить проблему?
2 Nuobu
 
03.09.15
12:20
(1) УФ?
3 bolobol
 
03.09.15
12:44
кеш что говорит?
4 Puzoter
 
03.09.15
13:17
(2) Да
(3) Кеш не чистил, но пробовал в разных копиях на разных компах
5 Nuobu
 
03.09.15
13:19
(4) В списке запрос?
6 Puzoter
 
03.09.15
13:27
(5) Список динамический, значит запрос
7 Nuobu
 
03.09.15
13:28
(6) Покажи запрос.
8 Puzoter
 
03.09.15
13:28
ВЫБРАТЬ
    СправочникСотрудники.Ссылка,
    СправочникСотрудники.ВерсияДанных,
    СправочникСотрудники.ПометкаУдаления,
    СправочникСотрудники.Предопределенный,
    СправочникСотрудники.Код,
    СправочникСотрудники.Наименование,
    СправочникСотрудники.ФизическоеЛицо,
    СправочникСотрудники.ГоловнаяОрганизация,
    СправочникСотрудники.ТекущийПроцентСевернойНадбавки,
    СправочникСотрудники.ВАрхиве,
    СправочникСотрудники.УточнениеНаименования,
    СправочникСотрудники.ГоловнойСотрудник,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущийВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)) КАК ВидЗанятости,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ОсновноеРабочееМестоВОрганизации, ЛОЖЬ) КАК ОсновноеРабочееМестоВОрганизации,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) КАК ТекущаяОрганизация,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)) КАК ТекущееПодразделение,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность, ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка)) КАК ТекущаяДолжность,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаПриема, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриема,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаУвольнения,
    ЕСТЬNULL(ТекущаяТарифнаяСтавкаСотрудников.ТекущаяТарифнаяСтавка, 0) КАК ТекущаяТарифнаяСтавка,
    ЕСТЬNULL(ТекущаяТарифнаяСтавкаСотрудников.ТекущийСпособРасчетаАванса, ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаАванса.ПустаяСсылка)) КАК ТекущийСпособРасчетаАванса,
    ЕСТЬNULL(ТекущаяТарифнаяСтавкаСотрудников.ТекущийАванс, 0) КАК ТекущийАванс,
    ВЫБОР
        КОГДА ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаПриема, ДАТАВРЕМЯ(1, 1, 1)) = ДАТАВРЕМЯ(1, 1, 1)
                ИЛИ ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ОформленПоТрудовомуДоговору,
    ВЫБОР
        КОГДА СправочникСотрудники.Ссылка В (&СписокПодобранных)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Подобран
ИЗ
    Справочник.Сотрудники КАК СправочникСотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
        ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = СправочникСотрудники.Ссылка)
            И (ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникСотрудники.ФизическоеЛицо)
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущаяТарифнаяСтавкаСотрудников КАК ТекущаяТарифнаяСтавкаСотрудников
        ПО (ТекущаяТарифнаяСтавкаСотрудников.Сотрудник = СправочникСотрудники.Ссылка)
            И (ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникСотрудники.ФизическоеЛицо)}
9 Nuobu
 
03.09.15
13:29
(8)         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
        ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = СправочникСотрудники.Ссылка)
            И (ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо = СправочникСотрудники.ФизическоеЛицо)


Вот тут дубли могут быть?
10 Puzoter
 
03.09.15
13:32
(9) Вполне. Сейчас буду проверять. Спасибо за наводку.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший