Переключение на Главную Страницу Страницы: 1 ... 56 57 [58] 59 60  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 291081 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #855 - 06. Сентября 2010 :: 06:27
Печать  
[quote author=cleaner link=1246429625/840#854 date=1283664303]Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:
[code]      [/code]
В примере показано, что меняется. Старый вариант запроса для DBF закомментирован[/quote]
Ты бы хотя бы описал назначение данного запроса :)
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #856 - 06. Сентября 2010 :: 11:25
Печать  
[quote author=cleaner link=1246429625/840#854 date=1283664303]Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:

В примере показано, что меняется. Старый вариант запроса для DBF закомментирован[/quote]
Не все верно. В частности Жур.$ОбщийРеквизит.ИмяРеквизита можно писать как $Жур.ИмяРеквизита, а $nolock вообще отсутствует везде.
Ну и сравнение "WHERE $Жур.ДатаДокумента"... тут такое дело что сравнивать left(date_time_iddoc,8) (для SQL будет так) не самое хорошее решение. Проще после кода поставить проверку, если это ПрямойЗапрос.ЭтоSQL = 1 то данную часть заменить на $Жур.ПозицияДокумента. Т.е. ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,"WHERE $Жур.ДатаДокумента","WHERE $Жур.ПозицияДокумента");
  

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


1C++ rocks!

Сообщений: 12
Зарегистрирован: 26. Января 2010
Re: Класс "ПрямойЗапрос"
Ответ #857 - 06. Сентября 2010 :: 12:31
Печать  
[quote author=vandalsvq link=1246429625/855#856 date=1283772345][quote author=cleaner link=1246429625/840#854 date=1283664303]Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:

В примере показано, что меняется. Старый вариант запроса для DBF закомментирован[/quote]
Не все верно. В частности Жур.$ОбщийРеквизит.ИмяРеквизита можно писать как $Жур.ИмяРеквизита, а $nolock вообще отсутствует везде.
Ну и сравнение "WHERE $Жур.ДатаДокумента"... тут такое дело что сравнивать left(date_time_iddoc,8) (для SQL будет так) не самое хорошее решение. Проще после кода поставить проверку, если это ПрямойЗапрос.ЭтоSQL = 1 то данную часть заменить на $Жур.ПозицияДокумента. Т.е. ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,"WHERE $Жур.ДатаДокумента","WHERE $Жур.ПозицияДокумента");
[/quote]


[b]ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,"WHERE $Жур.ДатаДокумента","WHERE $Жур.ПозицияДокумента");"[/b]
обязательно сделаю такую проверку

А по поводу $nolock я прочитал в твоей документации, что происходит подстановка автоматическая nolock для SQL, а для 1sqlite это и не нужно. Или я не так понял?

Ну, раз уж на то пошло - можно вернуть знак $ перед регистрами движений? Не очень удобно править руками запрос qryConsole, первый раз я даже долго искал в своем запросе ошибку (спасибо Орефкову за консоль запросов 1sqlite, помогла разобраться)
  
Наверх
 
IP записан
 
cleaner
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 26. Января 2010
Re: Класс "ПрямойЗапрос"
Ответ #858 - 06. Сентября 2010 :: 12:32
Печать  
[quote author=artbear link=1246429625/855#855 date=1283754467][quote author=cleaner link=1246429625/840#854 date=1283664303]Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:
[code]      [/code]
В примере показано, что меняется. Старый вариант запроса для DBF закомментирован[/quote]
Ты бы хотя бы описал назначение данного запроса :)[/quote]


ТиС 952, регистр Поставщики или Покупатели, запрос выводит движения по регистру за определенный период
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #859 - 06. Сентября 2010 :: 12:42
Печать  
[quote author=cleaner link=1246429625/855#857 date=1283776307]А по поводу $nolock я прочитал в твоей документации, что происходит подстановка автоматическая nolock для SQL, а для 1sqlite это и не нужно. Или я не так понял?[/quote]
Понял ты все так, другое дело что я видел ранее у тебя были проверки на SQL соответветственно и решил сделать замечание, предполагая что скула может быть. :)
  

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


1C++ rocks!

Сообщений: 12
Зарегистрирован: 26. Января 2010
Re: Класс "ПрямойЗапрос"
Ответ #860 - 06. Сентября 2010 :: 12:50
Печать  
[quote author=vandalsvq link=1246429625/855#859 date=1283776951][quote author=cleaner link=1246429625/855#857 date=1283776307]А по поводу $nolock я прочитал в твоей документации, что происходит подстановка автоматическая nolock для SQL, а для 1sqlite это и не нужно. Или я не так понял?[/quote]
Понял ты все так, другое дело что я видел ранее у тебя были проверки на SQL соответветственно и решил сделать замечание, предполагая что скула может быть. :)[/quote]

