Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 10 ОтправитьПечать
Очень популярная тема (более 25 ответов) Упрощение работы с прямыми запросами (число прочтений - 32044 )
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #30 - 04. Мая 2008 :: 10:28
Печать  
Alister писал(а) 04. Мая 2008 :: 10:04:
А вот предложенные в первом посте вещи действительно пригодятся, и если они будут, вроде никому не поплохеет Улыбка
тебе кто то мешает самому написать КОП от ODBCRecordset в котором переопределить:

Функция ВыполнитьИнструкцию(ТекстЗапроса)
   Если гФорматSQL=1 Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$ОбщийЖурнал","_1sjourn");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$nolock","nolock");
   Иначе
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$ОбщийЖурнал","1sjourn");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$nolock","");
   КонецЕсли;
   Возврат гБазовыйRS.ВыполнитьИнструкцию(ТекстЗапроса);
КонецФункции


думаю если бы тебе это действительно было нужно, то уже написал бы Улыбка
  

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


I Love YaBB 2!

Сообщений: 123
Зарегистрирован: 19. Мая 2006
Re: Упрощение работы с прямыми запросами
Ответ #31 - 04. Мая 2008 :: 10:36
Печать  
Так на этот счет никто по-моему и не возражает - кому надо было тот сделал. Но опять таки если это будет в компоненте - кому то станет плохо ? Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #32 - 04. Мая 2008 :: 10:41
Печать  
trad писал(а) 04. Мая 2008 :: 06:34:
Да. Только свою. А тем людям могу, для начала, немного посочувствовать, а потом предложить использовать MSDE.

И заодно купить 1С для СКЛ Улыбка

trad писал(а) 04. Мая 2008 :: 06:34:
Цитата:
Прикинь, приходит ламер, ставит новую 1С++ и пишет (нихрена не зная) запросы, работающие с той же скоростью, что у тебя после "глубокого изучения структуры БД"  Смех (Впрочем, знатоки структуры БД, скорее всего, не выиграют Улыбка)
утопия Улыбка
+если это случиться, то знатоки думаю выиграют потому, как их будет меньше.

Вот точно так же думали многие товарищи, пока их не заменили батальоны индусов на дотнете Улыбка

trad писал(а) 04. Мая 2008 :: 06:34:
Цитата:
Мда. Сколько приложений в мире написано и сколько пишется с нормальным DAL, без всяких тормозов и проблем... А в 1С++ что народ не пишет, все штатный "Запрос" получается...
нормальный DAL + нормальная БД = это хорошо. Нормальный "абстрактный" DAL + две разношерстные БД = ?

Я, конечно, понимаю, на что ты намекаешь, но в данном случае прикинусь веником и предположу, что это может быть, например, РСДНовский Янус, работающий сейчас с джетом, MSSQL, FireBird и т.д. Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #33 - 04. Мая 2008 :: 10:42
Печать  
Alister писал(а) 04. Мая 2008 :: 10:36:
Так на этот счет никто по-моему и не возражает - кому надо было тот сделал. Но опять таки если это будет в компоненте - кому то станет плохо ? Улыбка

Это я и имею в виду. Каждый вынужден изобретать свой велосипед. И нахрена это надо? Пусть будет один велосипед Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #34 - 04. Мая 2008 :: 10:45
Печать  
trad писал(а) 04. Мая 2008 :: 10:28:
тебе кто то мешает самому написать КОП от ODBCRecordset в котором переопределить:

Функция ВыполнитьИнструкцию(ТекстЗапроса)
   Если гФорматSQL=1 Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$ОбщийЖурнал","_1sjourn");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$nolock","nolock");
   Иначе
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$ОбщийЖурнал","1sjourn");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"$nolock","");
   КонецЕсли;
   Возврат гБазовыйRS.ВыполнитьИнструкцию(ТекстЗапроса);
КонецФункции


думаю если бы тебе это действительно было нужно, то уже написал бы Улыбка

А ты представь, что этот код устроит, если там будет что-то типа строки $ОбщийЖурналНах ?  Смех
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #35 - 04. Мая 2008 :: 11:01
Печать  
Uzhast писал(а) 04. Мая 2008 :: 10:45:
А ты представь, что этот код устроит, если там будет что-то типа строки $ОбщийЖурналНах ?  Смех

А парсер не устроит?
Какие разделители он учитывает?
Перечисли, пожалуйста.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #36 - 04. Мая 2008 :: 11:09
Печать  
Uzhast писал(а) 04. Мая 2008 :: 10:45:
А ты представь, что этот код устроит, если там будет что-то типа строки $ОбщийЖурналНах ?  Смех
так годиться?
ТекстЗапроса = СтрЗаменить(ТекстЗапроса," $ОбщийЖурнал "," _1sjourn ");
  

1&&2&&3
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #37 - 04. Мая 2008 :: 11:11
Печать  
trad писал(а) 04. Мая 2008 :: 11:09:
Uzhast писал(а) 04. Мая 2008 :: 10:45:
А ты представь, что этот код устроит, если там будет что-то типа строки $ОбщийЖурналНах ?  Смех
так годиться?
ТекстЗапроса = СтрЗаменить(ТекстЗапроса," $ОбщийЖурнал "," _1sjourn ");

А этот код ляпнется на запросе
Код
Выбрать все
SELECT * FROM $ОбщийЖурнал 

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #38 - 04. Мая 2008 :: 11:17
Печать  
Uzhast писал(а) 04. Мая 2008 :: 10:41:
trad писал(а) 04. Мая 2008 :: 06:34:
Да. Только свою. А тем людям могу, для начала, немного посочувствовать, а потом предложить использовать MSDE.

И заодно купить 1С для СКЛ Улыбка
не, ну кому то же надо денег дать, чтоб все было в шоколаде. Т.е. получаем достаточно хороший сервер с tsql. Избавляемся от гемороя разноформатности. И это за цену апгрейда 7.7 сопоставимую с месячным окладом среднего программиста.
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #39 - 04. Мая 2008 :: 11:21
Печать  
Uzhast писал(а) 04. Мая 2008 :: 11:11:
trad писал(а) 04. Мая 2008 :: 11:09:
Uzhast писал(а) 04. Мая 2008 :: 10:45:
А ты представь, что этот код устроит, если там будет что-то типа строки $ОбщийЖурналНах ?  Смех
так годиться?
ТекстЗапроса = СтрЗаменить(ТекстЗапроса," $ОбщийЖурнал "," _1sjourn ");

А этот код ляпнется на запросе
Код
Выбрать все
SELECT * FROM $ОбщийЖурнал 


или
$ОбщийЖурнал.IDDOC  Улыбка

У меня сейчас через переменные:
рИмяФайлаЖурнала=?(фЭтоSQL=1, "_", "")+"1SJOURN";

Uzhast
Если парсер все это учитывает, то надо сделать  Подмигивание



  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #40 - 04. Мая 2008 :: 11:26
Печать  
Uzhast писал(а) 04. Мая 2008 :: 11:11:
А этот код ляпнется на запросе

ОК.
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"("," ( ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,","," , ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса+" "," $ОбщийЖурнал "," _1sjourn ");
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #41 - 04. Мая 2008 :: 11:27
Печать  
Очень интересно что быстрее
1) парсер
2) переменная
3) СтрЗаменить

Смех
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #42 - 04. Мая 2008 :: 11:27
Печать  
PVR писал(а) 04. Мая 2008 :: 11:01:
А парсер не устроит?

Парсер, по идее, это все должен нормально разруливать.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #43 - 04. Мая 2008 :: 11:28
Печать  
trad писал(а) 04. Мая 2008 :: 11:26:
Uzhast писал(а) 04. Мая 2008 :: 11:11:
А этот код ляпнется на запросе

ОК.
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"("," ( ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,","," , ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса+" "," $ОбщийЖурнал "," _1sjourn ");

Код
Выбрать все
SELECT * FROM $ОбщийЖурнал
WHERE Фигня
 

  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #44 - 04. Мая 2008 :: 11:30
Печать  
Короче, без бутылки хороший велосипед не изобретешь, а изобретать приходится многим. Потому и считаю, что такие вещи нужно упрощать при помощи 1С++.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 10
ОтправитьПечать