Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Медленный (не быстрый) поиск по Табличному Полю (число прочтений - 4447 )
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Медленный (не быстрый) поиск по Табличному Полю
23. Января 2009 :: 10:50
Печать  
В любой форме 1С есть поиск - написал то что хочется в окошке нажал бинокль и он ищет по произвольному полю. В ТП эта вещь по понятным причинам не работает. Может кто то уже делал замену?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #1 - 27. Января 2009 :: 05:11
Печать  
Кстати хороший вопрос, счас сам над этим периодически думаю

Мысли в слух....
При нажатии кнопки Ctrl+F3
1. Колонка - СписокЗначений - Строка - СписокЗначений - ВТ 1sqlite или ODBC... условие like или как надо еще. Но блин сколько лишних движений. Да и пока конкретно делать не начну наверное не узнаю какие подводные камни есть такой реализации. Ну конечно еще отдельная обработка для вывода пользователю "а что он ищет"...
2. Колонка - СписокЗначений - Строка - Строка с разделителями строк - svcsvc.service - и пусть сам набирает, а полученную строку по номеру ну почти номер строки табличного поля. Опять таки подводные камни неизвестны...
Ну вот выбирай, а я пока решения не придумал. Но думаю над ним... скорее всего сделаю в "ПриБыстромПоиске" более расширенный варианрт (не только по первым символам) + в отдельной обработке поиск по подстроке вверх или вниз по списку... но пока времени в обрез.  Круглые глаза
Да и с технологией надо бы определиться.
Может у кого тут на самом деле есть решение именно для ТП?
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #2 - 28. Января 2009 :: 09:29
Печать  
Честно говоря ничего не понял что ты сказал. Что такое вообще номер строки табличного поля, разве такое есть? (провайдер mssql)

И что значит Колонка-СписокЗначений?

Пока я вижу только фильтр таблицы по набранному условию.

Расскажите я правильно думаю что при изменении фильтра надо менять запрос таблицы и обновлять строки или на самом деле это делается более красиво через, например, параметры?

  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #3 - 28. Января 2009 :: 11:44
Печать  
yudin писал(а) 28. Января 2009 :: 09:29:
Честно говоря ничего не понял что ты сказал. Что такое вообще номер строки табличного поля, разве такое есть? (провайдер mssql)

И что значит Колонка-СписокЗначений?

Пока я вижу только фильтр таблицы по набранному условию.

Расскажите я правильно думаю что при изменении фильтра надо менять запрос таблицы и обновлять строки или на самом деле это делается более красиво через, например, параметры?


Ну про поставщика ты ничего не сказал Улыбка... или я "просчитался".

Вот тогда действительно интересно подумать надо. Мне почему то подумалось что ты говоришь о поставщике ИТЗ или ТЗ. Для них то я и говорил что по имени колонки выгружаешь ее в СписокЗначений, а далее по тексту.
А с учетом того что у тебя SQL... хм... я подумаю может будут идеи. У меня до сих пор ни одной реализации где поставщик данных именно запрос просто нет, в виду этого я почти с ним не знаком.

Ушел думать.  Смущённый
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #4 - 28. Января 2009 :: 11:51
Печать  
ТЗ это конечно просто, но вот представь ты делаешь например журнал документов, не обновлять же ее в обработке ожидания...
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #5 - 28. Января 2009 :: 17:56
Печать  
yudin писал(а) 28. Января 2009 :: 11:51:
ТЗ это конечно просто, но вот представь ты делаешь например журнал документов, не обновлять же ее в обработке ожидания...


А разница существенна между поставщиком SQL и SQL-ТЗ(ИТЗ)...
я честно не знаю, не пробовал Улыбка

вот одним глупым высказыванием стало меньше  Очень довольный
« Последняя редакция: 05. Февраля 2009 :: 12:35 - vandalsvq »  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #6 - 10. Февраля 2009 :: 11:32
Печать  
Что такое

Свойство ТекущаяСтрока табличного поля:

       * принимает значение идентифицирующего поля в случае, когда идентифицирующее поле было определено методом УстИДПоле.
       * в случае если идентифицирующее поле не было определено - то свойство ТекущаяСтрока при чтении будет возвращать значение неопределенного типа. При записи в это свойство допустимо передавать объект, в свойствах которого будут значения для ключа порядка текущей строки.

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

Как этим пользоваться в стиле "например"?

Ведь в этом случае вопрос топика решается очень даже просто...
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #7 - 11. Февраля 2009 :: 03:54
Печать  
yudin писал(а) 10. Февраля 2009 :: 11:32:
Что такое

