Переключение на Главную Страницу Страницы: 1 ... 19 20 [21] 22 23 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245567 )
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #300 - 12. Апреля 2012 :: 06:27
Печать  
leshik писал(а) 12. Апреля 2012 :: 05:45:
Код
Выбрать все
	|	$Контрагенты.Родитель В (ВЫБРАТЬ val ИЗ #Контрагенты) 


Таким образом в выборку не попадут значения вложенных групп.
С таким успехом я мог бы просто использовать УложитьСписокЗначений().
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #301 - 17. Апреля 2012 :: 04:31
Печать  
Вобщем запутался я, требуется хелп  Печаль
Код
Выбрать все
// ПрямойЗапрос ВТ $ПодчиненныеДокументы
		ЗапросПодч = СоздатьОбъект("ПрямойЗапрос");
	    ЗапросПодч.БухгалтерскийУчет = 0;
	    ЗапросПодч.ОперативныйУчет = 0;
	    ЗапросПодч.ПериодическиеЗначения = 0;
		ЗапросПодч.РежимОтладки = 0;
		ЗапросПодч.Текст="
		|ВЫБРАТЬ
		|	ПодчДок.ТекущийДокумент КАК [ДокПодч $Документ]
		|	,ПодчДок.ВидДокумента КАК [ДокПодч_вид $ВидДокумента]
		|ИЗ
		|	$ПодчиненныеДокументы.Потомки(@ДокОсн) КАК ПодчДок
		|ГДЕ";
		Если глЭтоSQL=1	Тогда
			ЗапросПодч.Текст=ЗапросПодч.Текст+"
			|	ВидДокумента = @лВидДок";
			лЗначВидДок=глМетаДата.ИДДокумента("ПриходныйОрдер");
		Иначе
			ЗапросПодч.Текст=ЗапросПодч.Текст+"
			|	СОКРЛ(ВидДокумента) = @лВидДок";
			;
		КонецЕсли;

		ЗапросПодч.ОписаниеПараметра("ДокОсн","Неопределенный");
		ЗапросПодч.ОписаниеПараметра("лВидДок","ВидДокумента");
		ЗапросПодч.ПодготовитьПараметризованныйЗапрос();

		ВремяВып = _GetPerformanceCounter();
		тзДок.ВыбратьСтроки();
		Пока тзДок.ПолучитьСтроку()=1 Цикл
			ЗапросПодч.ПодставлятьПараметры("ДокОсн",тзДок.Док);
			ЗапросПодч.ПодставлятьПараметры("лВидДок",лЗначВидДок);
			тзВрем = ЗапросПодч.ВыполнитьПараметризованныйЗапрос();
			тзВрем.ВыбратьСтроки();
			Пока тзВрем.ПолучитьСтроку()=1 Цикл
				тзПодч.НоваяСтрока();
				тзПодч.Док=тзДок.Док;
				тзПодч.ДокПодч=тзВрем.ДокПодч;
				тзПодч.ВсегоПодч=тзПодч.ДокПодч.Сумма;
			КонецЦикла;
		КонецЦикла;
 



Для СКЛя условие ГДЕ не срабатывает - выдает пустую таблицу с подчиненными  Печаль
Пните в нужном направлении?? и как-нибудь так пните, чтобы в параметр Запроса можно было просто передать "ПриходныйОрдер" и все взлетело?
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #302 - 17. Апреля 2012 :: 04:52
Печать  
Вообще то для подставления вида документа есть предопределенные параметры. Попробуй напиши
Код
Выбрать все
ВидДокумента = :ВидДокумента.ПриходныйОрдер 


Соответственно описывать его нет необходимости
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #303 - 17. Апреля 2012 :: 05:00
Печать  
vandalsvq писал(а) 17. Апреля 2012 :: 04:52:
Вообще то для подставления вида документа есть предопределенные параметры. Попробуй напиши
Код
Выбрать все
ВидДокумента = :ВидДокумента.ПриходныйОрдер 


Соответственно описывать его нет необходимости


Да это я в курсе, трабла в том, что там не только "ПриходныйОрдер" может быть, но и другие виды...это я для примера текст запроса написал, на самом деле это процедура в Глобальнике, к которой из кучи мест обращаются, и у которой в параметрах ВидДок. Т.е. нужен именно параметр @лВидДок
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #304 - 17. Апреля 2012 :: 06:08
Печать  
Слушай, я проверил у себя, у меня все срабатывает.
Т.е. передаю виды документов которые хотелось бы в результате получить и все выдает.

Мой текст запроса приложен в файле. Смотри. Впрочем от твоего он отличается только тем что я не парюсь на счет sql или dbf.
Текст процедуры полностью покажи. Можно также в тхт

Надо будет сделать нормальный разбор параметров в параметризированном запросе, хотя бы в части ВидСправочника, ВидДокумента.
  

test_p_sql.txt ( 0 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #305 - 17. Апреля 2012 :: 06:27
Печать  
vandalsvq писал(а) 17. Апреля 2012 :: 06:08:
Впрочем от твоего он отличается только тем что я не парюсь на счет sql или dbf.


А ты свой проверял на DBF/SQL ?
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #306 - 17. Апреля 2012 :: 06:35
Печать  
Вот весь текст. Но это мало поможет...
Сравнил с твоим.. все тоже самое. И ранее у меня были варианты без проверки СКЛ/ДБФ... не взлетает Печаль
  

_____1_002.txt ( 4 KB | Загрузки )
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #307 - 17. Апреля 2012 :: 08:45
Печать  
Ну понятно что не взлетает, ведь там значения разные. У dbf - строка, у sql - число.
Слушай, сделай запрос к журналу документов на проверку нахождения в нем вида документов требуемых тебе.
Ну вроде

Код
Выбрать все
Т = "ВЫБРАТЬ $Ж.ТекущийДокумент
|ИЗ ЖурналДокументов КАК Ж $nolock
|ГДЕ $Ж.ВидДокумента = @ВидДокумента";
Запрос.ОписаниеПараметра("ВидДокумента", "ВидДокумента");
Запрос.ПодготовитьПараметризированныйЗапрос();
Запрос.ПодставлятьПараметры("ВидДокумента", глМетаДата.ИДДокумента("ПриходныйОрдер"));
ИТЗ = Запрос.ВыполнитьПараметризированныйЗапрос(); 

  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #308 - 17. Апреля 2012 :: 09:09
Печать  
Код
Выбрать все
	Запрос = СоздатьОбъект("ПрямойЗапрос");
	Запрос.Текст = "ВЫБРАТЬ $Ж.ТекущийДокумент
	|ИЗ ЖурналДокументов КАК Ж $nolock
	|ГДЕ $Ж.ВидДокумента = @ВидДокумента";
	Запрос.ОписаниеПараметра("ВидДокумента", "ВидДокумента");
	Запрос.ПодготовитьПараметризованныйЗапрос();
	Запрос.ПодставлятьПараметры("ВидДокумента", глМетаДата.ИДДокумента("ПриходныйОрдер"));
	ИТЗ = Запрос.ВыполнитьПараметризованныйЗапрос();
	лисхТЗ = ИТЗ;
	Парам = СоздатьОбъект("СписокЗначений");
	Парам.ДобавитьЗначение("лисхТЗ","ЗаголовокОбъекта_");
	Парам.ДобавитьЗначение(лисхТЗ,"Объект_");
	ОткрытьФорму("Отчет#", Парам, КаталогИБ()+"\Extforms\служб_ПросмотрСЗ_ТЗ_ИТЗ.ert");
 



На СКЛе - есть, на ДБФ - пусто.
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #309 - 17. Апреля 2012 :: 09:14
Печать  
Скажу больше)) добавил вилку:
Код
Выбрать все
        Если глЭтоSQL=1	Тогда
		Запрос.Текст=Запрос.Текст+"
		|ГДЕ $Ж.ВидДокумента = @ВидДокумента";
		лЗначВидДок=глМетаДата.ИДДокумента("ПриходныйОрдер");
	Иначе
		Запрос.Текст=Запрос.Текст+"
		|ГДЕ СОКРЛ($Ж.ВидДокумента) = @ВидДокумента";
		;
	КонецЕсли;
 



