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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
27. Марта 2013 :: 13:48
Печать  
Привет всем!
Я всего месяц как знаком с запросами на скуле.Начальство потребовало оптимизировать несколько отчетов под 7.7 на sql. В общем Запрос на sql "сливается" в ТЗ, которая далее по тексту отрабатывается по полной программе дабы корректно сформировать отчет: разбивается на несколько ТЗ, фильтруется, группируется, индексируется. И вот этот весь процесс занимает 1,5ч., вместо 25мин. (в ДБФ)
Прошу у вас помощи, знатоки! Если структуру отчета не изменить, как средствами sql можно ускорить обработку таблиц значения ???
  

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



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

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #3 - 27. Марта 2013 :: 14:33
Печать  
ev-kov писал(а) 27. Марта 2013 :: 14:21:
замер производительности делал ?
нет. А смысл? Даже если тз гигантская, я не представляю как её ещё оптимизировать
  

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



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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #5 - 27. Марта 2013 :: 14:54
Печать  
leshik писал(а) 27. Марта 2013 :: 14:27:
Давай прикладывай свой отчет - посмотрю
leshik писал(а) 27. Марта 2013 :: 14:27:
Давай прикладывай свой отчет - посмотрю
не боишься голову сломать?  Подмигивание
« Последняя редакция: 19. Апреля 2013 :: 05:54 - GandolF »  

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


1C++ rocks!

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

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



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #7 - 27. Марта 2013 :: 14:57
Печать  
GandolF писал(а) 27. Марта 2013 :: 14:33:
ev-kov писал(а) 27. Марта 2013 :: 14:21:
замер производительности делал ?
нет. А смысл? Даже если тз гигантская, я не представляю как её ещё оптимизировать


Это первое что делают при оптимизации.

План выполнения запроса нужно смотреть.

И кстати что за конфа ?
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #8 - 27. Марта 2013 :: 16:14
Печать  
Уууу я тут почитал код отчета.....
Автор ты писал, признавайся?
Предлагаю по вечерам под бутылочку пива написать с 0 - заради интереса.
ICQ 201216890.
  
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #9 - 28. Марта 2013 :: 02:47
Печать  
leshik писал(а) 27. Марта 2013 :: 16:14:
Уууу я тут почитал код отчета.....
Автор ты писал, признавайся?
Предлагаю по вечерам под бутылочку пива написать с 0 - заради интереса.
ICQ 201216890.


Мне аж даже интересно стало...
И да, с ЭТИМ что-то нужно сделать.
Хотя бы развидеть Улыбка))


особенно понравилось вот это:
Код
Выбрать все
|	$Документ.РеализацияЗаМесяц AS Док (NOLOCK)
|LEFT OUTER JOIN $Справочник.Клиенты AS Справочник_Клиенты_1_5 (NOLOCK)  ON ((Справочник_Клиенты_1_5.ID) = $Док.Клиент)
|LEFT OUTER JOIN $Справочник.Клиенты AS Справочник_Клиенты_1_6 (NOLOCK)  ON ((Справочник_Клиенты_1_6.ID) = $Док.Клиент) 



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



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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #11 - 28. Марта 2013 :: 05:49
Печать  
leshik писал(а) 27. Марта 2013 :: 16:14:
Автор ты писал, признавайся?

Мои только запросы, может и не шибко "красивые" - я ж говорил, что новичок в этом деле, аФтор давно уволился.
А до запросов - ДА, ТИХИЙ УЖАС. Сроки поджимают, даже не знаю что быстрее: с нуля его переписывать, или работать с тем, что есть...
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #12 - 28. Марта 2013 :: 06:01
Печать  
Тебе же предложили ужо помощь за бутылочку пива - обращайся.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #13 - 28. Марта 2013 :: 06:13
Печать  
Eprst писал(а) 28. Марта 2013 :: 06:01:
Тебе же предложили ужо помощь за бутылочку пива - обращайся.

Не "за" а "под" Улыбка
Тут интересно просто переделать.
  
Наверх
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #14 - 28. Марта 2013 :: 07:31
Печать  
Как действует (и действует ли вобще!) команда CREATE VIEW в 1С ?
Хочу результат запроса выгрузить в несколько виртуальных таблиц, но не знаю синтаксиса
  

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


1C++ rocks!

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

Типо так:
Код
Выбрать все
ИмяПредставления = "рег"+МетаРег.Идентификатор+"Итоги";
ИмяТаблицыИтогов = РадугаСервис.ИмяТаблицыИтогов(МетаРег.Идентификатор);
ТекстЗапроса = "
|CREATE VIEW "+ИмяПредставления+" AS
|SELECT
|	"+стрКолонки+",
|	Period Period,
|	Period ПериодИтогов
|FROM "+ИмяТаблицыИтогов+" (NoLock)
|"; 



Ну и потом, соответственно, можно писать:
Код
Выбрать все
SELECT
	рег.Партия,
	рег.Остаток
FROM
	регПартииИтоги рег
WHERE
	рег.ПериодИтогов = @ПериодИтоговТА 



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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #16 - 28. Марта 2013 :: 13:48
Печать  
Ещё раз всем привет!
Как реализовать ф-цию Спр.ПринадлежитГруппе(грСпр) в запросе ???
  

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #17 - 28. Марта 2013 :: 17:58
Печать  
GandolF писал(а) 28. Марта 2013 :: 13:48:
Ещё раз всем привет!
Как реализовать ф-цию Спр.ПринадлежитГруппе(грСпр) в запросе ???


примерно так:
ТекстЗапроса = "...
WHERE
$Док.Товар in (select Val from #tmp_1)";

потом делаешь:

спФильтр = Создать("СписокЗначений");
спФильтр.Добавить(грСпр.ТекущийЭлемент());
РС.УложитьСписок(спФильтр,"#tmp_1","Номенклатура");

и получаешь результат:

РС.ВыполнитьИнструкцию(ТекстЗапроса);
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #18 - 28. Марта 2013 :: 18:23
Печать  
GandolF писал(а) 28. Марта 2013 :: 13:48:
Ещё раз всем привет!
Как реализовать ф-цию Спр.ПринадлежитГруппе(грСпр) в запросе ???

А еще можно через триггеры вести структуру вложенности справочника.
  
Наверх
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #19 - 29. Марта 2013 :: 05:55
Печать  
Salimbek писал(а) 28. Марта 2013 :: 17:58:
GandolF писал(а) 28. Марта 2013 :: 13:48:
Ещё раз всем привет!
Как реализовать ф-цию Спр.ПринадлежитГруппе(грСпр) в запросе ???


примерно так:
ТекстЗапроса = "...
WHERE
$Док.Товар in (select Val from #tmp_1)";

потом делаешь:

спФильтр = Создать("СписокЗначений");
спФильтр.Добавить(грСпр.ТекущийЭлемент());
РС.УложитьСписок(спФильтр,"#tmp_1","Номенклатура");

и получаешь результат:

РС.ВыполнитьИнструкцию(ТекстЗапроса);

Пишу:
Код
Выбрать все
	|AND	$Док.Клиент in (select Val from #tmp_1)";
		спФильтр = СоздатьОбъект("СписокЗначений");
		спФильтр.ДобавитьЗначение(ВыбКлиент);
		Запрос.УложитьСписокОбъектов(спФильтр,"#tmp_1","Клиент");
 


Выдает:
Запрос.УложитьСписокОбъектов(спФильтр,"#tmp_1","Клиент");
{..бла.бла...}: Недопустимое значение третьего аргумента метода!
Что не так?
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #20 - 29. Марта 2013 :: 06:43
Печать  
Ошибку устранил, но выборка всё равно идет не правильно:
Если выбрана группа 2-го уровня, то должны попасть все эл-ты подчиненные группам 3-го уровня, и т.д. А он хватает только 1ую подчиненную.
Помогите оптимизировать  ПОЖАЛУЙСТА !!!
  

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #21 - 29. Марта 2013 :: 08:37
Печать  
Все зависит от того КАК ты устранил ошибку. Подробнее читай тут: http://www.1cpp.ru/docum/icpp/html/ODBC.html#putobjectlist
Цитата:
Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.)
  
Наверх
ICQ  
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #22 - 29. Марта 2013 :: 09:38
Печать  
Salimbek писал(а) 29. Марта 2013 :: 08:37:
Все зависит от того КАК ты устранил ошибку. Подробнее читай тут: http://www.1cpp.ru/docum/icpp/html/ODBC.html#putobjectlist
Цитата:
Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.)

Исправил идентификатор справочника
Код
Выбрать все
|AND  $Док.Клиент in (select Val from #tmp_1)";
		   спФильтр.ДобавитьЗначение(ВыбКлиент);
		   Запрос.УложитьСписокОбъектов(спФильтр,"#tmp_1","Клиенты") 



Цитата:
Синтаксис: УложитьСписокОбъектов(Список, ИмяТаблицы, [ВидЭлементов])

Параметры:

Список - тип: СписокЗначений, Справочник, Счет. Объект, содержание которого будет отправляться на сервер. Если передан список значений, во врем. таблицу попадает содержимое списка. Допустимо также передавать группу справочника, элемент справочника, группу счетов, счет - в этом случае во временную таблицу поступает переданное значение, однако если указан ВидЭлементов (вид справочника, или план счетов), то будет попытка включить в таблицу все подчененные элементы.
ИмяТаблицы - тип: Строка. Имя временной таблицы.
ВидЭлементов - тип: Строка. Вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов. Если параметр не указан, иерархического включения не происходит.
Описание: сохраняет список внутренних идентификаторов объектов во временной таблице MS SQL. Идентификаторы объектов из списка сохраняются во временной таблице в поле val char(9). Имя таблицы должно начинаться с символа "#".

Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.)

Замечание: метод допустимо применять только для источника данных Microsoft SQL Server

Что будем выяснять кто больше учебников прочел ?!
По синтаксису же нет вопросов  Озадачен
  

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #23 - 29. Марта 2013 :: 18:14
Печать  
Ты не серчай, исправить могжно же было и вообще убрав третий параметр Подмигивание

Что касается твоей проблемы, то следующий шаг, очень простой, формируешь выборку, для проверки, что у тебя уложилось во временную таблицу:

ТекстЗапроса = "SELECT Val as Id, Val [Клиент $Справочник.Клиенты] from #tmp_1";
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса, ТЗ, 1);
ТЗ.ВыбратьСтроку();

Далее сравниваешь Id-шник, который во временной таблице, и в  твоем документе
  
Наверх
ICQ  
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

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

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #25 - 01. Апреля 2013 :: 08:32
Печать  
Доброго дня всем!
Прошу помощи ещё по одному вопросу:  Плачущий
"рулю" тему с вирт. таблицами,т.к.  иного выхода сократить время формирования отчета не вижу. Результат: отчет или виснит, или выдает пустую тз.
Короче есть заполненная ТЗ, далее на основании её формируются ещё несколько ТЗ1, ТЗ2,...и т.д.
Как на скуле переписать вот этот маразм:
Код
Выбрать все
ТЗ1.ВыбратьСтроки();
Пока ТЗ1.ПолучитьСтроку()=1 Цикл

	ТЗ2.ВыбратьСтроки();
	Пока ТЗ2.ПолучитьСтроку()=1 Цикл
		Пока (ТЗ2.НачОтд = ТЗ1.НачОтд) и (ТЗ2.НомерСтроки<>0) Цикл    
			ТЗ3.ВыбратьСтроки();
			Пока ТЗ3.ПолучитьСтроку()=1 Цикл
				Пока  ЗначениеВСтроку(ТЗ3.НачОтд)+"@"+ЗначениеВСтроку(ТЗ3.Менеджер) = ЗначениеВСтроку(ТЗ2.НачОтд)+"@"+ЗначениеВСтроку(ТЗ2.Менеджер)) и (ТЗ3.НомерСтроки<>0) Цикл  
	............и так дальше в том же стиле...
	Таб.ВывестиСекцию("Клиент|Колонки1");
	Таб.ВывестиСекцию("Клиент|Колонки2");
	  ..........ещё много разных условий.......
КонецЦикла;
 


Я пытаюсь саму ТЗ тоже сделать временной:
Код
Выбрать все
лЗапрос.Выполнить("
|CREATE TABLE #TempTab (Период $Дата,Клиент  $Справочник.Клиенты,ПунктРазгрузки $Справочник.ПунктыРазгрузки,Агент $Справочник.Агенты,Менеджер $Справочник.Менеджеры,НачОтд $Справочник.НачРегОСб,Товар $Справочник.Товары,Кол $Число.10.2)");
лЗапрос.Подготовить("Insert into #TempTab (Период, Клиент, ПунктРазгрузки, Агент, Менеджер,НачОтд,Товар,Кол) Values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
...
здесь заполняется ТЗ;
....
лЗапрос.ДобПараметр(1,8,0,0);
лЗапрос.ДобПараметр(1,14,100,0);
лЗапрос.ДобПараметр(1,14,100,0);
лЗапрос.ДобПараметр(1,14,50,0);
лЗапрос.ДобПараметр(1,14,50,0);
лЗапрос.ДобПараметр(1,14,50,0);
лЗапрос.ДобПараметр(1,14,50,0);
лЗапрос.ДобПараметр(1,11,10,2);
лРез = 0;
 Попытка
	лЗапрос.ВыполнитьSQL_ИзТЗ(ТЗ);
 	лРез = 1;
Исключение
КонецПопытки;

 Если лРез <> 1 Тогда
	Предупреждение("Ошибка при формировании отчета!" + РазделительСтрок + лЗапрос.ПолучитьОписаниеОшибки());
КонецЕсли;
ТЗ2 = лЗапрос.ВыполнитьИнструкцию("select * from TempTab",ТЗ,1);
ТЗ2.ВыбратьСтроку();
 


Виснит  Ужас
Вся надежда на ваш форум! HELP ME
« Последняя редакция: 01. Апреля 2013 :: 11:05 - GandolF »  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #26 - 01. Апреля 2013 :: 08:48
Печать  
Вот ещё один вопрос:
Как на скуле переписать ТЗ.Выгрузить(ТЗНач,,,"НачОтд") ??
  

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


1C++ rocks!

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

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #28 - 02. Апреля 2013 :: 08:54
Печать  
Круто конечно, в создаваемой табличке в скуле пытаться столбцы типизировать
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



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


1C++ rocks!

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

А кто отказывался ?! Можем начать прямо сейчас  Класс
п.с. В личку не заглядываешь ?
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #31 - 02. Апреля 2013 :: 09:13
Печать  
Eprst писал(а) 02. Апреля 2013 :: 08:54:
Круто конечно, в создаваемой табличке в скуле пытаться столбцы типизировать

Мы не ищем легких путей ))
Я мягкой точкой чуствую, что надо половину ТЗ-шек убрать, но чем их заменить не знаю
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #32 - 02. Апреля 2013 :: 09:16
Печать  
Неа не заглядываю Улыбка
Выхи сложновато - а вот по будням вечером это дааа...

GandolF писал(а) 02. Апреля 2013 :: 09:08:
leshik писал(а) 02. Апреля 2013 :: 08:56:
Я вот смотрю на автора и думаю - почему же отказался от предложения переписать отчет с 0?
Аудитория - есть варианты?

А кто отказывался ?! Можем начать прямо сейчас  Класс
п.с. В личку не заглядываешь ?

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #33 - 02. Апреля 2013 :: 09:57
Печать  
leshik писал(а) 02. Апреля 2013 :: 09:16:
вот по будням вечером это дааа...

У меня дома  инет отключили  Со сжатыми губами
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #34 - 02. Апреля 2013 :: 11:11
Печать  
Не ну, что за черный вторник  Нерешительный
Вчера работал, а сегодня:
Meta name parser error: не указан параметр ":НачДата"
при том что
Код
Выбрать все
Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНачала);
Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаКонца);
ТекстЗапроса = "
|SELECT
 .....
|FROM
|	$Документ.РеализацияЗаМесяц AS Док (NOLOCK)
 .....
|WHERE
|	Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
|	Жур.Closed & 1 = 1
|"; 


Кто-нибудь понимает, почему он параметр НачДата не видит ?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #35 - 02. Апреля 2013 :: 13:25
Печать  
либо объект Запрос не тот, либо выполняется другой запрос перед указанным
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #36 - 03. Апреля 2013 :: 06:07
Печать  
trad писал(а) 02. Апреля 2013 :: 13:25:
либо объект Запрос не тот, либо выполняется другой запрос перед указанным

