Запрос к регистрам сведений

1. Fold 21.02.17 18:53 Сейчас в теме
Подскажите, почему каждое физлицо по 3 раза выходит в запросе? Поставить галку "без повторяющихся" не даёт, т.к. есть поле неограниченной длины в одном из ресурсов регистра. Конфигурация "Зарплата и кадры бюджетного учреждения 1.0"

ВЫБРАТЬ
	ФИОФизЛицСрезПоследних.Фамилия,
	ФИОФизЛицСрезПоследних.Имя,
	ФИОФизЛицСрезПоследних.Отчество,
	КонтактнаяИнформация.Поле1 КАК Индекс,
	КонтактнаяИнформация.Поле2 КАК Регион,
	КонтактнаяИнформация.Поле3 КАК Район,
	КонтактнаяИнформация.Поле4 КАК Город,
	КонтактнаяИнформация.Поле5 КАК НасПункт,
	КонтактнаяИнформация.Поле6 КАК Улица,
	КонтактнаяИнформация.Поле7 КАК НомерДОма,
	КонтактнаяИнформация.Поле8 КАК Корпус,
	КонтактнаяИнформация.Поле9 КАК Квартира,
	СотрудникиОрганизаций.Физлицо.Пол,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан,
	ГражданствоФизЛицСрезПоследних.Страна
ИЗ
	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛицСрезПоследних.ФизЛицо
ГДЕ
	СотрудникиОрганизаций.ЭтоГруппа = ЛОЖЬ
	И СотрудникиОрганизаций.Актуальность = ИСТИНА
	И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

УПОРЯДОЧИТЬ ПО
	СотрудникиОрганизаций.Наименование
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SP17081992 5 21.02.17 19:10 Сейчас в теме
(1) Каждое физлицо по 3 раза выходит в запросе из за 'левое соединение', т. е. в соединенных регистрах(или в одном регистре) физлицо записан 3 раза (если в измерении регистра ни только физлицо).
Решение:
1)Надо взять не только СрезПоследних, а отбор и по всем другим измерениям.
ИЛИ
2) Использовать "без повторяющихся", а поле "неограниченной длины" взять с использованием функции ПОДСТРАКА
5. Fold 21.02.17 21:39 Сейчас в теме
(2) Сделал вторым способом, обрезал неограниченную строку до 200 символов, но теперь сотрудники у которых введено несколько адресов и телефон все равно двоятся - троятся, как сделать отбор в в регистре "контактная информация" чтобы он только адреса выдавал и выходила одна строка?
3. elisabet 100 21.02.17 21:23 Сейчас в теме
Главная ошибка - "Левое соединение". Соединение должно быть ВНУТРЕННЕЕ. Т.е. ты выбираешь справочник сотрудники и вне зависомости есть ли данные в контактной информации или в паспорте сотрудника выводишь. Тогда он не будет повторяться трижды.
4. Fold 21.02.17 21:33 Сейчас в теме
(3) С соединением все в порядке, мне нужны все записи, которые есть в справочнике сотрудников.
6. Fold 21.02.17 21:43 Сейчас в теме
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ФИОФизЛицСрезПоследних.Фамилия,
	ФИОФизЛицСрезПоследних.Имя,
	ФИОФизЛицСрезПоследних.Отчество,
	КонтактнаяИнформация.Поле1 КАК Индекс,
	КонтактнаяИнформация.Поле2 КАК Регион,
	КонтактнаяИнформация.Поле3 КАК Район,
	КонтактнаяИнформация.Поле4 КАК Город,
	КонтактнаяИнформация.Поле5 КАК НасПункт,
	КонтактнаяИнформация.Поле6 КАК Улица,
	КонтактнаяИнформация.Поле7 КАК НомерДОма,
	КонтактнаяИнформация.Поле8 КАК Корпус,
	КонтактнаяИнформация.Поле9 КАК Квартира,
	СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
	ПОДСТРОКА(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан, 0, 200) КАК ДокументКемВыдан,
	ГражданствоФизЛицСрезПоследних.Страна,
	СотрудникиОрганизаций.Наименование,
	СотрудникиОрганизаций.Физлицо.ДатаРождения,
	СотрудникиОрганизаций.Физлицо.МестоРождения
