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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #435 - 02. Февраля 2010 :: 09:56
Печать  
alexmyt писал(а) 02. Февраля 2010 :: 08:14:
Столкнулся с неправильным определением границ периодов в случае запроса оборотов с периодичностью КВАРТАЛ в базе ДБФ.

Чет прогнал тестовый запрос... вроде все верно работает в КОПе. Хм... проверю подробнее.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #436 - 04. Февраля 2010 :: 11:37
Печать  
Изменил рекомендацию по ВК 1sqlite в связи с выходом новой версии. Скажем спасибо Александру Орефкову.
  

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


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 26. Мая 2006
Re: Класс "ПрямойЗапрос"
Ответ #437 - 09. Февраля 2010 :: 05:41
Печать  
vandalsvq писал(а) 02. Февраля 2010 :: 09:24:
alexmyt, погоди-ка немного я проверю.
Хотя заранее скорее всего соглашусь что с havung sum(Оборот) <> 0 я погорячился.  Улыбка

Вы не посмотрели? Был бы крайне признателен за авторское мнение Улыбка
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #438 - 09. Февраля 2010 :: 06:48
Печать  
alexmyt писал(а) 09. Февраля 2010 :: 05:41:
Вы не посмотрели? Был бы крайне признателен за авторское мнение Улыбка

Посмотрел и даже немного подумал, но потом отвлекли  Смех.
В общем на самом деле сдается мне что проверка на Оборот при наличии ОборотДт и ОборотКт немного нелогична. Скорее всего переделаю. Счас руки недоходят. Хотел вчера выложить новую версию, дык несрослось, поздно было спать хотел. Видимо в ближайшие пару дней (как релиз конфы выпущу, так и КОПы под него тоже).

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

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
novichek
Экс-Участник


Re: Класс "ПрямойЗапрос"
Ответ #439 - 10. Февраля 2010 :: 05:53
Печать  
Есть предложение:
в функции ПарсингВТПоследнееЗначение смягчить требование к параметру ГраницаЗначения. Н.р. если в нем есть символ ".", то подставлять его "как есть". Получим возможность использовать коррелированный поДзапрос (вроде правильно его обозвал Улыбка )
н.р. для запросов вида:
Код
Выбрать все
|Select
|	...
|	$рнк.Сумма * $ПоследнееЗначение.Валюты.Курс( $рнк.Валюта, $журн.ПозицияДокумента ) AS Сумма
|From ЖурналДокументов AS журн $NoLock
|INNER JOIN Документ.РасходнаяНакладная AS рнк $NoLock ON $рнк.ТекущийДокумент = $журн.ТекущийДокумент
|...
 



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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #440 - 10. Февраля 2010 :: 09:19
Печать  
Цитата:
Есть предложение:
в функции ПарсингВТПоследнееЗначение смягчить требование к параметру ГраницаЗначения. Н.р. если в нем есть символ ".", то подставлять его "как есть". Получим возможность использовать коррелированный поДзапрос (вроде правильно его обозвал Улыбка )

Ну.... в принципе почему нет. Давай попробую не забыть.
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #441 - 10. Февраля 2010 :: 21:39
Печать  
Предложение по LIMIT/TOP. Что если реализовать такой алгоритм:
При парсинге в ДБФ базе удалять из текста запроса TOP N. Если из текста был удален хоть один оператор - проверить, есть ли в тексте подстрока LIMIT. Если нет - выругаться (обратить внимание программиста на необходимость модификации запроса).
То же самое и для sql базы. Пытаемся удалить LIMIT, если удалили хоть один - проверим, есть ли TOP.
В итоге, универсальный запрос будет содержать и TOP, и LIMIT. Запрос, ориентированный только на одну базу - будет работать, при попытке запустить его в другом варианте - будет напоминать о необходимости ручной модификации.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Класс "ПрямойЗапрос"
Ответ #442 - 11. Февраля 2010 :: 03:52
Печать  
а еще, а еще...  Круглые глаза
В общем по-порядку Улыбка
1. В РегистрОстатки очень хочется чтобы можно было указывая (только дату начала, дату начала+дату окончания, только дату окончания) иметь возможность получать итоги соответственно (только на начало, на начало+на конец, только на конец) периода
2. В РегистрОстаткиОбороты, в случае периодичности Документ, коли уж выбран метод дополнения ДвиженияИГраницыПериода то реализовать чтобы строки с начальным и конечным остатком были всегда.
3. В качестве напоминалки: хочется IsNul/IfNull
В принципе, если Автор не против, я бы мог попробовать что-нибудь из этого реализовать и выслать для рассмотрения на предмет возможности последующего включения в релиз Улыбка

чуть не забыл
4. еще хочется функцию получения минимума и максимума из двух значений. Н.р. SQLite понимает и такую конструкцию MIN(a,b) а для
MS SQL она разворачивается в CASE WHEN a<b THEN a ELSE b END
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #443 - 11. Февраля 2010 :: 06:39
Печать  
novichek, спасибо за пожелания, на самом деле все по делу, почти Улыбка. Но давай по порядку...
1. TOP N ..... LIMIT N.
Согласен что вполне нормальный вариант. Но тогда надо подсчет количества удаленных TOP/LIMIT и сравнивать с количеством LIMIT/TOP (обратных выражений). Т.о. можно с большой долей вероятности сказать что "никто не уйдет безнаказанно" Улыбка.
2. Что касается РегистрОстатки.... хм. Наверное "Нет", не стоит этого делать. Во-первых зачем (если есть ОстаткиОбороты), а во-вторых на самом деле большой принципиальной разницы между 2-я запросами Остатков, или одного ОстаткиОбороты я не вижу. Скорость все равно не увеличится. Хотя если покажешь обратный пример готов забрать все сказанное с собой Подмигивание.
3. Т.е. не зависимо от того был остаток или нет ты хочешь получать строки начальных и конечных остатков. Хм. Тут проблема в реализации. Как правило набор разрезов Остатки <> Обороты. Соответственно когда получаем ВТОстатки мы не получаем желаемые строки с нолями. А ВТОбороты они нужны. В общем красивого и удобного решения в голове пока нет Печаль.
4. IsNull/IfNull реализовано, но лежит в закромах родины. Надо бы решить вопросы с БИОбороты и можно выкладывать.
Попробую туда добавить TOP/LIMIT и выложу. Но наврядли раньше начала выходных. Зато ты можешь попробовать реализовать пожелалки 2 и 3. Может что получится, посмотрим-с  Подмигивание
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #444 - 11. Февраля 2010 :: 07:50
Печать  
Сравнивать количество имеет смысл только в случае, если это никак не отразится на быстродействии. А так - особого смысла нет , ведь все равно расставлять ключевые слова нужно программисту. А ему по должностной инструкции положено думать и высчитывать.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

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

В принципе дополнительный парсинг TOP/LIMIT (счас уже один есть такой) не займет много времени. По крайней мере всегда можно доп. опцию ввести. А если я буду регэкспами тащить их то количество в любом случае получу. Другое дело что я буду тащить например только TOP и коцать их, а проверку лимит можно просто через НАЙТИ сделать. Короче когда реализую тогда и посмотрим сколько времени оно съело.
  

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


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

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

1.05.007 от 09.02.10 г.
- Новая функция ISNULL.
- Реализована поддержка только 1sqlite версии 1.0.2.3.

ОБРАТИТЕ ВНИМАНИЕ: обязательно переход на 1sqlite версии 1.0.2.3.
  

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


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

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

1.05.008 от 15.02.10 г.
- Исправлена ошибка подстановки предопределенных текстовых параметров с использованием модификаторов для SQL версии БД.

Брать как всегда в топе.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #448 - 15. Февраля 2010 :: 16:19
Печать  
Забыл сказать что давно добавил один режим отладки. Зарелизил счас.
Как то так:
- Новое значение РежимОтладки = -1. Выводится только информация о времени подготовки и выполнения запроса.
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #449 - 16. Февраля 2010 :: 07:07
Печать  
Спасибо
А еще в следующий релиз хорошо бы включить функцию
Код
Выбрать все
// ===============================
Функция ПарсингВидДокумента(ТекстЗапроса)
	Если ЭтоSQL = 0 Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "$ВидДокумента.", ":ВидДокумента.");
	КонецЕсли;

	Возврат ТекстЗапроса;
КонецФункции //ПарсингВидДокумента
 


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