Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6  ОтправитьПечать
Очень популярная тема (более 25 ответов) Можно ли ускорить процесс выборки (число прочтений - 13115 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Можно ли ускорить процесс выборки
Ответ #45 - 08. Сентября 2011 :: 08:51
Печать  
Вкини из текста запроса обращение к справочнику Номенклатура (ты из него только наименование достаешь, которое нафик там не нужно), оставь только запрос к справочнику Цены.

     
Код
Выбрать все
|SELECT
	|  СпрЦ.ID [Ссылка $Справочник.Цены],
	|  $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена,
	|  $ПоследнееЗначение.Цены.Единица(СпрЦ.ID, :ВыбДата) [Единица $Справочник.Единицы],
	|  $СпрЦ.Валюта [Валюта $Справочник.Валюты],
	|  $СпрЦ.Процент Процент,
	|  СпрЦ.IsMark Пометка
	|FROM
	|  $Справочник.Цены СпрЦ
	|WHERE
	|  СпрЦ.ParentExt  = :ВыбНом AND
	|				   $СпрЦ.ТипЦен = :ТипЦен 



Да и.. половину полей из этого запроса можно выкинуть (как и типизацию) - они тебе вообще нужны ?
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #46 - 08. Сентября 2011 :: 08:57
Печать  
Eprst писал(а) 08. Сентября 2011 :: 08:51:
Вкини из текста запроса обращение к справочнику Номенклатура (ты из него только наименование достаешь, которое нафик там не нужно), оставь только запрос к справочнику Цены.

     
Код
Выбрать все
|SELECT
	|  СпрЦ.ID [Ссылка $Справочник.Цены],
	|  $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена,
	|  $ПоследнееЗначение.Цены.Единица(СпрЦ.ID, :ВыбДата) [Единица $Справочник.Единицы],
	|  $СпрЦ.Валюта [Валюта $Справочник.Валюты],
	|  $СпрЦ.Процент Процент,
	|  СпрЦ.IsMark Пометка
	|FROM
	|  $Справочник.Цены СпрЦ
	|WHERE
	|  СпрЦ.ParentExt  = :ВыбНом AND
	|				   $СпрЦ.ТипЦен = :ТипЦен 



Да и.. половину полей из этого запроса можно выкинуть (как и типизацию) - они тебе вообще нужны ?

не могу выкинуть поля они используются дальше по тексту функции
На счет номенклатуры действительно зачем я ее сюда включил ))

Ускорение конечно не значительное, зато код лаконичнее ))
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #47 - 08. Сентября 2011 :: 09:12
Печать  
Ускорение продолжается.
Хочу эту часть кода переделать под прямой запрос.
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
	сТекстЗапроса = "
	|Период с ДатаВыгрузкиДанных по ДатаВыгрузкиДанных;
	|Фирма = Регистр.ОстаткиТМЦ.Фирма;
	|Склад = Регистр.ОстаткиТМЦ.Склад;
	|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
	|Количество = Регистр.ОстаткиТМЦ.Количество;
	|Группировка Номенклатура;
	|Функция КонечныйОстаток = КонОст(Количество);
	|Условие(Фирма = спрФирма);
	|Условие(Склад = спрСклад);
	|";
	пРезультат = Запрос.Выполнить(сТекстЗапроса);
	Если пРезультат = 0 Тогда
		Сообщить("Запрос по остаткам не был выполнен! Выгрузка данных не возможна!");
		ОтчетОПроведении = ОтчетОПроведении + РазделительСтрок + "Выгрузка товаров ... Ошибка!";
		Возврат;
	Иначе
		тФайл = СоздатьОбъект("Текст");
		тФайл.ДобавитьСтроку("##@@&&");//Строка инициализации файла
		тФайл.ДобавитьСтроку("#");//Флаг того обработан ли файл
		тФайл.ДобавитьСтроку("$$$DELETEALLWARES");//Удалим все товары
		тФайл.ДобавитьСтроку("$$$REPLACEQUANTITY");//Начинаем добавлять товары и групппы товаров
		КоличествоУровней = Метаданные.Справочник("Номенклатура").КоличествоУровней;
		Для Индекс = 1 По КоличествоУровней Цикл
			Запрос.ВНачалоВыборки();
			Пока Запрос.Группировка("Номенклатура") = 1 Цикл
				Если Запрос.Номенклатура.Уровень() = Индекс Тогда
					тФайл.ДобавитьСтроку(СтрокаНоменклатуры(Запрос));
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		Запрос.Выгрузить(тзНоменклатура);//Выгрузим номенклатуру в таблицу значений
	КонецЕсли;
 