ИЗ
	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛицСрезПоследних.ФизЛицо
ГДЕ
	СотрудникиОрганизаций.ЭтоГруппа = ЛОЖЬ
	И СотрудникиОрганизаций.Актуальность = ИСТИНА
	И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

УПОРЯДОЧИТЬ ПО
	СотрудникиОрганизаций.Наименование
Показать
7. Fold 21.02.17 22:42 Сейчас в теме
Вроде так сработало как нужно:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	ФИОФизЛицСрезПоследних.Фамилия,
	ФИОФизЛицСрезПоследних.Имя,
	ФИОФизЛицСрезПоследних.Отчество,
	КонтактнаяИнформация.Поле1 КАК Индекс,
	КонтактнаяИнформация.Поле2 КАК Регион,
	КонтактнаяИнформация.Поле3 КАК Район,
	КонтактнаяИнформация.Поле4 КАК Город,
	КонтактнаяИнформация.Поле5 КАК НасПункт,
	КонтактнаяИнформация.Поле6 КАК Улица,
	КонтактнаяИнформация.Поле7 КАК НомерДОма,
	КонтактнаяИнформация.Поле8 КАК Корпус,
	КонтактнаяИнформация.Поле9 КАК Квартира,
	СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
	ПОДСТРОКА(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан, 0, 200) КАК ДокументКемВыдан,
	ГражданствоФизЛицСрезПоследних.Страна,
	СотрудникиОрганизаций.Наименование,
	СотрудникиОрганизаций.Физлицо.ДатаРождения,
	СотрудникиОрганизаций.Физлицо.МестоРождения
ИЗ
	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних
		ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛицСрезПоследних.ФизЛицо
ГДЕ
	СотрудникиОрганизаций.ЭтоГруппа = ЛОЖЬ
	И СотрудникиОрганизаций.Актуальность = ИСТИНА
	И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица)

УПОРЯДОЧИТЬ ПО
	СотрудникиОрганизаций.Наименование
Показать
8. SP17081992 5 22.02.17 09:24 Сейчас в теме
(7) Это и есть решение 1, ведь ты сделал отбор по другим измерением ("КонтактнаяИнформация.Вид"), но лучше было это сделать не в "Где", а в связи, вот так:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ФИОФизЛицСрезПоследних.Фамилия,
    ФИОФизЛицСрезПоследних.Имя,
    ФИОФизЛицСрезПоследних.Отчество,
    КонтактнаяИнформация.Поле1 КАК Индекс,
    КонтактнаяИнформация.Поле2 КАК Регион,
    КонтактнаяИнформация.Поле3 КАК Район,
    КонтактнаяИнформация.Поле4 КАК Город,
    КонтактнаяИнформация.Поле5 КАК НасПункт,
    КонтактнаяИнформация.Поле6 КАК Улица,
    КонтактнаяИнформация.Поле7 КАК НомерДОма,
    КонтактнаяИнформация.Поле8 КАК Корпус,
    КонтактнаяИнформация.Поле9 КАК Квартира,
    СотрудникиОрганизаций.Физлицо.Пол КАК Пол,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
    ПОДСТРОКА(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан, 0, 200) КАК ДокументКемВыдан,
    ГражданствоФизЛицСрезПоследних.Страна,
    СотрудникиОрганизаций.Наименование,
    СотрудникиОрганизаций.Физлицо.ДатаРождения,
    СотрудникиОрганизаций.Физлицо.МестоРождения
ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
        ПО СотрудникиОрганизаций.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО СотрудникиОрганизаций.Физлицо = КонтактнаяИнформация.Объект
        И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК 
ПаспортныеДанныеФизЛицСрезПоследних
        ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних
        ПО СотрудникиОрганизаций.Физлицо = ГражданствоФизЛицСрезПоследних.ФизЛицо
ГДЕ
    СотрудникиОрганизаций.ЭтоГруппа = ЛОЖЬ
    И СотрудникиОрганизаций.Актуальность = ИСТИНА
    И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

УПОРЯДОЧИТЬ ПО
    СотрудникиОрганизаций.Наименование
Показать

Так будет работать бистрее :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот