Помогите с запросом

1. dken75dk 20.11.17 12:49 Сейчас в теме
Добрый день. Помогите с запросом а то что-то затупил.
Ситуация простая. Нужно вытащить в таблицу данные из журнала "Компенсация родительской платы" а так же адреса плательщиков и паспортные данные. Вроде все в порядке но как только добавляю в запрос на вытаскивание из РС "Контактная информация" происходит задвоение некоторых строк. Если несложно подскажите где затык
Запрос привожу
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.НачалоПериода,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.КонецПериода,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование КАК Наименование,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.СчетПлательщика.Код КАК Код,
		|	СУММА(ЖурналУчетаКомпенсацииРодительскойПлаты.СуммаКомпенсации) КАК СуммаКомпенсации,
		|	ХарактеристикиКонтрагентов.ЗначениеХарактеристики КАК ДатаРождения,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Фамилия КАК Фамилия,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Имя КАК Имя,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Отчество КАК Отчество,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.СтраховойНомерПФР КАК СНИЛС,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.СчетПлательщика.КассовыйОрган КАК Банк,
		|	ПаспортныеДанныеФизЛиц.ДокументВид КАК ВидДокумента,
		|	ПаспортныеДанныеФизЛиц.ДокументСерия КАК ДокументСерия,
		|	ПаспортныеДанныеФизЛиц.ДокументНомер КАК ДокументНомер,
		|	ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи КАК ДокументДатаВыдачи,
		|	ВЫРАЗИТЬ(ПаспортныеДанныеФизЛиц.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
		|	КонтактнаяИнформация.Поле4 КАК Город,
		|	КонтактнаяИнформация.Поле5 КАК Поселок,
		|	КонтактнаяИнформация.Поле6 КАК Улица,
		|	КонтактнаяИнформация.Поле7 КАК Дом,
		|	КонтактнаяИнформация.Поле8 КАК Корпус,
		|	КонтактнаяИнформация.Поле9 КАК Квартира
		|ИЗ
		|	РегистрСведений.ЖурналУчетаКомпенсацииРодительскойПлаты КАК ЖурналУчетаКомпенсацииРодительскойПлаты
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
		|		ПО ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование = ХарактеристикиКонтрагентов.Контрагент.Наименование
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
		|		ПО ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование = ПаспортныеДанныеФизЛиц.ФизЛицо.Наименование
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
		|		ПО ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование = КонтактнаяИнформация.Объект.Наименование
		|ГДЕ
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.НачалоПериода = &Дата1
		|	И ЖурналУчетаКомпенсацииРодительскойПлаты.КонецПериода = &Дата2
		|
		|СГРУППИРОВАТЬ ПО
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.НачалоПериода,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.КонецПериода,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.СчетПлательщика,
		|	ХарактеристикиКонтрагентов.ЗначениеХарактеристики,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.СчетПлательщика.Код,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Фамилия,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Имя,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Отчество,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.СтраховойНомерПФР,
		|	ЖурналУчетаКомпенсацииРодительскойПлаты.СчетПлательщика.КассовыйОрган,
		|	ПаспортныеДанныеФизЛиц.ДокументВид,
		|	ПаспортныеДанныеФизЛиц.ДокументСерия,
		|	ПаспортныеДанныеФизЛиц.ДокументНомер,
		|	ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
		|	ВЫРАЗИТЬ(ПаспортныеДанныеФизЛиц.ДокументКемВыдан КАК СТРОКА(300)),
		|	КонтактнаяИнформация.Поле4,
		|	КонтактнаяИнформация.Поле5,
		|	КонтактнаяИнформация.Поле6,
		|	КонтактнаяИнформация.Поле7,
		|	КонтактнаяИнформация.Поле8,
		|	КонтактнаяИнформация.Поле9
		|
		|УПОРЯДОЧИТЬ ПО
		|	Наименование";
		Запрос.УстановитьПараметр("Дата1",НачПериода);
		Запрос.УстановитьПараметр("Дата2",КонПериода);
	РезультатЗапроса = Запрос.Выполнить();
Показать
По теме из базы знаний
Найденные решения
2. D_e_X_T_e_R 573 20.11.17 12:50 Сейчас в теме
Может быть лучше использовать ЛевоеСоединение, а не внутреннее?
3. AlexFort1961 1 20.11.17 12:55 Сейчас в теме
(1) а регистр сведений "Контактная информация" не многозначный у Вас? Там ведь должно еще быть поле "Вид контактной информации" (адрес прописки, адрес проживания и т.д.). Тогда добавить в запрос условие(ия) отбора по этому регистру.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AlexFort1961 1 20.11.17 12:55 Сейчас в теме
(1) а регистр сведений "Контактная информация" не многозначный у Вас? Там ведь должно еще быть поле "Вид контактной информации" (адрес прописки, адрес проживания и т.д.). Тогда добавить в запрос условие(ия) отбора по этому регистру.
7. PopAndr 21.11.17 07:34 Сейчас в теме
Есть простое правило избежать задвоения строк - в создании связи двух таблиц должны использоваться ВСЕ измерения одной из таблиц внутреннего соединения (в данном случае это все таблицы справа) или правой таблицы при левом соединении.
В приведенном запросе нужно левое соединение, но это уже другой вопрос
2. D_e_X_T_e_R 573 20.11.17 12:50 Сейчас в теме
Может быть лучше использовать ЛевоеСоединение, а не внутреннее?
4. VmvLer 20.11.17 13:06 Сейчас в теме
 |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |        ПО ЖурналУчетаКомпенсацииРодительскойПлаты.Плательщик.Наименование = КонтактнаяИнформация.Объект.Наименование


при таком соединении дубли очень вероятны.

вернее сказать, за такое соединение наказывают
5. Aitbay 20.11.17 13:08 Сейчас в теме
очень сильно наказывают )))
по хорошему нужно создать виртуальные таблицы и потом к ним соединяться причем если вдруг в контактной информации есть 2 записи по одному плательщику допустим в разные периоды то лучше делать срез последних
6. dken75dk 20.11.17 13:28 Сейчас в теме
Спасибо Всем разобрался. Говорю затупил
Оставьте свое сообщение

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