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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Можно ли ускорить процесс выборки
Ответ #60 - 08. Сентября 2011 :: 10:41
Печать  
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group

потом обходишь в рекурсивной функции свой тз, подсовывая ТЗПОтомки в качестве аргумента функции для прыганья унутрь группировки.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #61 - 08. Сентября 2011 :: 10:43
Печать  
Код
Выбрать все
...
ИтТз = Запрос.Выполнить("ИндексированнаяТаблица",ТекстЗапроса);

ВывестиСтрокиИтТз(ИтТз);
...


Процедура ВывестиСтрокиИтТз(ИсхТз)
 ИсхТз.ВыбратьСтроки();
 Пока ИсхТз.ПолучитьСтроку()=1 Цикл
   //Вывод первой группировки
   Если ПустоеЗначение(ИсхТз.тзПотомки)=0 Тогда
	  ВывестиСтрокиИтТз(ИсхТз.тзПотомки);
   КонецЕсли;
КонецПроцедуры 

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #62 - 08. Сентября 2011 :: 10:46
Печать  
Eprst писал(а) 08. Сентября 2011 :: 10:41:
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group

потом обходишь в рекурсивной функции свой тз, подсовывая ТЗПОтомки в качестве аргумента функции для прыганья унутрь группировки.


leshik писал(а) 08. Сентября 2011 :: 10:43:
Код
Выбрать все
...
ИтТз = Запрос.Выполнить("ИндексированнаяТаблица",ТекстЗапроса);

ВывестиСтрокиИтТз(ИтТз);
...


Процедура ВывестиСтрокиИтТз(ИсхТз)
 ИсхТз.ВыбратьСтроки();
 Пока ИсхТз.ПолучитьСтроку()=1 Цикл
   //Вывод первой группировки
   Если ПустоеЗначение(ИсхТз.тзПотомки)=0 Тогда
	  ВывестиСтрокиИтТз(ИсхТз.тзПотомки);
   КонецЕсли;
КонецПроцедуры 



Понял спасибо пошел "Курить"
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



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

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


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


1C++ rocks!

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

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


1. Сортировка при формировании файла: сначала группы, отсортированные по уровню (от верхнего вниз), затем товары (гарантировано, что родитель будет создан).
2. Выбирать товары с ненулевым остатком и присоединять к ним их группы (получите только нужные группы).


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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #65 - 08. Сентября 2011 :: 12:07
Печать  
Вот на какую проблему при написании запроса наткнулся ...
выбираю остатки из регистра остатков, соответственно он мне выдаст всю номенклатуру по которой есть остаток. Соединив его с таблицей справочника номенклатуры получу родителя этой номенклатуры.
Но как в запросе получить все верхние группы номенклатуры ??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



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


1C++ rocks!

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

не в таблице а в запросе ...
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #68 - 08. Сентября 2011 :: 12:59
Печать  
левые соединения к parentid столько раз сколько уровней в справочнике
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #69 - 08. Сентября 2011 :: 16:01
Печать  
vinogradoff писал(а) 08. Сентября 2011 :: 12:59:
левые соединения к parentid столько раз сколько уровней в справочнике

А более универсальный способ существует ?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #70 - 08. Сентября 2011 :: 17:25
Печать  
  
Наверх
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #71 - 09. Сентября 2011 :: 02:40
Печать  
leshik писал(а) 08. Сентября 2011 :: 17:25:

Ага спасибо нашел похожий пример в MSDN уже начал писать даже )
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #73 - 09. Сентября 2011 :: 06:34
Печать  
Чем можно отбросить лишние пробелы в запросе
Код
Выбрать все
CAST(CAST(СпрНом.Code as INT) as CHAR) Код
 


возвращает например:
"20064                         "
Хотелось бы пробелы убрать, что бы не пользоватся стандартной функцией СокрЛП()
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Можно ли ускорить процесс выборки
Ответ #74 - 09. Сентября 2011 :: 07:55
Печать  
rtrim
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 
ОтправитьПечать