Переключение на Главную Страницу Страницы: 1 ... 29 30 [31] 32 33 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 314009 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #450 - 16. Февраля 2010 :: 07:36
Печать  
classic писал(а) 16. Февраля 2010 :: 07:07:
Спасибо
А еще в следующий релиз хорошо бы включить функцию

Защита от ODBC???  Смех
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #451 - 16. Февраля 2010 :: 07:38
Печать  
Я все еще помню о том что:
1. Сделать TOP/LIMIT
2. Посмотреть проблему SUM() <> 0 в ВТ обороты.
..... просто болею  Со сжатыми губами
« Последняя редакция: 21. Февраля 2010 :: 15:02 - vandalsvq »  

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


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 26. Мая 2006
Re: Класс "ПрямойЗапрос"
Ответ #452 - 16. Февраля 2010 :: 07:44
Печать  
Мы тоже помним и ждем Улыбка
Выздоравливайте!
  
Наверх
 
IP записан
 
rustamakhmetov
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 20. Декабря 2006
Ошибка при парсинге $БИОстатки (Re: Класс "ПрямойЗапрос")
Ответ #453 - 20. Февраля 2010 :: 20:20
Печать  
База DBF. Версия класса "Прямой запрос" 1.05.008 от 15.02.2010

Ошибка заключается в неверном парсинге параметров $БИОстатки при использовании вирт. таблицы во вложенном запросе.

"КАК ОстаткиОсновной" парсится как подвыражение параметров вирт. таблицы, в данном случае попадает в переменную "УсловиеДополнительно", что отражается в конечном запросе как "AND AS ОстаткиОсновной"

Если в запросе убрать выражение "КАК ОстаткиОсновной", то в конечном запросе отсутствует закрывающая скобка.
« Последняя редакция: 21. Февраля 2010 :: 07:41 - rustamakhmetov »  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #454 - 20. Февраля 2010 :: 21:15
Печать  
rustamakhmetov, удали плиз примеры кода. Я ошибку нашел исправил, счас кое-что еще доделаю и выложу.  Подмигивание
  

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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 20. Декабря 2006
Бага или фича (Re: Класс "ПрямойЗапрос")
Ответ #455 - 21. Февраля 2010 :: 07:55
Печать  
Код ниже должен возвращать результат, но ничего не находит по условию
Код
Выбрать все
|ВЫБРАТЬ
| 	 Субконто1  
|   ,Субконто1_вид
|	,Субконто2
|   ,СуммаОстаток КАК СуммаОстаток
|
|ИЗ $БИОстатки.Основной(:КонПериода
|,#Счета
|,(Контрагенты,Договоры)
|,(Сумма)
|)
|
|ГДЕ Субконто1=:Контрагент
|";
 



Также указание условия "Субконто1=:Контрагент" в $БИОстатки тоже выдает нулевый результат.

А если присоединить справочник "Контрагенты":
Код
Выбрать все
....
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК СпрК
|ПО $СпрК.ТекущийЭлемент=Субконто1
|
|ГДЕ $СпрК.ТекущийЭлемент=:Контрагент
 


то результат появляется.  Очень довольный
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #456 - 21. Февраля 2010 :: 08:03
Печать  
Это фича. Дело в том что при джойне правые пробелы (оные присутствуют в значении субконто) не учавствуют в сравнении, а при условии = получается ты сравниваешб разные по длине строки. Напиши ЛЕВО(Субконто1,9) = Контрагент. Вроде как то так.
  

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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 20. Декабря 2006
Re: Класс "ПрямойЗапрос"
Ответ #457 - 21. Февраля 2010 :: 08:19
Печать  
Цитата:
ЛЕВО(Субконто1,9) = Контрагент

Это сработало во всех вариантах использования.
Спасибо за клевую компоненту!  Улыбка
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #458 - 21. Февраля 2010 :: 15:01
Печать  
Выпущен новый релиз:

1.05.009 от 21.02.10 г.
- Изменен парсинг инструкции ПЕРВЫЕ. Подробнее читайте в соответствующем разделе. Возможны проблемы обратной совместимости.
- Добавлен парсинг наличия в запросе одновременно конструкцию TOP и LIMIT. Подробнее см. в соответствующем разделе.
- Исправлена ошибка парсинга вложенных виртуальных таблиц (при отсутствии полного набора параметров).
- Изменен парсинг ВТ БИОбороты. Проверка происходит не по колонке Обороты, а по колонкам ОборотыДт, ОборотыКт. Т.о. строки с Обороты = 0 в ВТ попадают.

Пы.сы. обратите внимание что если ранее в тексте запроса могла присутствовать конструкция TOP n, которая парсером менялась на LIMIT n в конце запроса (для DBF), в текущей версии таким образом обрабатывается ТОЛЬКО конструкция ПЕРВЫЕ n. Остальное в документации описано.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #459 - 21. Февраля 2010 :: 15:52
Печать  
Заменил класс в топе. Обнаружилось несколько крайне неприятных багов Печаль. В общем версию не менял. Вроде ошибки подправил.  Смущённый
Пы.сы. для тех кто делал наследников от класса, и пользовался методом ПолучитьПараметрыВыражения, советую обратить внимание что если в одном из подвыражения  будет на конце ")" следующий параметр за ним будет пустой, даже если это не так. С этим собственно и были связаны найденные баги в первой выложенной версии Печаль
  

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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 20. Декабря 2006
Re: Класс "ПрямойЗапрос"
Ответ #460 - 22. Февраля 2010 :: 11:16
Печать  
Никак у меня не выходит каменный цветок.  Озадачен
см. вложение.

там два запроса, в парсинг попадает часть метазапроса.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #461 - 22. Февраля 2010 :: 12:08
Печать  
2 rustamakhmetov
В общем... давай по порядку, я попробовал малой кровью обойти данную проблему (об оной знал давно, все думал может х#р с ней). Но не удалось, две версии кроме полезного получили и кучу проблем. В итоге: откатился назад с 10-й на 9-ю. Оставил только правку критического бага в ВТ БИОборотыДтКт.
Что касается твоей проблемы, предлагаю заглянуть в документацию, а именно в секцию которая открывает описания виртуальных таблиц.
Цитата:
При использовании виртуальных таблицу все предусмотренные параметры являются обязательными. При отсутствии необходимости их заполнения между запятыми остаются пустые значения.
  

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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 20. Декабря 2006
Re: Класс "ПрямойЗапрос"
Ответ #462 - 22. Февраля 2010 :: 13:37
Печать  
to vandalsvq
Без проблем (я пункт про обязательные параметры не углядел в документанции)

Хорошо бы в метод "УложитьТаблицуЗначений" добавить создание индекса для вирт. таблицы, выражение для индекса передавать через параметр.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Класс "ПрямойЗапрос"
Ответ #463 - 22. Февраля 2010 :: 13:50
Печать  
Саш, замени плиз паттерн в функции ПарсингФункцииДеньМесяцГод на
Код
Выбрать все
"([^\wа-яё\.](ДЕНЬ|МЕСЯЦ|ГОД)\("+ШаблонПараметр+")" 


А то она на слова день, месяц, год "возбуждается" в самых неподходящих местах Улыбка

ЗЫ: хотя насчет самого выражения не уверен, может я просто не все случаи возможного применения функций знаю, но смысл думаю понятен  Круглые глаза

ЗЫЗЫ: во всяком случае точно сработало в след случае

Код
Выбрать все
|	ЛЕВО($журн.ПозицияДокумента,8) AS ТекДень,
|	(Select COUNT(*) From ДокументСтроки.РасходнаяКредит AS РКС $NoLock Where $РКС.ТекущийДокумент = $журн.ТекущийДокумент) as КолСтрок
 

(слово ДЕНЬ в алиасе ТекДень)
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #464 - 22. Февраля 2010 :: 14:27
Печать  
2 novichek
Ситуевину понял, но паттерн малость другой. Подправлю скоро. Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 29 30 [31] 32 33 ... 60
ОтправитьПечать