Переключение на Главную Страницу Страницы: 1 ... 16 17 [18] 19 20 ... 60 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" (число прочтений - 304900 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #255 - 01. Октября 2009 :: 03:23
Печать  
Вышла новая версия. Незначительный такой багофикс некоторых неточностей при расчете границ сбора данных ВТ РегистрОстатки, РегистрОбороты связанных с получением данных на дату > ТА.
  

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #256 - 02. Октября 2009 :: 13:51
Печать  
неточности в документации:
Раздел описания таблицы "СсылкиДокументов"
В описании поля "ДокументРодитель" приведен некорректный пример типизации. В таком виде
Код
Выбрать все
СРЕД($Ссылки.ДокументРодитель,7,9) КАК [Документ $Документ] 


он не работает, поскольку отсекается идентификатор вида, а в таком
Код
Выбрать все
СРЕД($Ссылки.ДокументРодитель,3,13) КАК [Документ $Документ] 


работает

и еще, зачем было делать 2 псевдонима "ДокументРодитель" и "ЗначениеОтбора" на одно и то же поле PARENTVAL. Я так понимаю что идея заключалась в том, что в зависимости от выбранного псевдонима должны отбираться либо только документы, либо только значения отбора, но на самом деле состав выборки одинаков в обоих случаях, на DBF по крайней мере.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #257 - 02. Октября 2009 :: 15:54
Печать  
Uncle писал(а) 02. Октября 2009 :: 13:51:
неточности в документации:
Раздел описания таблицы "СсылкиДокументов"
В описании поля "ДокументРодитель" приведен некорректный пример типизации.


Замечание принято. Исправим Подмигивание Спасибо.

Uncle писал(а) 02. Октября 2009 :: 13:51:
и еще, зачем было делать 2 псевдонима "ДокументРодитель" и "ЗначениеОтбора" на одно и то же поле PARENTVAL. Я так понимаю что идея заключалась в том, что в зависимости от выбранного псевдонима должны отбираться либо только документы, либо только значения отбора, но на самом деле состав выборки одинаков в обоих случаях, на DBF по крайней мере.

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

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


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #258 - 05. Октября 2009 :: 08:39
Печать  
Получаю остатки на документ, при этом:
Код
Выбрать все
SELECT
Рег.ФизЛицо AS [ФизЛицо $Справочник.ФизЛица],
Рег.СуммаРубОстаток AS СуммаРуб
FROM
(
	SELECT
		ФизЛицо
		,SUM(СуммаРубОстаток) AS СуммаРубОстаток

	FROM
		(SELECT
			rg_10073.sp10075 AS ФизЛицо
			,rg_10073.sp10080 AS СуммаРубОстаток

		FROM
			RG10073 AS rg_10073 (nolock)
		WHERE
			rg_10073.PERIOD = '20090801'
		AND
			((rg_10073.sp10074 = '     5001') AND (rg_10073.sp10075 IN (SELECT Val FROM Список)))

		UNION ALL

		SELECT
			ra_10073.sp10075
			,CASE WHEN ra_10073.debkred = 0 THEN ra_10073.sp10080 ELSE -ra_10073.sp10080 END

		FROM
			Журнал AS docjourn (nolock)
		LEFT JOIN RA10073 AS ra_10073 (nolock)
		ON ra_10073.IDDOC = docjourn.IDDOC
		WHERE (docjourn.DATE_TIME_IDDOC >= '20090901     0     0   ')
		AND (docjourn.DATE_TIME_IDDOC < '200909027WYP9S  BIL5001')
		AND
			((ra_10073.sp10074 = '     5001') AND (ra_10073.sp10075 IN (SELECT Val FROM Список)))
		) AS vt_ra_10073
	GROUP BY
		ФизЛицо
	HAVING (SUM(СуммаРубОстаток) <> 0)

) as Рег
ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=) : State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Журнал'.
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{C:\1sbases\Copy copy\ПрямойЗапрос.ert(6765) }

ТЗ = Запрос.Выполнить();
{Документ.НачислениеЗарплаты.Форма.Модуль(338)}: ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=) : State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Журнал'.
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{C:\1sbases\Copy copy\ПрямойЗапрос.ert(6765) } 


Запрос.УстановитьТекстовыйПараметр("ВыбДата",ТекущийДокумент())
В чём здесь дело?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #259 - 05. Октября 2009 :: 08:41
Печать  
Код
Выбрать все
	ТекстЗапроса = "Выбрать
		|Рег.ФизЛицо Как [ФизЛицо $Справочник.ФизЛица],
		|Рег.СуммаРубОстаток Как СуммаРуб
		|Из
		|$РегистрОстатки.Зарплата("+?((СравнитьТА()<>0) и (Выбран()<>0),":ВыбДата","")+",
		|				((Фирма = :ВыбФирма) и (ФизЛицо В (Выбрать Val Из Список))),
	  |				(ФизЛицо), (СуммаРуб)) as Рег
		|";   


Сам текст запроса                        
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #260 - 05. Октября 2009 :: 08:48
Печать  
al_zzz писал(а) 05. Октября 2009 :: 08:39:
Получаю остатки на документ, при этом:
....................
{Документ.НачислениеЗарплаты.Форма.Модуль(338)}: ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=) : State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Журнал'.
В чём здесь дело?


Читай пред. страницу, если лень можешь просто обновить класс
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #261 - 05. Октября 2009 :: 10:02
Печать  
Спасибо, разобрался!
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #262 - 06. Октября 2009 :: 06:44
Печать  
$БИОборотыДтКт - Парсер оствляет лишнюю скобку в конце развернутого запроса. Мне пришлось изменить строку 7943, записать ее в таком виде:
Код
Выбрать все
Возврат "(" + РазделительСтрок + ТекстЗапроса + РазделительСтрок; 