Ну, не везде:) Для журнала я сделал "With (NOLOCK)". За совет, однако, спасибо:) Скула конечно может быть, клиенты разные бывают
  
Наверх
 
IP записан
 
viddik
Junior Member
**
Отсутствует



Сообщений: 37
Зарегистрирован: 22. Октября 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #861 - 07. Сентября 2010 :: 08:32
Печать  
Александр, еще баг в вирт. табл. $РегистрОстатки:
в строке 4861 генерится условие вида
AND (" + СтрДатаТаблицы + " < '" + КонГраницаТабДвижений + КонВремяТабДвижений + "')
без учета того факта, что правая часть сравнения может быть пустой строкой, например при обратном расчете от ТА. Соответственно, эти движения в выборку не попадают. Для sql не проверял, но судя по коду там тоже самое.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #862 - 07. Сентября 2010 :: 11:54
Печать  
Собственно посмотрел, как воспроизвести ошибку?
Давай дату ТА и дату снятия остатков. Будем смотреть далее...
« Последняя редакция: 07. Сентября 2010 :: 19:00 - vandalsvq »  

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



Сообщений: 37
Зарегистрирован: 22. Октября 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #863 - 08. Сентября 2010 :: 02:21
Печать  
vandalsvq писал(а) 07. Сентября 2010 :: 11:54:
Собственно посмотрел, как воспроизвести ошибку?
Давай дату ТА и дату снятия остатков. Будем смотреть далее...

Пример: ДатаТА = 07.09.10, дата остатков - 03.09.10
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #864 - 08. Сентября 2010 :: 18:46
Печать  
Ошибку подтверждаю. Я даже не знал что ПолучитьДокументТА может вернуть пустоту (при том что ПолучитьПозициюТА возвращает вполне осязаемое значение). Счас даже не знаю как поступить, текущая версия не содержит изменений которые я хотел внести, но ошибка достаточно неприятная. Исправляется просто, но неприятно.

Счас выложу бета версию смотрите, проверяйте, а там когда будет релиз тогда будет как положено.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #865 - 08. Сентября 2010 :: 18:50
Печать  
Собственно вот и версия с изменениями, там еще оптимизирована ВТ БИОбороты (ДтКт в том числе) (для DBF).
  

1Cv7_query_-_beta.rar ( 212 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
МАлексей
YaBB Newbies
*
Отсутствует


1C++ это полезно

Сообщений: 4
Зарегистрирован: 10. Сентября 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #866 - 15. Сентября 2010 :: 14:34
Печать  
В параметрах виртуальных таблиц задать (Количество,Сумма) можно, а на (Количество, Сумма) выдает ошибку.

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #867 - 16. Сентября 2010 :: 03:19
Печать  
МАлексей писал(а) 15. Сентября 2010 :: 14:34:
Там n-этажное регулярное выражение - не стал даже разбираться.

Там не регулярное выражение виновато наверное. Исправимс.
  

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


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос"
Ответ #868 - 17. Сентября 2010 :: 19:56
Печать  
Не выходит каменный цветок... а так хочется получить подчинённые документы определённого вида...
ТекстЗапроса = "
     |SELECT
     |    Жур.IDDoc [Док $Документ.ВводОплаты],
     |    Жур.IDDocDef Док_ВводОплаты
     |FROM
     |    Журнал как Жур
     |INNER JOIN
     |    ССылкиДокументов как Отбор ON $Отбор.ПодчиненныйДокумент = Жур.IDDoc AND
     |                      $Отбор.ГрафаОтбора = 0 AND
     |                      $Отбор.ДокументРодитель = :ДокРодитель AND
     |                      $Отбор.ДатаДокумента BETWEEN :НачДата AND :КонДата~";

  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #869 - 18. Сентября 2010 :: 05:59
Печать  
Код
Выбрать все
	ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
	ТекстЗапроса = "
	|ВЫБРАТЬ
	| ПодчДок.ТекущийДокумент КАК [ДокСф $Документ]
	|,ПодчДок.ВидДокумента КАК ДокСф_вид
	|ИЗ
	| $ПодчиненныеДокументы.Потомки(:ДокОсн,,) КАК ПодчДок
	|ГДЕ ПодчДок.ВидДокумента = $ВидДокумента."+ВидСФ+"
	|";
	ПрямойЗапрос.УстановитьТекстовыйПараметр("ДокОсн",Конт.ТекущийДокумент());
	ИтТзПодчДок = ПрямойЗапрос.Выполнить("ИндексированнаяТаблица",ТекстЗапроса);
	ИтТзПодчДок.ВЫбратьСтроки();
	Пока ИтТзПодчДок.ПолучитьСтроку()=1 Цикл
 

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 56 57 [58] 59 60 
ОтправитьПечать