Теперь работает для обоих форматов. Так что собака все-таки зарыта где-то в парсере параметризованного запроса для ВТ $ПодчиненныеДокументы... Видимо, ждем багофикс? ))
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #310 - 17. Апреля 2012 :: 09:27
Печать  
Не совсем, я пока всего лишь удостоверился что работает все верно Улыбка)))). Т.е. проблема видимо глубже будем копать.

Теперь возьми ВТ и соедини ее с журналом документов по полю документа и отбор поставь по виду документа на соотв. поле журнала + выведи нетипизированные колонки вида документа из ВТ и журнала чтобы посмотреть не отличаются ли они.
Кстати ты уверен что надо СОКРЛ в dbf? я что то не очень Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #311 - 17. Апреля 2012 :: 09:38
Печать  
vandalsvq писал(а) 17. Апреля 2012 :: 09:27:
Кстати ты уверен что надо СОКРЛ в dbf? я что то не очень Улыбка


В отладчике посмотрел:
глМетаДата.ЧислоВСтроку(глМетаДата.ИДДокумента("ПриходныйОрдер"),36) выдает "7O", т.е. 2 знака, а надо 4: "  7O"

по первой части - щас попробую изобразить...
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #312 - 17. Апреля 2012 :: 09:59
Печать  
Бл...ь! Я идиот Ужас Смущённый
СКЛь-ная база, на которой тестил, была с прибитой таблицей _1SCRDOC  Смущённый Смущённый

Из вопросов осталось только про СОКРЛ()  Смущённый КАЮСЬ!
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #313 - 17. Апреля 2012 :: 10:34
Печать  
Используй
Код
Выбрать все
Прав(_IdToStr(ИДОбъекта),4) 


у меня везде так подставляется и никакие СОКР-ы не используются
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #314 - 17. Апреля 2012 :: 23:10
Печать  
А как все таки быть с http://www.1cpp.ru/forum/YaBB.pl?num=1285352210/298#298
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 19 20 [21] 22 23 ... 51
ОтправитьПечать