В связи с этим вопрос ...
при каких условиях я могу получить данные в индексированную таблицу и есть ли метод получать данные в разрезе группировок ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Можно ли ускорить процесс выборки
Ответ #48 - 08. Сентября 2011 :: 09:16
Печать  
ВыполнитьИнстукцию спокойно выгружает запрос в индексированную тз, смотри параметры метода.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #49 - 08. Сентября 2011 :: 09:28
Печать  
Eprst писал(а) 08. Сентября 2011 :: 09:16:
ВыполнитьИнстукцию спокойно выгружает запрос в индексированную тз, смотри параметры метода.

Извиняюсь за тупой вопрос, но по индексированной таблице каким образом можно сделать обход по группировкам ?
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #50 - 08. Сентября 2011 :: 09:39
Печать  
Если это выгрузка на кассу в формате АТОЛ, то делается немного по-другому.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Можно ли ускорить процесс выборки
Ответ #51 - 08. Сентября 2011 :: 09:47
Печать  
mozer писал(а) 08. Сентября 2011 :: 09:28:
Eprst писал(а) 08. Сентября 2011 :: 09:16:
ВыполнитьИнстукцию спокойно выгружает запрос в индексированную тз, смотри параметры метода.

Извиняюсь за тупой вопрос, но по индексированной таблице каким образом можно сделать обход по группировкам ?


сгруппировать разве что.

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #52 - 08. Сентября 2011 :: 09:57
Печать  
vinogradoff писал(а) 08. Сентября 2011 :: 09:39:
Если это выгрузка на кассу в формате АТОЛ, то делается немного по-другому.


Как ?
Только учти у меня уже все настроено давно томозит только этот момент
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #53 - 08. Сентября 2011 :: 10:00
Печать  
Eprst писал(а) 08. Сентября 2011 :: 09:47:
mozer писал(а) 08. Сентября 2011 :: 09:28:
Eprst писал(а) 08. Сентября 2011 :: 09:16:
ВыполнитьИнстукцию спокойно выгружает запрос в индексированную тз, смотри параметры метода.

Извиняюсь за тупой вопрос, но по индексированной таблице каким образом можно сделать обход по группировкам ?


сгруппировать разве что.


Сгруппировать это понятно, как обойти группировки например как в стандартном запросе 1С?
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #54 - 08. Сентября 2011 :: 10:06
Печать  
параметры 16,17 если Frontol и 16,17,18 если РМК
Выбираешь товары с остатками + их группы + коды родительских групп в один список и заполняешь соответствующие параметры
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #55 - 08. Сентября 2011 :: 10:29
Печать  
vinogradoff писал(а) 08. Сентября 2011 :: 10:06:
параметры 16,17 если Frontol и 16,17,18 если РМК
Выбираешь товары с остатками + их группы + коды родительских групп в один список и заполняешь соответствующие параметры

так так и хочу сделать только на прямом запросе и индексированной таблице с группировкой по уровню.
дальше тормоза идут в преобразовании занчения
Код
Выбрать все
сНоменклатура = СокрЛП(Строка(Число(СтрокаЗапроса.Номенклатура.Код))) + ";" +  //1 Код
 



поэтому преобразование хочу вынести на сервер через cast

Вопрос только ка обойти индексированную таблицу по группировкам ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Можно ли ускорить процесс выборки
Ответ #56 - 08. Сентября 2011 :: 10:32
Печать  
сгруппируй и обходи рекурсивно
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #57 - 08. Сентября 2011 :: 10:34
Печать  
С какой целью делать группировки по уровню? Остатки на группы РМК/Frontol не поддерживают. Если им выдать список товаров с группами и кодами их родителей (пустое значение если элемент верхнего уровня), то РМК/Frontol сами построят иерархию справочника.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #58 - 08. Сентября 2011 :: 10:38
Печать  
vinogradoff писал(а) 08. Сентября 2011 :: 10:34:
С какой целью делать группировки по уровню? Остатки на группы РМК/Frontol не поддерживают. Если им выдать список товаров с группами и кодами их родителей (пустое значение если элемент верхнего уровня), то РМК/Frontol сами построят иерархию справочника.

Для того что бы выстроить иерархию ту которая по остаткам.
если например нет товара из этой группы то и выгружать его незачем, а порядок уровня соблюдать нужно потому как если при загрузке будет ошибку выдавать если нет такой группы в справочнике фронтол. (Например если полностью замену делаешь) так как в файле ты указываешь код родителя и этот родитель уже должен существовать
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #59 - 08. Сентября 2011 :: 10:39
Печать  
Eprst писал(а) 08. Сентября 2011 :: 10:32:
сгруппируй и обходи рекурсивно

хоть убей не вижу метода обхода или как то по хитрому там делается ? (не материть с индексированной таблицей не работал!)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 
ОтправитьПечать