Переключение на Главную Страницу Страницы: 1 2 3 [4] 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !? (число прочтений - 20092 )
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #45 - 03. Апреля 2013 :: 14:04
Печать  
Это правда что UNION соединяет только 2 селекта ? А если надо 3, то как?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #46 - 03. Апреля 2013 :: 14:21
Печать  
Не правда
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #47 - 03. Апреля 2013 :: 14:46
Печать  
GandolF писал(а) 03. Апреля 2013 :: 14:04:
Это правда что UNION соединяет только 2 селекта ? А если надо 3, то как?

есть большая разница между
union
union all
скорее всего тебе нужно второе
колво select соеденяющее union all  ограничено только вашей фантазией


вот простой примерчик
Код
Выбрать все
select 1
union all
select 2
union all
select 3
union all
select 4
union all
select 5
union all
select 6
union all
select 7
union all
select 8
union all
select 9
union all
select 10
union all
select 11
union all
select 12
 

  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #48 - 04. Апреля 2013 :: 06:09
Печать  
Z1 писал(а) 03. Апреля 2013 :: 14:46:
есть большая разница между
union
union all
скорее всего тебе нужно второе
колво select соеденяющее union all  ограничено только вашей фантазией

вот простой примерчик
Код
Выбрать все
select 1
union all
select 2
union all
select 3
union all
select 4
union all
select 5
union all
select 6
union all
select 7
union all
select 8
union all
select 9
union all
select 10
union all
select 11
union all
select 12
 


Спасибо за исчерпывающий ответ.  Улыбка В теории как-то не оговорено о количестве селектов, а примеры все как на зло с 2мя таблицами. Теперь точно буду знать что ошибка не из-за этого
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #49 - 17. Апреля 2013 :: 12:03
Печать  
Всем доброго дня!
Есть запрос, работает без проблем, но после того как в конце добавляю:
Код
Выбрать все
|	GROUP BY Разгрузки)";
	|ORDER BY
	|	$Док.Клиент,
	|	$Док.ПунктРазгрузки,
	|	$СпрПР.ТорговыйАгент,
	|	$СпрПР.Регион
	|"; 


Выдает ошибку:
Цитата:
Конструкции группирования CUBE() и ROLLUP() недопустимы в текущем режиме совместимости.  Они допускаются только в режиме 100 и выше.

Кто знает, чтобы это значило?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #50 - 17. Апреля 2013 :: 12:50
Печать  
разобрался, поменял на
Код
Выбрать все
|	GROUP BY
	зки WITH ROLLUP 


теперь ругаетца на Цитата:
Столбец "_1sJourn.DATE_TIME_IDDOC" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY

А мне нафиг не надо по нему группировать. Как быть?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #51 - 17. Апреля 2013 :: 13:12
Печать  
Дык он есть у тебя в селекте.
Не видя запроса, предположу так:
select
   max(_1sJourn.DATE_TIME_IDDOC)
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #52 - 17. Апреля 2013 :: 14:06
Печать  
Eprst писал(а) 17. Апреля 2013 :: 13:12:
Дык он есть у тебя в селекте.
Не видя запроса, предположу так:
select
  max(_1sJourn.DATE_TIME_IDDOC)

Ты как всегда прав  Класс
Шоб в GROUP BY не попала должна быть агрегатная функция, а как быть с этим:
Код
Выбрать все
|	$СпрТов.БазоваяЕдиница AS [ЕдиницаИз $Справочник.ЕдиницыИзмерений],
	|	$СпрТов.КоэфКальк AS [КоэфКальк $Число],";
	Если (Флаг=1) или (Флаг=3) или (флаг=5) Тогда
		Если Пар=2 Тогда
			ТекстЗапроса= ТекстЗапроса+"
			|	$ДокументСтроки_.КоличествоСВозврат AS [Количество $Число],";
		Иначе
			ТекстЗапроса= ТекстЗапроса+"
			|	$ДокументСтроки_.Количество AS [Количество $Число],";
		КонецЕсли;
	Иначе
		 ТекстЗапроса= ТекстЗапроса+"
		 | case when $СпрТов.БазоваяЕдиница=:ЕдинИзм then $ДокументСтроки_.Количество else round($ДокументСтроки_.Количество * $СпрТов.КоэфКальк, 2) end ";
	КонецЕсли;
 


ЕдиницаИз , КоэфКальк - играют второстепенную роль, и без них нельзя. Следующей ошибкой пойдет Количество, которое SUM() тоже ни к чему ???
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #53 - 17. Апреля 2013 :: 14:40
Печать  
Весть текст запроса покажи хоть
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #54 - 17. Апреля 2013 :: 14:44
Печать  
ещё лучше: Meta name parser error: поле таблицы не найдено "$Док.Клиент"   Ужас Печаль
Код
Выбрать все
|SELECT
|	Жур.Date_Time_IDDoc  AS [Период1, $Дата],
|	$Док.Клиент AS [Клиент $Справочник.Клиенты],
|	$Док.ПунктРазгрузки AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки],
|	$СпрТов.БазоваяЕдиница AS [ЕдиницаИз $Справочник.ЕдиницыИзмерений],
|	$СпрТов.КоэфКальк AS [КоэфКальк $Число]";
Если (Флаг=1) или (Флаг=3) или (флаг=5) Тогда
		Если Пар=2 Тогда
			ТекстЗапроса= ТекстЗапроса+"
			|	$ДокументСтроки_.КоличествоСВозврат AS [Количество $Число],";
		Иначе
			ТекстЗапроса= ТекстЗапроса+"
			|	$ДокументСтроки_.Количество AS [Количество $Число],";
		КонецЕсли;
	Иначе
		 ТекстЗапроса= ТекстЗапроса+"
		 | case when $СпрТов.БазоваяЕдиница=:ЕдинИзм then $ДокументСтроки_.Количество else round($ДокументСтроки_.Количество * $СпрТов.КоэфКальк, 2) end ";
	КонецЕсли;
ТекстЗапроса= ТекстЗапроса+"
|FROM
|	$Документ.РеализацияЗаМесяц AS Док (NOLOCK)
|LEFT OUTER JOIN $Справочник.Клиенты AS Справочник_Клиенты (NOLOCK)  ON ((Справочник_Клиенты.ID) = $Док.Клиент)
|	LEFT OUTER JOIN $Справочник.ПунктыРазгрузки AS СпрПР (NOLOCK)  ON ((СпрПР.ID) = $Док.ПунктРазгрузки)
|	INNER JOIN $ДокументСтроки.РеализацияЗаМесяц AS Док (NOLOCK)  ON (ДокументСтроки_.IDDoc = Док.IDDoc)
|   INNER JOIN $Справочник.Товары AS СпрТов (NOLOCK)  ON ((СпрТов.ID) = $ДокументСтроки_.Товар)
|	INNER JOIN _1sJourn AS Жур (NOLOCK)  ON (Жур.IDDoc = Док.IDDoc)
|				Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
|				Жур.Closed & 1 = 1
|WHERE
|	1=1";

 Если (ВыбАгент.Выбран()=1) Тогда
	ТекстЗапроса= ТекстЗапроса+"
	|	AND $СпрПР_3.ТорговыйАгент=:ВыбАгент
	|";
КонецЕсли;
Если (ВыбМенеджер.Выбран()=1) Тогда
	ТекстЗапроса= ТекстЗапроса+"
	|	AND $СпрМ_2.Менеджер=:ВыбМенеджер
	|";
КонецЕсли;
Если (ВыбНачОтд.Выбран()=1) Тогда
	ТекстЗапроса= ТекстЗапроса+"
	|	AND $СпрНач_1.НачОтд=:ВыбНачОтд
	|";
КонецЕсли;
Если ВыбКлиент.Выбран()=1 Тогда
	Если ВыбКлиент.ЭтоГруппа()=1 Тогда
		спФильтр = СоздатьОбъект("СписокЗначений");
		ТекстЗапроса= ТекстЗапроса+"
		|AND	$Док.Клиент in (select Val from #tmp_1)";
		спФильтр.ДобавитьЗначение(ВыбКлиент);
		Запрос.УложитьСписокОбъектов(ВыбКлиент,"#tmp_1","Клиенты");
	Иначе
		ТекстЗапроса= ТекстЗапроса+"
		|AND	$Док.Клиент=:ВыбКлиент";
	КонецЕсли;
КонецЕсли;

ТекстЗапроса= ТекстЗапроса+"
	|	GROUP BY
	|	.ПунктРазгрузки WITH ROLLUP
	|ORDER BY
	|	$СпрНач.НачОтд,
	|	$СпрМ.Менеджер,
	|	$СпрПР.ТорговыйАгент,
	|	$СпрР.Регион,
	|	$Док.Клиент,
	|	$Док.ПунктРазгрузки
	|";
 


Кто-нибудь видит в чем тут дело?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #55 - 17. Апреля 2013 :: 14:45
Печать  
видит.
Куча ненужных и бесполезных соединений
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #56 - 17. Апреля 2013 :: 14:47
Печать  
Назови хоть одно не нужное
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #57 - 17. Апреля 2013 :: 14:52
Печать  
ну вот эти не нужны
|LEFT OUTER JOIN $Справочник.Клиенты AS Справочник_Клиенты (NOLOCK)  ON ((Справочник_Клиенты.ID) = $Док.Клиент)
|      LEFT OUTER JOIN $Справочник.ПунктыРазгрузки AS СпрПР (NOLOCK)  ON ((СпрПР.ID) = $Док.ПунктРазгрузки)

по ним нет ни селекта ни условий

вот тут совпадающий алияс
INNER JOIN $ДокументСтроки.РеализацияЗаМесяц AS Док
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #58 - 17. Апреля 2013 :: 18:27
Печать  
Eprst писал(а) 17. Апреля 2013 :: 14:52:
вот тут совпадающий алияс
INNER JOIN $ДокументСтроки.РеализацияЗаМесяц AS Док

правильно, потому что в запросе есть реквизиты шапки и тч дока
$Документ.РеализацияЗаМесяц AS Док (NOLOCK)

INNER JOIN $ДокументСтроки.РеализацияЗаМесяц AS Док (NOLOCK)  ON (ДокументСтроки_.IDDoc = Док.IDDoc)
и остальные участвуют.
Но ошибка явно не джоинах
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #59 - 17. Апреля 2013 :: 18:48
Печать  
Ты не понял,смотри внимательнее:

FROM
|      $Документ.РеализацияЗаМесяц AS Док (NOLOCK)
|LEFT OUTER JOIN $Справочник.Клиенты AS Справочник_Клиенты (NOLOCK)  ON ((Справочник_Клиенты.ID) = $Док.Клиент)
|      LEFT OUTER JOIN $Справочник.ПунктыРазгрузки AS СпрПР (NOLOCK)  ON ((СпрПР.ID) = $Док.ПунктРазгрузки)
|      INNER JOIN $ДокументСтроки.РеализацияЗаМесяц AS Док (NOLOCK)  ON (ДокументСтроки

тут у тебя совпадающий алияс
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 
ОтправитьПечать