текст модуля:
Код
Выбрать все
Запрос=СоздатьОбъект("ODBCRecordset");
Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНачала);
Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаКонца);
ТекстЗапроса = "
|SELECT
 .....
|FROM
|	$Документ.РеализацияЗаМесяц AS Док (NOLOCK)
 .....
|WHERE
|	Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
|	Жур.Closed & 1 = 1
|";  


Как он может быть НЕ ТОТ ?

п.с. который день на форуме и создается впечатление, что участники кроме переливания воды в корыто больше ничего и предложить-то не могут... В чем проблема: не понятен вопрос? не хватает навыков? или просто лень?
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #37 - 03. Апреля 2013 :: 07:04
Печать  
приведи текст модуля
от
Запрос=СоздатьОбъект("ODBCRecordset");
до
Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
  

1&&2&&3
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #38 - 03. Апреля 2013 :: 08:46
Печать  
Цитата:
Как он может быть НЕ ТОТ ?


Элементарно:
Код
Выбрать все
Запрос=СоздатьОбъект("ODBCRecordset");
Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНачала);
Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаКонца);
ТекстЗапроса = " ...";

ЗапросСКЛ.Выполнить(ТекстЗапроса); 

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #39 - 03. Апреля 2013 :: 09:41
Печать  
Satans Claws писал(а) 03. Апреля 2013 :: 08:46:
Цитата:
Как он может быть НЕ ТОТ ?


Элементарно:
Код
Выбрать все
Запрос=СоздатьОбъект("ODBCRecordset");
Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНачала);
Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаКонца);
ТекстЗапроса = " ...";

ЗапросСКЛ.Выполнить(ТекстЗапроса); 


А имела место быть такая ошибка !?
Вот код:
Код
Выбрать все
	Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаНачала_пред);
	Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаКонца_пред);
	Запрос.УстановитьТекстовыйПараметр("ВыбАгент", ВыбАгент);
	Запрос.УстановитьТекстовыйПараметр("ВыбМенеджер", ВыбМенеджер);
	Запрос.УстановитьТекстовыйПараметр("ВыбНачОтд", ВыбНачОтд);
	Запрос.УстановитьТекстовыйПараметр("ВыбКлиент", ВыбКлиент);
	ТекстЗапроса = "
	|SELECT
	|	$Док.Клиент AS [Клиент $Справочник.Клиенты],
	|	$Док.ПунктРазгрузки AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки],
	|	$ДокументСтроки_.Товар AS [Товар $Справочник.Товары],
	|	$СпрТов.БазоваяЕдиница AS [ЕдиницаИз $Справочник.ЕдиницыИзмерений],
	|	$ДокументСтроки_.КоличествоСВозврат AS [КоличествоСВозврат $Число],";
	|	$ДокументСтроки_.Количество AS [Количество $Число],";
	|	$СпрР.Регион AS [Регион $Справочник.Регион],
	|	$СпрПР.ТорговыйАгент AS [Агент $Справочник.Агенты],
	|	$СпрМ.Менеджер AS [Менеджер $Справочник.Менеджеры],
	|	$СпрНач.НачОтд AS [НачОтд $Справочник.НачРегОСб],
	|   :НачДата+'@'+$СпрНач.НачОтд as ИндексНП,
	|   :НачДата+'@'+$СпрНач.НачОтд+'@'+$СпрМ.Менеджер as ИндексНМП,
	|   :НачДата+'@'+$СпрНач.НачОтд+'@'+$СпрМ.Менеджер+'@'+$СпрПР.ТорговыйАгент as ИндексНМАП
	|FROM";
	|	$Документ.РеализацияЗаМесяц AS Док (NOLOCK)
	|	LEFT OUTER JOIN $Справочник.ПунктыРазгрузки AS СпрПР_2 (NOLOCK)  ON ((СпрПР_2.ID) = $Док.ПунктРазгрузки)
	|	соединения....
	|WHERE
	|	Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
	|	Жур.Closed & 1 = 1
	|";

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


	Запрос.Отладка(1);
	ТабЗнач = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	ТабЗнач.ВыбратьСтроку(); 


  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #40 - 03. Апреля 2013 :: 09:57
