Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) При устновке фильтра по реквизиту справочника в выборку не попадают группы (число прочтений - 4761 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #15 - 06. Октября 2011 :: 11:29
Печать  
val писал(а) 06. Октября 2011 :: 11:14:
(12) Навскидку 2 способа:
1. Формировать ТЗ стандартными способами 1С: ВыбратьЭлементы.
2. Комб. способ:
а) УложитьСписокОбъектов() - получаем список элеметов во врем. табл.
б) Select из врем табл - получаем список элеметов в ТЗ
в) добавляем в ТЗ родителей этих элементов станд.способами.
г) ВыполнитьSQL_ИзТЗ.

1-й способ, конечно, легче. Подмигивание



во втором способе ошибка когда папка не содержит еще элементов
а во времен таблице быть должна.

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #16 - 06. Октября 2011 :: 12:24
Печать  
val писал(а) 06. Октября 2011 :: 11:14:
(12) Навскидку 2 способа:
1. Формировать ТЗ стандартными способами 1С: ВыбратьЭлементы.
2. Комб. способ:
а) УложитьСписокОбъектов() - получаем список элеметов во врем. табл.
б) Select из врем табл - получаем список элеметов в ТЗ
в) добавляем в ТЗ родителей этих элементов станд.способами.
г) ВыполнитьSQL_ИзТЗ.

1-й способ, конечно, легче. Подмигивание

А теперь со всей этой фигнёй мы попытаемя взлететь. Круглые глаза Блин. Двумя строчками задача решается, без всяких ТЗ и прочих выбратьэлементов..  Подмигивание
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #17 - 06. Октября 2011 :: 12:49
Печать  
berezdetsky писал(а) 06. Октября 2011 :: 12:24:
val писал(а) 06. Октября 2011 :: 11:14:
(12) Навскидку 2 способа:
1. Формировать ТЗ стандартными способами 1С: ВыбратьЭлементы.
2. Комб. способ:
а) УложитьСписокОбъектов() - получаем список элеметов во врем. табл.
б) Select из врем табл - получаем список элеметов в ТЗ
в) добавляем в ТЗ родителей этих элементов станд.способами.
г) ВыполнитьSQL_ИзТЗ.

1-й способ, конечно, легче. Подмигивание

А теперь со всей этой фигнёй мы попытаемя взлететь. Круглые глаза Блин. Двумя строчками задача решается, без всяких ТЗ и прочих выбратьэлементов..  Подмигивание


То что у тебя делается в классе УложитьСписокГрупп все равно это работает на 1с.
мое предложение было сделать аналогичный (твоему методу из класса) метод УложитьСписокГрупп  внутри 1с++ .
тогда вся работа со списком будет выполняться на си++ и временная таблица будет формироваться быстрее и это будет как бы униврсальное решение и все им смогут пользоваться одинаково.

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #18 - 06. Октября 2011 :: 13:10
Печать  
Z1 писал(а) 06. Октября 2011 :: 12:49:
мое предложение было сделать

Ага. А до тебя было такое же предложение от Quan. DmitrO тогда красиво съехал с темы.  Класс Так что я уже не предлагал, а просто сделал.

Z1 писал(а) 06. Октября 2011 :: 12:49:
аналогичный (твоему методу из класса) метод УложитьСписокГрупп внутри 1с++
тогда вся работа со списком будет выполняться на си++ и временная таблица будет формироваться быстрее и это будет как бы униврсальное решение и все им смогут пользоваться одинаково.

В УложитьСписокГрупп, кстати, строк больше двух, но вся работа выполняется двумя запросами к серверу. А на счёт "быстрее" - основные затраты времени это сеть и работа сервера.
Такой же метод есть в qryConsole. Не 1C++, но и не 1C.  Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #19 - 06. Октября 2011 :: 13:21
Печать  
А. Орефков для 1sqlite тоже обещал сделать уложитьОбъекты с группами.. вроде
Подмигивание
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #20 - 06. Октября 2011 :: 13:32
Печать  
berezdetsky писал(а) 06. Октября 2011 :: 13:10:
Z1 писал(а) 06. Октября 2011 :: 12:49:
мое предложение было сделать

Ага. А до тебя было такое же предложение от Quan. DmitrO тогда красиво съехал с темы.  Класс Так что я уже не предлагал, а просто сделал.

Z1 писал(а) 06. Октября 2011 :: 12:49:
аналогичный (твоему методу из класса) метод УложитьСписокГрупп внутри 1с++
тогда вся работа со списком будет выполняться на си++ и временная таблица будет формироваться быстрее и это будет как бы униврсальное решение и все им смогут пользоваться одинаково.

В УложитьСписокГрупп, кстати, строк больше двух, но вся работа выполняется двумя запросами к серверу. А на счёт "быстрее" - основные затраты времени это сеть и работа сервера.
Такой же метод есть в qryConsole. Не 1C++, но и не 1C.  Улыбка

ну да я то же просто сделал даже где то есть пятью способами-
очень хорошая задача по освоению t-sql.
Конечно полностью ты тоже прав в том что основная скорость это
скорость сервера но если переписать твой(мой) или какой другой
этот метод из 1с на си (с одного языка программирования на другой) то тоже получим выигрыш и выигрыш будет тем больше чем больше в списке элементов.
можно кстати написать тест : в списке только элементы
вариант 1 укладываем во времен таблицу через стандартный УложитьСписокОбъектов
вариант 2 укладываем эту временную таблицу через 1с
и сравнить результат для 1 ,10,100, 1000 элементов(не папок)
в исходном списке.

ps значимость этого повышается для работы в терминале
потому, что производительность терминала это тоже ограниченный критический ресурс.

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #21 - 06. Октября 2011 :: 14:10
Печать  
Z1 писал(а) 06. Октября 2011 :: 13:32:
но если переписать твой(мой) или какой другой этот метод из 1с на си (с одного языка программирования на другой) то тоже получим выигрыш и выигрыш будет тем больше чем больше в списке элементов.
можно кстати написать тест : в списке только элементы
вариант 1 укладываем во времен таблицу через стандартный УложитьСписокОбъектов
вариант 2 укладываем эту временную таблицу через 1с
и сравнить результат для 1 ,10,100, 1000 элементов(не папок)
в исходном списке.

Если в последних версиях ничего не поменялось, УложитьСписокОбъектов укладывает каждое значение списка отдельным запросом..  Подмигивание
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #22 - 06. Октября 2011 :: 14:15
Печать  
berezdetsky писал(а) 06. Октября 2011 :: 14:10:
Z1 писал(а) 06. Октября 2011 :: 13:32:
но если переписать твой(мой) или какой другой этот метод из 1с на си (с одного языка программирования на другой) то тоже получим выигрыш и выигрыш будет тем больше чем больше в списке элементов.
можно кстати написать тест : в списке только элементы
вариант 1 укладываем во времен таблицу через стандартный УложитьСписокОбъектов
вариант 2 укладываем эту временную таблицу через 1с
и сравнить результат для 1 ,10,100, 1000 элементов(не папок)
в исходном списке.

Если в последних версиях ничего не поменялось, УложитьСписокОбъектов укладывает каждое значение списка отдельным запросом..  Подмигивание

а ты предлагаешь использовать union all
или возможность sql2008  в одном insert использовать список строк?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #23 - 06. Октября 2011 :: 14:22
Печать  
В AccountsRecordset - union all.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #24 - 06. Октября 2011 :: 14:31
Печать  
berezdetsky писал(а) 06. Октября 2011 :: 14:22:
В AccountsRecordset - union all.

ну вот и о том же что на основе знаний что есть сейчас можно улучшить 1с++.
Если написать новый метод ( а тот что есть сейчас вообще не менять ) то будет обратная  совместимость новой 1с++
с более ранними версиями.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #25 - 07. Октября 2011 :: 06:37
Печать  
вот кусочек функции из класса ТОтчет.Запрос:

Код
Выбрать все
ИмяВремТаблицы	= ИмяВременнойТаблицы();

ТекстЗапроса = "
|SELECT '" + РадугаСервис.ЗначениеВСтрокуБД(ЗначениеФильтра) + "' ID Into " + ИмяВремТаблицы + "
|
|While @@RowCount > 0
|INSERT INTO " + ИмяВремТаблицы + "
|SELECT
|	Спр.ID
|FROM
|	$Справочник." + ЗначениеФильтра.Вид() + " Спр (NoLock)
|WHERE
|	ParentID In (SELECT ID FROM " + ИмяВремТаблицы + " (NoLock))
|	And ID Not In (SELECT ID FROM " + ИмяВремТаблицы + " (NoLock))
|
|If (SELECT Count(*) From " + ИмяВремТаблицы + " (NoLock)) > 100
|	Create Clustered Index " + СтрЗаменить(ИмяВремТаблицы, "[#", "[#IX_") + " on " + ИмяВремТаблицы + " (ID)
 



в случае, если фильтр - это список элементов, то вместо первой строки - инсерты всех элементов списка.
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: При устновке фильтра по реквизиту справочника в выборку не попадают группы
Ответ #26 - 09. Октября 2011 :: 09:22
Печать  
Всем спасибо применение AccountsRecordset решило проблему
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать