Переключение на Главную Страницу Страницы: 1 ... 48 49 [50] 51 52 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 303301 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #735 - 02. Июня 2010 :: 19:47
Печать  
Нашел неприятную весь, оказывается нельзя писать вложенные функции в некоторые другие функции.

Например: Лево(Лево(<Строка>,<n>),<n>).

Полный список таких функций: День, Месяц, Квартал, Год, МесяцСтрокой, НачалоПериода, Лево, Право.

Собственно кроме Лево и Право я других проблем не вижу. И если Право к сожалению никак иначе не написать, то лево всегда можно заменить СРЕД().

Есть какие мысли? Я могу написать дополнительный прогон на параметры, ну скажем 2 раза, более наверное не стоит. Да это отразится на времени, но я думаю не более 5-7 мс в сумме. Или оставить как есть.

В документации будет отражено.
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #736 - 02. Июня 2010 :: 20:32
Печать  
Оставь, как есть. Это достаточно редкая ситуация. В таких случаях можно и LEFT/RIGHT ручками написать.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #737 - 06. Июня 2010 :: 20:55
Печать  
Немного добавленных фич для SQL-щиков не более.

1.07.007 от 03.06.10 г.
- Добавлены публичные методы «СоздатьФункциюIdToStr», «СоздатьФункциюStrToId», «СоздатьФункциюConvertTime», «СоздатьФункциюConvertPlanID». Только для SQL формата БД.
  

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


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

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

1.07.008 от 10.06.10 г.
- Исправлены некоторые ошибки направленные на оптимизацию расчетов ВТ.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #739 - 10. Июня 2010 :: 08:02
Печать  
1.07.009 от 15.06.10 г. (beta)
- Проведены работы по оптимизации построения ВТ по регистрам.

Бета версия потому что прошу внимательно проверить как рассчитывается ВТ на границах близких к ТА и за ее пределами.
Если до 15 не будет замечений выйдет офицально.
  

1Cv7_query_006.rar ( 202 KB | Загрузки )

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #740 - 11. Июня 2010 :: 08:53
Печать  
Что-то непонятное. Запрос к регистрам. В одной базе отрабатывает на ура, во второй, вроде бы такой же, ругается. И трассировал, и вникал - ничего не понимаю.
Вот так оно ругается:
<Стер длинный бесполезный кусок кода>
Что бы это значило?
« Последняя редакция: 14. Июня 2010 :: 06:31 - classic »  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #742 - 13. Июня 2010 :: 19:52
Печать  
classic, по первому твоему проблемному посту... покажи оригинал запроса и дату которую ты устанавливаешь. Потому как меня прикалывает вот эта строка
Код
Выбрать все
rg_295.PERIOD = 'Неправильный формат времени.' 


Собственно нужна "методика" повторения данной беды.

По второму посту... "Много новых" как то знаешь ли не клеится с приведенным примером одной ошибки. На самом деле с вероятностью 99% версия 1.07 должна съедать запрос с отсутствующими параметрами. Пока тестирую всегда пишу "как попало" т.е. запятые ставлю какие нравятся. В общем... тест. В студию.

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

Пы.пы.сы. в версии 1.06.ххх полно было других проблем.
  

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


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

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

Собственно нужно ваше мнение.
« Последняя редакция: 18. Июня 2010 :: 21:17 - vandalsvq »  

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


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

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

1.07.010 от 21.06.10 г.
- Добавлена возможность работы с параметризованными запросами. В качестве переменных используется конструкция «@ИмяПараметра». Подробнее см. Параметризованные запросы.

Параметризованные запросы (документация к классу).
Обычно запросы содержат переменные в своем составе, например в предложении WHERE. Для эффективной работы с такими запросами используются параметризованные запросы. Конечно, запрос может быть и не параметризованным - собираться программой динамически, а затем подаваться для создания Statement - однако это не самый легкий и что самое главное далеко не оптимальный подход.
Параметризованный запрос это выражение, где на месте текстовых параметров (не обязательно всех) стоят идентификаторы подставляемых значений - "@Контрагент", "@ДатаНачалаПериода". Перед использованием их надо связать с конкретными типами значений - это производится вызовом метода «ОписаниеПараметра». Далее запрос необходимо подготовить специальным методом – «ПодготовитьПараметризованныйЗапрос».
Непосредственно перед выполнением запроса во все параметры должны быть подставлены значения методом «ПодставлятьПараметры». После этого запрос можно выполнять.
Установка текста запроса, описание параметров и подготовка запроса должна выполняться в том же объекте где и дальнейшая подстановка значений и выполнение. При этом в качестве текста запроса используется значение атрибута «Текст». В качестве параметров должны выступать выражения – «@ИмяПараметра». Модификаторы для них не используются.
При изменении атрибута «Текст» ранее подготовленный запрос будет сброшен, а все заданные значения и описания очищены.

Пример кода:
При инициализации класса (ЗапросПоставленныеЗадачи - переменная класса)
Код
Выбрать все
	ЗапросПоставленныеЗадачи = СоздатьОбъект("ПрямойЗапрос");
	ЗапросПоставленныеЗадачи.БухгалтерскийУчет = 0;
	ЗапросПоставленныеЗадачи.ОперативныйУчет = 0;
	ЗапросПоставленныеЗадачи.ПериодическиеЗначения = 0;
	ЗапросПоставленныеЗадачи.Текст =
	"ВЫБРАТЬ
	|	КОЛИЧЕСТВО($Спр.ТекущийЭлемент) КАК Количество
	|ИЗ
	|	Справочник.Календарь КАК Спр $NOLOCK
	|ГДЕ
	|	$Спр.СтатусНазначения = :Перечисление.СтатусыНазначеногоСобытия.ВПроцессе
	|И
	|	$Спр.ПолучательСобытия = @ПолучательСобытия";
	ователи");
	ЗапросПоставленныеЗадачи.ПодготовитьПараметризованныйЗапрос(); 


Далее вызов запроса:
Код
Выбрать все
Функция ПолучитьКоличествоПоставленныхЗадач(СправочникПользовательСсылка) Экспорт
	ЗапросПоставленныеЗадачи.РежимОтладки = глРежимОтладки;
	зовательСсылка);
	Результат = ЗапросПоставленныеЗадачи.ВыполнитьПараметризованныйЗапрос();
	Возврат Результат.ПолучитьЗначение(1,1);
КонецФункции // ПолучитьКоличествоПоставленныхЗадач 


Т.о. при использовании параметризованного запроса необходимо (в отличии от обычного запроса) - установить описание параметров. Использование модификаторов для параметров вида "@ИмяПараметра" недопустимо.
  

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


Re: Класс "ПрямойЗапрос"
Ответ #745 - 21. Июня 2010 :: 03:37
Печать  
в ПарсингВТПодчиненныеДокументы, у последнего параметра (КонДата) съедается последний символ, видимо вот этим "КонПериода = Лев(КонПериода,СтрДлина(КонПериода)-1);"
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

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

1.07.011 от 27.06.10 г.
- Незначительные внутренние изменения.

Ошибка по ВТ "ПодчиненныеДокументы" не исправлена. Просто забыл ;(.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #747 - 29. Июня 2010 :: 20:42
Печать  
По поводу подрезания значений строк длиной более 23 символа в периодических значениях и константах для DBF формата БД есть небольшая новость. Вполне возможно что уже на будущей неделе данная проблема будет решена.
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #748 - 30. Июня 2010 :: 10:12
Печать  
Необходимо реализовать поддержку параметризированного запроса для вирт. значения "ПоследнееЗначение".
  

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



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #749 - 30. Июня 2010 :: 18:53
Печать  
В связи с началом активного использования бухгалтерских ВТ прошу зарегать первый баг:
В функции ПарсингВТБИОстаткиОбороты количество параметров требуется увеличить с 8 до 9


Код
Выбрать все
Функция ПарсингВТБИОстаткиОбороты(ТекстДляОбработки)
	ТекстЗапроса = ТекстДляОбработки;

	//Параметры = ПолучитьСтрокуПараметров(8);
	Параметры = ПолучитьСтрокуПараметров(9);
 

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 48 49 [50] 51 52 ... 60
ОтправитьПечать