В таком виде виртуальная таблица работает (еще не проверил, правильно лиУлыбка )
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #263 - 06. Октября 2009 :: 06:53
Печать  
classic писал(а) 06. Октября 2009 :: 06:44:
$БИОборотыДтКт - Парсер оствляет лишнюю скобку в конце развернутого запроса.

Может ты все таки неправильно текст запроса написал. Уж такие вещи как скобки у меня на тестах сразу валятся. Так что я уверен что должно работать, если вдруг не полтергейст какой.
Покажешь исходный?
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #264 - 06. Октября 2009 :: 08:50
Печать  
И запроса как такового еще написать не успелУлыбка
Код
Выбрать все
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|*
	|ИЗ $БИОборотыДтКт.Основной(
	|:НачДата, :КонДата~,
	|,
	|,
	|,
	|#СчетаКт,
	|,
	|Сумма,
	|,
	|) КАК Запрос
	|
	|
	|";
 

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


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #265 - 06. Октября 2009 :: 08:59
Печать  
Подскажите темному пытаюсь получить остатки по регистру, все считает только медленней чем стандартный режим минимум в два раза...... База DBF

Код
Выбрать все
	ВремяНачалаБыстр = _GetPerformanceCounter();
	ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
	ПрямойЗапрос.РежимОтладки = 1;
	ПрямойЗапрос.БухгалтерскийУчет = 0;

	ПрямойЗапрос.Текст = "ВЫБРАТЬ
	|Материал КАК [Материал $Справочник.Материалы],
	|Партия КАК [Партия $Справочник.Партии],
	|Склад КАК [Склад $Справочник.МестаХранения],
	|Мол КАК [Мол $Справочник.Сотрудники],
	|КоличествоОстаток КАК Количество,
	|СтоимостьОстаток КАК Стоимость
	|ИЗ оличество,Стоимость)) КАК Остатки";

	ПрямойЗапрос.УстановитьТекстовыйПараметр("КонДата",ДатаЗапроса);
	ПрямойЗапрос.РежимОтладки=0;
	//ПрямойЗапрос.ОперативныйУчет=1;
	//ПрямойЗапрос.ПодготовитьТекстЗапроса();
	ПрямойЗапрос.Выполнить().Выгрузить(ТЗ);
	ВремяКонцаБыстр = _GetPerformanceCounter();
	ВремяНачалаОбычн = _GetPerformanceCounter();
	Рег=СоздатьОбъект("Регистр.ПартииНаличиеМатериалов");
	Рег.ВременныйРасчет( 1);
	РассчитатьРегистрыНа(ДатаЗапроса);
	Рег.ВыгрузитьИтоги(ТЗ1);
	ВремяКонцаОбычн = _GetPerformanceCounter();
	Сообщить("Быстр "+Строка(ВремяКонцаБыстр-ВремяНачалаБыстр)+" Обычн "+Строка(ВремяКонцаОбычн-ВремяНачалаОбычн)); 

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


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Класс "ПрямойЗапрос"
Ответ #266 - 06. Октября 2009 :: 12:21
Печать  
Неточность в документации:
в описании таблицы ЖурналДокументов для поля "Проведен" указан некорректный пример
Код
Выбрать все
Пример: $Жур.ПометкаУдаления КАК ПометкаУдаления 

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #267 - 06. Октября 2009 :: 16:12
Печать  
Boris_1c писал(а) 06. Октября 2009 :: 08:59:
Подскажите темному пытаюсь получить остатки по регистру, все считает только медленней чем стандартный режим минимум в два раза...... База DBF


Ты знаешь вроде ничего необычного в запросе нет, вроде все путем, странно конечно. Чтобы в два раза медленнее  Нерешительный... у меня если и было плохо то никак не медленнее, в ровень да, а медленнее. Можешь базу дать? Или тяжелая?

Uncle писал(а) 06. Октября 2009 :: 12:21:
Неточность в документации:
в описании таблицы ЖурналДокументов для поля "Проведен" указан некорректный пример


Исправим Подмигивание
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос"
Ответ #268 - 06. Октября 2009 :: 17:23
Печать  
classic писал(а) 06. Октября 2009 :: 08:50:
И запроса как такового еще написать не успелУлыбка

Неее... как раз "написать" ты успел...
Вот давай посчитаем:
1. НачалоПериода (1 зпт)
2. КонецПериода (2 зпт)
3. Периодичность (3 зпт)
4. СчетДт (4 зпт)
5. СубконтоДт (5 зпт)
6. СчетКт (6 зпт)
7. СубконтоКт (7 зпт)
8. ВидРесурсов (8 зпт)
9. ДопольнительноеУсловие (без зпт)
ИТОГО: в ВТ должно быть максимум 8 зпт... у тебя в тексте я насчитал 9...  исправь попробуй вновь на "оригинальном" КОП Подмигивание
  

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


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: Класс "ПрямойЗапрос"
Ответ #269 - 07. Октября 2009 :: 05:57
Печать  
vandalsvq писал(а) 06. Октября 2009 :: 16:12:
Boris_1c писал(а) 06. Октября 2009 :: 08:59:
Подскажите темному пытаюсь получить остатки по регистру, все считает только медленней чем стандартный режим минимум в два раза...... База DBF


Ты знаешь вроде ничего необычного в запросе нет, вроде все путем, странно конечно. Чтобы в два раза медленнее  Нерешительный... у меня если и было плохо то никак не медленнее, в ровень да, а медленнее. Можешь базу дать? Или тяжелая?


База 200 метров в архиве... что можно проверить...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 16 17 [18] 19 20 ... 60
ОтправитьПечать