Переключение на Главную Страницу Страницы: 1 ... 14 15 [16] 17 18 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245478 )
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #225 - 27. Декабря 2011 :: 05:38
Печать  
Судя по описанию должно быть ЗапросПодч.ОписаниеПараметра("ДокОсн","Документ." + ДокРасходная.Вид());
  
Наверх
wwwICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #226 - 27. Декабря 2011 :: 05:44
Печать  
vandalsvq писал(а) 26. Декабря 2011 :: 18:20:
Dolly_EV, давай "РежимОтладки" = 1, посмотрим что там творится.

Дык и стоит РежимОтладки=1

Вот все, что вываливается:

Время подготовки запроса: 8 мс.
ПрямойЗапрос::ПодготовитьПараметризованныйЗапрос() : near "AND": syntax error
ЗапросSQLite.Подготовить(ПараметризированныйТекст);
{D:\BASES\ELIS\TOTALCNT\CLASSES\ПрямыеЗапросы\ПрямойЗапрос.ert(12996) }

ЗапросПодч.ПодготовитьПараметризованныйЗапрос();
{D:\BASES\_WORKINGERT\РЕЕСТРЫ\ДОКРЕЕСТР_РНК_ПОДЧИНЕННЫЕПКО.ERT(50)}: ПрямойЗапрос::ПодготовитьПараметризованныйЗапрос() : near "AND": syntax error
ЗапросSQLite.Подготовить(ПараметризированныйТекст);
{D:\BASES\ELIS\TOTALCNT\CLASSES\ПрямыеЗапросы\ПрямойЗапрос.ert(12996) }
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #227 - 27. Декабря 2011 :: 05:46
Печать  
Anatol писал(а) 27. Декабря 2011 :: 05:38:
Судя по описанию должно быть ЗапросПодч.ОписаниеПараметра("ДокОсн","Документ." + ДокРасходная.Вид());


У меня так и написано: ЗапросПодч.ОписаниеПараметра("ДокОсн","Документ.РасходнаяНакладная").
Так же пробовал: ЗапросПодч.ОписаниеПараметра("ДокОсн","Документ")
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #228 - 27. Декабря 2011 :: 10:01
Печать  
Методом тыка нашел следующее:
Если вместо "Потомки" поставить "Родители", конструкция работает. При этом в отладчике в переменной "ПараметризированныйТекст" перед "ЗапросSQLite.Подготовить(ПараметризированныйТекст);"
содержится следующее:
для "Потомки"
Код
Выбрать все
"SELECT	ПодчинДок.*FROM		(SELECT		scrdoc_vt.CHILDID AS ТекущийДокумент		,journ_vt.IDDOCDEF AS ВидДокумента		,journ_vt.DATE AS ДатаДокумента		,journ_vt.DOCNO AS НомерДокумента		,journ_vt.TIME AS ВремяДокумента	FROM __1S_CRDOC AS scrdoc_vt" 


для "Родители"
Код
Выбрать все
"SELECT	ПодчинДок.*FROM		(SELECT			journ_vt.IDDOC AS ТекущийДокумент		,journ_vt.IDDOCDEF AS ВидДокумента		,journ_vt.DATE AS ДатаДокумента		,journ_vt.DOCNO AS НомерДокумента		,journ_vt.TIME AS ВремяДокумента	FROM __1S_CRDOC AS scrdoc_vt
" 


т.е. я так понимаю - вся затыка - в нехватке Enter'а в конце строки?

в
Код
Выбрать все
Функция ПарсингВТПодчиненныеДокументы(ТекстДляОбработки) 

убрал "*" в строке № 2972
Код
Выбрать все
|	WHERE scrdoc_vt.PARENTVAL = "+Документ+"* 



ошибка пропала, но таблица пустая во всех случаях (при наличии и отсутствии потомков)
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #229 - 27. Декабря 2011 :: 10:39
Печать  
Вечером посмотрю, если найду исправлю.
  

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #230 - 27. Декабря 2011 :: 10:50
Печать  
vandalsvq писал(а) 27. Декабря 2011 :: 10:39:
Вечером посмотрю, если найду исправлю.

Ок.

Вопрос по ходу дела: ПодчДок.ТекущийДокумент КАК [Док $Документ] должно возвращать тип "Документ" ? У меня пустое значение получается ((
Как типизировать, чтобы вернулся полноценный документ?? Или только как-то так?
Код
Выбрать все
нт) 



... Еще после танцев с бубном строку 2972
Код
Выбрать все
|	WHERE scrdoc_vt.PARENTVAL = "+Документ+"* 


заменил на
Код
Выбрать все
|	WHERE SUBSTR"+?(ЭтоSQL = 1,"ING","")+"(scrdoc_vt.PARENTVAL,7,9) = "+Документ+" 



взлетело, но ООООчень медленно.
« Последняя редакция: 27. Декабря 2011 :: 11:52 - Dolly_EV »  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #231 - 28. Декабря 2011 :: 09:54
Печать  
Все... разобрался.

1.8.2 от 28.12.11 г.
- Исправлена проблема с ВТ «ПодчиненныеДокументы» при использовании «Потомки» в параметризированном запросе. Подробнее см. описание параметра ВТ – «Документ».

Брать в голове.
Для "Потомки" правильное описание параметра ВТ "Документ" выглядит так:
Код
Выбрать все
ПрямойЗапрос.ОписаниеПараметра("Документ", "Неопределенный"); 


Для "Родители" иначе
Код
Выбрать все
ПрямойЗапрос.ОписаниеПараметра("Документ", "Документ.АвансовыйОтчет"); 


Причем вид документа не имеет значения.

А проблема конечно была интересной. Поле parentval как мы знаем хранится как полный идентификатор документа (вид, идентификатор и дата время). В итоге для удобства я параметр "Документ" для обычной ВТ подставлял с модификатором, а для параметризированного запроса идентификаторы использовать нельзя. Пришлось выкручиваться через "Неопределенный"... там напоролся еще на неприятный баг, но в итоге все исправил.

Пробуйте.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #232 - 28. Декабря 2011 :: 09:58
Печать  
А про типизацию... читай правила типизации поля "Документ" с неопределенным заранее видом.

Подсказка: ТекущийДокумент КАК [Документ $Документ], ВидДокумента КАК Документ_вид
  

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #233 - 28. Декабря 2011 :: 11:16
Печать  
vandalsvq писал(а) 28. Декабря 2011 :: 09:58:
А про типизацию... читай правила типизации поля "Документ" с неопределенным заранее видом.

Подсказка: ТекущийДокумент КАК [Документ $Документ], ВидДокумента КАК Документ_вид


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


я понимаю, что в таком виде в "ДокПодч_вид" лежит ВидДок в виде Число(4) или Строка(4),но если написать
с типизацией
Код
Выбрать все
|	,ПодчДок.ВидДокумента КАК [ДокПодч_вид $ВидДокумента] 

, то
еррор ": no such column: ДокПодч_вид"  Плачущий
  
Наверх
ICQ  
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #234 - 28. Декабря 2011 :: 12:29
Печать  
ДокПодч_вид=$ВидДокумента.ПриходныйОрдер
  
Наверх
wwwICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #235 - 28. Декабря 2011 :: 12:37
Печать  
Anatol писал(а) 28. Декабря 2011 :: 12:29:
ДокПодч_вид=$ВидДокумента.ПриходныйОрдер

А по-подробнее?
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #236 - 28. Декабря 2011 :: 12:47
Печать  
Dolly_EV, см. в сторону раздела документации "Предопределенные текстовые параметры"...

Код
Выбрать все
ВЫБРАТЬ ...
ИЗ Журнал
ГДЕ ВидДокумента = :ВидДокумента.АвансовыйОтчет 



И это... я люблю пользователей своих классов, но не люблю когда они не читают доку вообще... Лучше чтобы вы знали ее лучше меня.
  

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #237 - 28. Декабря 2011 :: 13:28
Печать  
vandalsvq писал(а) 28. Декабря 2011 :: 12:47:
Dolly_EV, см. в сторону раздела документации "Предопределенные текстовые параметры"...

И это... я люблю пользователей своих классов, но не люблю когда они не читают доку вообще... Лучше чтобы вы знали ее лучше меня.


Смущённый Да читаю я доку, читаю... но не всю подряд, а по потребности... ИСПРАВЛЮСЬ))
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #238 - 30. Декабря 2011 :: 06:34
Печать  
Выложена новая версия... всем маст хев Улыбка)) переводится как с Новым годом Улыбка))))))

1.8.3 от 30.12.11г.
- Исправлена ошибка парсинга внутри '' или "".
  

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



Сообщений: 37
Зарегистрирован: 22. Октября 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #239 - 01. Января 2012 :: 06:26
Печать  
Саша, спасибо за подарки! С Новым Годом! Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 14 15 [16] 17 18 ... 51
ОтправитьПечать