Свойство ТекущаяСтрока табличного поля:

       * принимает значение идентифицирующего поля в случае, когда идентифицирующее поле было определено методом УстИДПоле.
       * в случае если идентифицирующее поле не было определено - то свойство ТекущаяСтрока при чтении будет возвращать значение неопределенного типа. При записи в это свойство допустимо передавать объект, в свойствах которого будут значения для ключа порядка текущей строки.

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

Как этим пользоваться в стиле "например"?

Ведь в этом случае вопрос топика решается очень даже просто...


В общем как я это сделал Улыбка

1. Текущая строка... у меня ИДПоле - это ТекущийЭлемент (ID AS [ТекущийЭлемент $Справочник.Какойто])...
При нажатии пользователем F3 я открываю ему форму аля 8-ка (поле для поиска), только одно но... типизация по текущей колонке и баста... никаких поисков по подстроке (париться не охото), после чего строю запрос вроде
SELECT
ID [ТекущийЭлемент $Справочник.Какойто]
FROM
$Справочник.Какойто
WHERE
КакаятоКолонка = Значение (для строки это SUBSTR(...,1,КолСимволов) = Значение)...
ну после этого добавляю все условия уже наложенные на выборку, прогоняю обычным ODBC получаю результат в ИТЗ и ее уже на всякий пожарный держу в памяти, а вдруг пользователь по этой же колонке побежит. Конечно для больших объемов мое решение очень затратно, но на справочнике в пару тысяч работает на ура...
Хотя повторюсь. я не считаю это лучшим из решений. На мой взгляд лучшим было бы отдать все запросу (в т.ч. и поиск следующего), т.к. наверняка это было бы быстрее. Но времени счас делать нет к сожалению
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #8 - 11. Февраля 2009 :: 06:47
Печать  
Не совсем понял что ты имел в виду. Как сделать поиск - это и так понятно - вот предположим я нашел нужное мне значение, получил значение уникального ключа, удовлетворяющего условию поиска - как теперь спозиционироваться в табличном поле на нужную строку?
Типа ТабличноеПоле.ТекущаяСтрока=

Вот чему она должна быть равна, чтобы табличное поле переключилось на строку?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #9 - 11. Февраля 2009 :: 08:22
Печать  
yudin писал(а) 11. Февраля 2009 :: 06:47:
Не совсем понял что ты имел в виду. Как сделать поиск - это и так понятно - вот предположим я нашел нужное мне значение, получил значение уникального ключа, удовлетворяющего условию поиска - как теперь спозиционироваться в табличном поле на нужную строку?
Типа ТабличноеПоле.ТекущаяСтрока=

Вот чему она должна быть равна, чтобы табличное поле переключилось на строку?


В общем УстИДПоле() - это то что будет возвращаться и устанавливаться в качестве ТекущаяСтрока. И оно должно быть (!!!) уникально. Для справочника я выбрал ТекущийЭлемент, т.к. он всегда уникален.
И вот в запросе я нахожу следующий элемент удовлетворяющий условиям и пишу
ТабличноеПоле.ТекущаяСтрока = СледующийЭлемент;
и ТипВид значения должен быть одинаковым.
Т.е. сделал ты УстИДПоле("ID"), а в запросе написал "ID AS ID", то и присваивать должен именно ID (внутренне представление). А в моем примере у меня типизированное поле и присваиваю я ему значение именно элемента.
Ну если я понятно выражаюсь  Подмигивание
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #10 - 11. Февраля 2009 :: 08:51
Печать  
А можно я тебя поцелую?

Если есть такие же жирафы как я то вот по русски.

Предположим у нас есть уникальное поле ID
Во время создания ТП, пишем:

Источник.УстИДПоле("date_time_iddoc");
ТабличноеПоле.ПоставщикДанных=Источник;      

Потом, допустим мы отдельным запросом узнали нужный нам ID, и надо туда спозиционироваться:
ТабличноеПоле.ТекущаяСТрока=ИД;
Где ИД - есть строка.

Естественно это может быть не только строка, все что угодно.

vandalsvq, можно я тебя еще раз поцелую?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #11 - 11. Февраля 2009 :: 11:23
Печать  
Цитата:
vandalsvq, можно я тебя еще раз поцелую?

Поцелуй лучше DmitrO и kms.
Только не yudin'ым поцелуем Смех
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #12 - 11. Февраля 2009 :: 11:33
Печать  
yudin писал(а) 11. Февраля 2009 :: 08:51:
vandalsvq, можно я тебя еще раз поцелую?


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

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Медленный (не быстрый) поиск по Табличному Полю
Ответ #13 - 13. Февраля 2009 :: 10:48
Печать  
Сделал поиск, без типизации - по подстроке, с поиском назад и вперед. Без выгрузки всех значений и т.п. Получилось. Не универсально, но быстро. Если интересно - см приложенный файл.



  

________________________001.ert ( 212 KB | Загрузки )

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать