Переключение на Главную Страницу Страницы: 1 ... 11 12 [13] 14 15 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 305017 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #180 - 09. Сентября 2009 :: 12:14
Печать  
http://www.1cpp.ru/docum/icpp/html/ODBC.html#id28 читай про типизацию "Документ"
  
Наверх
 
IP записан
 
undo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Местоположение: Ульянвоск
Зарегистрирован: 25. Декабря 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #181 - 09. Сентября 2009 :: 13:11
Печать  
ТекстЗапроса =
     "SELECT
     |      $Жур.ТекущийДокумент КАК [Док $Документ]
     |      $Жур.ВидДокумента КАК ТекущийДокумент_вид
     |ИЗ
     |      ЖурналДокументов КАК Жур
     |WHERE
     |    $Жур.ДатаДокумента BETWEEN :НачДата AND :КонДата~
     |      AND
     |      $Жур.Проведен = 1
     |      AND (
     |   $Жур.ВидДокумента = :ВидДокумента.ПКО

такая схема тоже не проходит, или скорее всего я что-то не понимаю.
p/s/ я ещё мало знаком с прямыми запросами Печаль
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #182 - 09. Сентября 2009 :: 13:29
Печать  
Не внимательно читал.
Цитата:
...в наборе данных должна находиться колонка с именем составленным из имени этой колонки и суффикса {_вид|_kind} (чувствительно к регистру)

значит должно быть что-то вроде
Код
Выбрать все
$Жур.ТекущийДокумент КАК [Док $Документ]
    |	$Жур.ВидДокумента КАК Док_вид 

  
Наверх
 
IP записан
 
undo
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Местоположение: Ульянвоск
Зарегистрирован: 25. Декабря 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #183 - 09. Сентября 2009 :: 13:42
Печать  
"SELECT
     |      $Жур.ТекущийДокумент КАК [Док $Документ],
     |      $Жур.ВидДокумента КАК Док_ПКО,
     |      $Жур.ВидДокумента КАК Док_ПКОБанк,
     |      $Жур.ВидДокумента КАК Док_ВозвратнаяНакладная,
     |      $Жур.ВидДокумента КАК Док_РасходнаяНакладная,
     |      $Жур.ВидДокумента КАК Док_АктПремии
     |ИЗ

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #184 - 09. Сентября 2009 :: 15:08
Печать  
undo писал(а) 09. Сентября 2009 :: 13:42:
"SELECT
     |      $Жур.ТекущийДокумент КАК [Док $Документ],
     |      $Жур.ВидДокумента КАК Док_ПКО,
     |      $Жур.ВидДокумента КАК Док_ПКОБанк,
     |      $Жур.ВидДокумента КАК Док_ВозвратнаяНакладная,
     |      $Жур.ВидДокумента КАК Док_РасходнаяНакладная,
     |      $Жур.ВидДокумента КАК Док_АктПремии
     |ИЗ

если так то не работает.


Выдержка из документации
Цитата:
Типизация Документ
Задается как:
$Документ [.ИмяВидаДокумента]
При указании вида документа результат должен быть строкой 9 символов - внутренний идентификатор документа. Если вид документа не указан, результат должен быть строкой 13 символов - внутренний идентификатор документа с идентификатором вида документа. Либо результат может быть строкой 9 символов - внутренний идентификатор документа, и в составе полей запроса существует колонка с именем, как у этой колонки + "_вид", или "_kind" (с учетом регистра букв), в которой лежит вид документа.


А вот собственно про поле ТекущийДокумент
Цитата:
ТекущийДокумент
ПолеТаблицы: IDDOC
Тип: Строка(9)
Типизация: $Документ.<ВидДокумента>
Пример: $Рег.ТекущийДокумент КАК [ТекущийДокумент $Документ],
  $Жур.ВидДокумента КАК ТекущийДокумент_вид
Описание: Колонка идентификатора документа. По данному полю происходит связь с другими таблицами. Значение уникально в рамках всей конфигурации и в рамках данной таблицы.


А тебе и всего то надо написать
Код
Выбрать все
$Жур.ТекущийДокумент КАК [Док $Документ],
	|	$Жур.ВидДокумента КАК Док_вид, 


И все прекрасно типизируется  Подмигивание
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #185 - 09. Сентября 2009 :: 15:16
Печать  
Вышла новая версия
1.03.005 (beta) от 09.09.09 г.
- Проедена работа по оптимизации и стабилизации ВТ БИОстатки и ВТ БИОборотыДтКт
- Добавлена ВТ БИОбороты

Файл брать в топике.  Подмигивание
  

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


1C++ rocks!

Сообщений: 53
Местоположение: Ульянвоск
Зарегистрирован: 25. Декабря 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #186 - 09. Сентября 2009 :: 18:34
Печать  
Спасибо за помощь и понимание, до меня что-то очень туго в последнее время это доходит. Пора нажать ресет  Смех
  
Наверх
ICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #187 - 10. Сентября 2009 :: 08:54
Печать  
В бух базе, если в конфигурации разделитель учета выключен, а в условиях к виртуальной таблицы БИОстатки написать что нибудь типа: РазделительУчета = :Фирма, то парсер превращает его в bkttl.SP = '     1   '.
Хорошо бы ругнуться, что мол, разделитель учета не включен, или (высший пилотаж) проигнорировать условие.
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #188 - 10. Сентября 2009 :: 09:23
Печать  
Оказывается, в классе нет оптимизации парсера.
Мне кажется логичным что преобразование текста запроса выполнять при при записи в свойство Текст текста запроса, а при вызове метода "Выполнить" запускать на выполнение уже готовый запрос.
Бывает, приходится выполнять одинаковые запросы в цикле - и каждый раз парсить тоже самое - нет смыла.

Вот мое видение оптимизации по повторным выполнениям (самое простое, вроде).

//Приложенный файл удален, как бредовыйУлыбка
« Последняя редакция: 10. Сентября 2009 :: 18:03 - classic »  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #189 - 10. Сентября 2009 :: 14:22
Печать  
Без оптимизации в моем случае вообще нет смысла использовать БИОстатки... Для примера - расчет таблицы партий, процедура глПолучитьОстаткиПартий из украинской типовой бухгалтерии, SQL база.
Штатно (но оптимизированная) она отрабатывает за 260-270 мс.
Переписанная на БИОстатки - 150-170. Это с оптимизацией, для повторного использования результатов парсинга. Без оптимизации - ровно столько же.
Процедурка же глРассчитатьСуммуПредварительнойОплаты (получить остаток по счету по заданным двум субконто) - штатная 90, БИОстатки - 150 Ужас. А если еще и парсером каждый раз прогонять - так вообще... Проигрыш штатному методу раза в четые.
Что-то тут не здесьУлыбка
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #190 - 10. Сентября 2009 :: 14:34
Печать  
Кстати если у тебя SQL то попробуй запрос через AccountsRecordset. Результаты (замеры, отладку и т.д. можно мне дать я буду думать). У меня есть отличия от данного класса, если у тов. berezdetsky все таки оптимальнее то буду переделывать.
Если конфа типовая то дай мне текст запроса... и процедурки полностью.
А вообще если конфа весит до 100-150 метров я ее реально могу выкачать откуда надо.

Покажи цикл который ты загоняешь по бух. итогам, где нужно подготовленный запрос.
Ведь ВТ строится исходя из параметров, и если они меняются то бесполезно это - заранее подготавливать.
Твою реализацию оптимизации я посмотрю Подмигивание
  

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


1C++ rocks!

Сообщений: 2
Зарегистрирован: 05. Сентября 2009
Re: Класс "ПрямойЗапрос"
Ответ #191 - 10. Сентября 2009 :: 17:56
Печать  
Установл новую версию прямого запроса 1.03.005. При попытке создать объект "ПрямойЗапрос" , получаю :
=== Syntax error в модуле 'КлассПрямойЗапрос@MD' (Обработка.КлассПрямойЗапрос.Форма.Модуль) 29543416
вирт<<?>>()._ВыброситьИскл(ТекстОшибки);
{Обработка.КлассПрямойЗапрос.Форма.Модуль(175)}: Процедура не обнаружена (вирт)

Накануне переустановил OpenConf.При установке проблем небыло.
Подскажите , плз, что я  у меня не так, куда смотреть?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #192 - 10. Сентября 2009 :: 17:59
Печать  
Версию 1С++ возьми 3.0.1.х, посмотри по истории когда появились функции вирт() и я().
Дело в них.  Подмигивание
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #193 - 10. Сентября 2009 :: 18:02
Печать  
vandalsvq писал(а) 10. Сентября 2009 :: 14:34:
Ведь ВТ строится исходя из параметров, и если они меняются то бесполезно это - заранее подготавливать.
Твою реализацию оптимизации я посмотрю Подмигивание

Не смотриПечаль, я взглянул внимательнее - там частное решение, которое чисто случайно сработало в моем случае, и больше нигде не подойдет.
  
Наверх
 
IP записан
 
Chernik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 05. Сентября 2009
Re: Класс "ПрямойЗапрос"
Ответ #194 - 10. Сентября 2009 :: 18:03
Печать  
Спасибо, ща посмотрел, таки да, стоит старая версия.  Смущённый
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 11 12 [13] 14 15 ... 60
ОтправитьПечать