for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Вопросы по 1С
   :: Помощь сайту :: 

Запрос в 8.3
Аспид
Автор

Сообщений: 3036
Откуда: Москва
Дата: 13.10.16 12:14:41ОтветитьЦитировать
Хочу получить дубли запросом.
  
  	ЮЛ	=	Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;  
  	Запрос = Новый Запрос;  
  	  
  	Запрос.Текст =   
  		"ВЫБРАТЬ  
  		|	Контрагенты.Ссылка,  
  		|	Контрагенты.Код,  
  		|	Контрагенты.ИНН,  
  		|	Контрагенты1.Код КАК Код1,  
  		|	Контрагенты1.ИНН КАК ИНН1  
  		|ИЗ  
  		|	Справочник.Контрагенты КАК Контрагенты  
  		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1  
  		|		ПО Контрагенты.ИНН = Контрагенты1.ИНН  
  		|			И Контрагенты.Код <> Контрагенты1.Код  
  		|ГДЕ  
  		|	Контрагенты.ЮридическоеФизическоеЛицо = &ЮЛ";  
  	  
  	Запрос.УстановитьПараметр("ЮЛ", ЮЛ);

Работает совсем не так как ожидалось(
Похоже плюет на Контрагенты.ИНН = Контрагенты1.ИНН
Что не так?


------------------
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
pasha_usue

Сообщений: 2880
Откуда: Е-бург
Дата: 13.10.16 12:30:57ОтветитьЦитировать
Классический запрос дублей выглядит так:
  
  ВЫБРАТЬ  
  	Подзапрос.ИНН КАК ИНН,  
  	Подзапрос.Колво,  
  	Контрагенты.Ссылка КАК Ссылка  
  ИЗ  
  	(ВЫБРАТЬ  
  		Контрагенты.ИНН КАК ИНН,  
  		КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Колво  
  	ИЗ  
  		Справочник.Контрагенты КАК Контрагенты  
  	ГДЕ Контрагенты.ИНН <> ""  
  	СГРУППИРОВАТЬ ПО  
  		Контрагенты.ИНН  
  	  
  	ИМЕЮЩИЕ  
  		КОЛИЧЕСТВО(Контрагенты.Ссылка) > 1) КАК Подзапрос  
  		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты  
  		ПО Подзапрос.ИНН = Контрагенты.ИНН  
    
  УПОРЯДОЧИТЬ ПО  
  	ИНН,  
  	Ссылка  
  АВТОУПОРЯДОЧИВАНИЕ
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
pasha_usue

Сообщений: 2880
Откуда: Е-бург
Дата: 13.10.16 12:34:08ОтветитьЦитировать
Но ваш запрос тоже работает на моей базе. Только я условие добавил ГДЕ Контрагенты.ИНН <> "".
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
Аспид
Автор

Сообщений: 3036
Откуда: Москва
Дата: 13.10.16 12:56:24ОтветитьЦитировать
pasha_usue
Но ваш запрос тоже работает на моей базе. Только я условие добавил ГДЕ Контрагенты.ИНН <> "".
Ну именно так, у меня в ИНН1 и Код1 пустота. Тока... что то в смысл не въеду.
И поправил запрос, кол-во дублей уменьшилось, но все равно, полно показывает.
Полагаю в ИНН не обязательно пустота, поставил 10 пробелов, то же самое
А вот так не работает(((
  
  И СокрЛП(Контрагенты.ИНН) <> &пусто

Нельзя функции с полями?

Попробую вашу, с группировкой)


------------------
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
pasha_usue

Сообщений: 2880
Откуда: Е-бург
Дата: 13.10.16 13:06:33ОтветитьЦитировать
Пустота. Потому что левое соединение, а дубля не нашлось. Там NULL, по-сути.
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
Аспид
Автор

Сообщений: 3036
Откуда: Москва
Дата: 13.10.16 13:08:36ОтветитьЦитировать
Ну конечно же INNER JOIN нужен)))
Ваша отработала на 5!
Спасибо!


------------------
Ratings: 0 negative/0 positive

Re: Запрос в 8.3
pasha_usue

Сообщений: 2880
Откуда: Е-бург
Дата: 13.10.16 13:32:33ОтветитьЦитировать
Аспид
  
  И СокрЛП(Контрагенты.ИНН) <> &пусто
В языке запросов 1С очень кудряво с функциями. Их там штук пять и ни одна не похожа на те, которые используются в основном языке. Причем, в СКД используются функции языка запросов, но там этих функций чуть больше.

А вот проверка "Контрагенты.Ссылка Есть NULL" возможна, как и в обычном языке запросов.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 40 and Guests: 40


© 2000-2018 Fox Club 
Яндекс.Метрика