Печать  
GandolF писал(а) 03. Апреля 2013 :: 06:07:
trad писал(а) 02. Апреля 2013 :: 13:25:
либо объект Запрос не тот, либо выполняется другой запрос перед указанным

Как он может быть НЕ ТОТ ?

п.с. который день на форуме и создается впечатление, что участники кроме переливания воды в корыто больше ничего и предложить-то не могут... В чем проблема: не понятен вопрос? не хватает навыков? или просто лень?


GandolF писал(а) 03. Апреля 2013 :: 09:41:
                 Запрос.Выполнить("
                 |DROP TABLE tmp_1");


Похоже - не хватает навыков.  Язык
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

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

Признаю это и не боюсь задавать "глупые" вопросы
Спасибо.
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #42 - 03. Апреля 2013 :: 10:15
Печать  
Гуру, помогите уложить в CASE выражение:
Код
Выбрать все
Если ТабЗнач.Товар.БазоваяЕдиница=Един Тогда
	ТЗ.Кол=ТабЗнач.Количество;
Иначе
	ТЗ.Кол=окр(ТабЗнач.Количество*ТабЗнач.Товар.КоэфКальк,2);
КонецЕсли; 


пишу:  case when $СпрТов.БазоваяЕдиница=:ЕдинИзм then $ДокументСтроки_.Количество else Произведение(???) end
Заранее спасибо!
  

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



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #43 - 03. Апреля 2013 :: 10:59
Печать  
Код
Выбрать все
round($ДокументСтроки_.Количество * $n.КоэфКальк, 2) 



+
Код
Выбрать все
join $Справочник.Товары n (nolock) on n.id = $ДокументСтроки_.Товар 



если КоэфКальк не периодический
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #44 - 03. Апреля 2013 :: 11:43
Печать  
vinogradoff писал(а) 03. Апреля 2013 :: 10:59:
Код
Выбрать все
round($ДокументСтроки_.Количество * $n.КоэфКальк, 2) 



+
Код
Выбрать все
join $Справочник.Товары n (nolock) on n.id = $ДокументСтроки_.Товар 



если КоэфКальк не периодический

Благодарствую, всё получилось  Подмигивание
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #60 - 18. Апреля 2013 :: 05:55
Печать  
Eprst писал(а) 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 записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #61 - 18. Апреля 2013 :: 06:32
Печать  
Неправильный синтаксис около конструкции "Жур".
Подскажите, плиз, где опять нахимичил ?
Вот отладка:
Цитата:
SELECT
     CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) AS Период1,
     Док.sp8949 AS [Клиент $Справочник.Клиенты],
     Док.sp8950 AS [ПунктРазгрузки $Справочник.ПунктыРазгрузки],
     СпрТов.sp74 AS [ЕдиницаИз $Справочник.ЕдиницыИзмерений],
     СпрТов.sp4492 AS [КоэфКальк $Число],
     ДокументСтроки_.sp8955 AS [Количество $Число],
     СпрР.sp8291 AS [Регион $Справочник.Регион],
     СпрПР.sp8145 AS [Агент $Справочник.Агенты],
     СпрМ.sp8293 AS [Менеджер $Справочник.Менеджеры],
     СпрНач.sp8292 AS [НачОтд $Справочник.НачРегОСб]
FROM
     dh8959 AS Док (NOLOCK)
     LEFT OUTER JOIN sc2760 AS СпрПР_2 (NOLOCK)  ON ((СпрПР_2.ID) = Док.sp8950)
           LEFT OUTER JOIN sc8152 AS СпрМ_1 (NOLOCK)  ON ((СпрМ_1.ID) = СпрПР_2.sp8145)
                 LEFT OUTER JOIN sc4938 AS СпрНач (NOLOCK)  ON ((СпрНач.ID) = СпрМ_1.sp8293)
     LEFT OUTER JOIN sc2760 AS СпрПР_3 (NOLOCK)  ON ((СпрПР_3.ID) = Док.sp8950)
     LEFT OUTER JOIN sc2760 AS СпрПР_1 (NOLOCK)  ON ((СпрПР_1.ID) = Док.sp8950)
           LEFT OUTER JOIN sc8152 AS СпрМ_2 (NOLOCK)  ON ((СпрМ_2.ID) = СпрПР_1.sp8145)
     LEFT OUTER JOIN sc2760 AS СпрПР_4 (NOLOCK)  ON ((СпрПР_4.ID) = Док.sp8950)
           LEFT OUTER JOIN sc8152 AS СпрМ_3 (NOLOCK)  ON ((СпрМ_3.ID) = СпрПР_4.sp8145)
                 LEFT OUTER JOIN sc4938 AS СпрНач_1 (NOLOCK)  ON ((СпрНач_1.ID) = СпрМ_3.sp8293)
     LEFT OUTER JOIN sc2760 AS Справочник_ПунктыРазгрузки_1_6 (NOLOCK)  ON ((Справочник_ПунктыРазгрузки_1_6.ID) = Док.sp8950)
           LEFT OUTER JOIN sc8152 AS СпрМ (NOLOCK)  ON ((СпрМ.ID) = Справочник_ПунктыРазгрузки_1_6.sp8145)
     LEFT OUTER JOIN sc2760 AS СпрР (NOLOCK)  ON ((СпрР.ID) = Док.sp8950)
     LEFT OUTER JOIN sc2760 AS СпрПР (NOLOCK)  ON ((СпрПР.ID) = Док.sp8950)
     INNER JOIN _1sJourn AS Жур (NOLOCK)  ON (Жур.IDDoc = Док.IDDoc)
                       Жур.Date_Time_IDDoc BETWEEN '20120101' AND '20120131Z' AND
                       Жур.Closed & 1 = 1
     INNER JOIN dt8959 AS ДокументСтроки_ (NOLOCK)  ON (ДокументСтроки_.IDDoc = Жур.IDDoc)
  INNER JOIN sc33 AS СпрТов (NOLOCK)  ON ((СпрТов.ID) = ДокументСтроки_.sp8951)

WHERE
     1=1
AND      Док.sp8949 in (select Val from #tmp_1)
     GROUP BY
     СпрНач.sp8292,СпрМ.sp8293,СпрПР.sp8145,СпрР.sp8291,Док.sp8949,Док.sp8950 WITH ROLLUP
ORDER BY
     СпрНач.sp8292,
     СпрМ.sp8293,
     СпрПР.sp8145,
     СпрР.sp8291,
     Док.sp8949,
     Док.sp8950


ЗЫ: СпрПР_1 , СпрМ_1 и прочее - не лишние, всё это участвует в условиях
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #62 - 18. Апреля 2013 :: 06:49
Печать  
  INNER JOIN _1sJourn AS Жур (NOLOCK)  ON (Жур.IDDoc = Док.IDDoc)  AND
                      Жур.Date_Time_IDDoc BETWEEN '20120101' AND '20120131Z' AND
пропущен and
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #63 - 18. Апреля 2013 :: 06:54
Печать  
Eprst писал(а) 18. Апреля 2013 :: 06:49:
 INNER JOIN _1sJourn AS Жур (NOLOCK)  ON (Жур.IDDoc = Док.IDDoc)  AND
                      Жур.Date_Time_IDDoc BETWEEN '20120101' AND '20120131Z' AND
пропущен and

СПАСИБО  Очень довольный

п.с. у меня закончилось кофе и сигареты...
  

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


1C++ rocks!

Сообщений: 70
Зарегистрирован: 06. Марта 2013
Re: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #64 - 18. Апреля 2013 :: 07:04
Печать  
GandolF писал(а) 17. Апреля 2013 :: 14:06:
Шоб в 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: ТЗ = Запрос.ВыполнитьИнструкцию(тЗапроса): ЧТО ДАЛЬШЕ !?
Ответ #65 - 18. Апреля 2013 :: 08:56
Печать  
Нужен весь текст запроса
  
Наверх
 
IP записан
 
GandolF
Junior Member
**
Отсутствует


1C++ rocks!

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


"...и вот она красивая, на праздник к нам пришла..."  Очень довольный
  

Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать