|
v7: 1cpp. Всегда искать с начала в табличном поле | ☑ | ||
---|---|---|---|---|
0
DGorgoN
26.05.14
✎
08:50
|
Когда делаешь поиск по подстроке, то если значение не нашлось то ТП предлагает поиск с начала. Как сделать что-бы поиск начинался всегда с самой верхней строки?
|
|||
1
trad
26.05.14
✎
08:58
|
попробуй в событии ПриПоиске спозиционироваться на начало
|
|||
2
DGorgoN
26.05.14
✎
09:04
|
(1) Следующий вопрос - как установить в начало? Такого метода не нашел (
|
|||
3
DGorgoN
26.05.14
✎
09:06
|
Процедура ТабличноеПолеМногострочнойЧастиПриНачалеБыстрогоПоиска(ТабПоле, чФСО)
ТабПоле.ТекущаяСтрока = 1; КонецПроцедуры Ничего не дало ( |
|||
4
Ёпрст
26.05.14
✎
09:07
|
(3) nbg ,eltn yt xbckj
|
|||
5
trad
26.05.14
✎
09:08
|
(2) если поставщикТЗ, то ТекущаяСтрока=1
если поставщикODBC, выполняешь запрос, аналогичный запросу поставщика с top 1. Значение идПоля тоже в ТекСтроку |
|||
6
trad
26.05.14
✎
09:10
|
(3) так все таки Быстрый поиск или просто Поиск?
|
|||
7
DGorgoN
26.05.14
✎
09:11
|
ПоставщикДанныхМногострочнаяЧасть.ТекущаяСтрока = 1;
{C:\СДЕЛАТЬ\ЕМАЕ\СПР ЭКСП ПОДБОР.ERT(353)}: Поле агрегатного объекта не обнаружено (ТекущаяСтрока) |
|||
8
DGorgoN
26.05.14
✎
09:12
|
(6) Поиск. В общем открываешь обработку с ТП, в ТП сразу набираешь искомую строку, допустим Артикул в справочнике номенклатура. Если искомый артикул не найден то предлагает (диалог выскакивает) начать с начала.
Как заставить всегда искать с начала? |
|||
9
trad
26.05.14
✎
09:13
|
ТекущаяСтрока свойство ТП, а не поставщика
|
|||
10
DGorgoN
26.05.14
✎
09:14
|
Процедура ТабличноеПолеМногострочнойЧастиПриНачалеБыстрогоПоиска(ТабПоле, чФСО)
ТабПоле.ТекущаяСтрока = 1; - на работает Это тоже не работает ДанныеСправочник = ПоставщикДанныхМногострочнаяЧасть.Данные; ДанныеСправочник.КнопкаПросмотр = 1; ДанныеСправочник.СоздатьКнопкиПоУмолчанию(); ДанныеСправочник.РежимВыбора = 1; ТабличноеПоле = ДанныеСправочник.ТабличноеПоле; ТабличноеПоле.ТекущаяСтрока = 1; КонецПроцедуры |
|||
11
DGorgoN
26.05.14
✎
09:16
|
(4) "nbg ,eltn yt xbckj"
тбй ,уден не число ? |
|||
12
Ёпрст
26.05.14
✎
09:16
|
(10) ТекущаяСтрока - это не число, а элемент справочника у тебя. Нужно лепить скалярный запрос с топ 1 для его поиска.
|
|||
13
DGorgoN
26.05.14
✎
09:17
|
(12) Вот тут я и попал - у меня просто поставщик данных стандартный:
Процедура ИнициализацияМногострочнойЧасти() ПоставщикДанныхМногострочнаяЧасть = СоздатьОбъект("ПоставщикДанных"); ПоставщикДанныхМногострочнаяЧасть.ТипЗначений = "Справочник.Номенклатура"; ПоставщикДанныхМногострочнаяЧасть.КонтейнерТабличногоПоля = "ТабличноеПолеМногострочнойЧасти"; ПоставщикДанныхМногострочнаяЧасть.КонтейнерКоманднойПанели = "КоманднаяПанельМногострочнойЧасти"; //ПоставщикДанныхМногострочнаяЧасть.РежимВыбора = 1; ДанныеСправочник = ПоставщикДанныхМногострочнаяЧасть.Данные; ДанныеСправочник.КнопкаПросмотр = 1; ДанныеСправочник.СоздатьКнопкиПоУмолчанию(); ДанныеСправочник.РежимВыбора = 1; //ДанныеСправочник.СтандартныйБыстрыйПоиск = 0; ТабличноеПоле = ДанныеСправочник.ТабличноеПоле; ТабличноеПоле.СтильЗаголовков = 1; ТабличноеПоле.СтильРамки = 1; |
|||
14
trad
26.05.14
✎
09:19
|
(12) похоже, это не чистое ТП, а КОП "ПоставщикДанных"
http://www.1cpp.ru/forum/YaBB.pl?num=1285520767 |
|||
15
DGorgoN
26.05.14
✎
09:19
|
(12)
Сам = Сам(Контекст); Сам.ТекущаяСтрока = ЗапросСКЛ.ВыполнитьСкалярный(ТекстЗапроса); Типа того? |
|||
16
trad
26.05.14
✎
09:20
|
(14) + ну, так и есть
|
|||
17
DGorgoN
26.05.14
✎
09:20
|
(14) Да, в общем оно я так думаю.
|
|||
18
DGorgoN
26.05.14
✎
09:22
|
Ну так куда копать? В сторону скалярного запроса?
|
|||
19
DGorgoN
26.05.14
✎
09:24
|
Или таки есть волшебное свойство - искать с начала или установить 1-ю начальную строку?
|
|||
20
DGorgoN
26.05.14
✎
09:28
|
аууу!
|
|||
21
DGorgoN
26.05.14
✎
09:29
|
Процедура АктивизироватьСтроку(ЭлементСправочника)
Если ТипЗначенияСтр(ЭлементСправочника) <> "Справочник" Тогда Возврат; КонецЕсли; ТабличноеПоле.ТекущаяСтрока = ЭлементСправочника; КонецПроцедур |
|||
22
DGorgoN
26.05.14
✎
09:30
|
Откопал, теперь остается понять, как найти этот самый 1-й элемент )
|
|||
23
DGorgoN
26.05.14
✎
09:33
|
Неа, нифига. Народ, ну подскажите куда копать то? Вчера до 2-х ночи сидел. Так и не просек фишку.
|
|||
24
trad
26.05.14
✎
09:36
|
(22) можно как то так
Спр = СоздатьОбъект("Справочник.Номенклатура"); //установить родителя/владельца как в ТП //Установить отбор как в ТП //Установить порядок сортировки как в ТП Спр.ВыбратьЭлементы(); Спр.ПолучитьЭлемент(); ПервыйЭлемент = Спр.ТекущийЭлемент(); |
|||
25
Salimbek
26.05.14
✎
09:41
|
В коде класса есть это:
//ЗначенияВыборки//:ИндексированнаяТаблица; Если ЗначенияВыборки.КоличествоСтрок() = 0 Тогда ТекстВопроса = "Поиск окончен. Совпадений не найдено. |Продолжить поиск с начала?"; Если Вопрос(ТекстВопроса,"Да+Нет") = "Да" Тогда БыстрыйПоискПоПодстроке(ИмяКолонки,Значение,); Возврат 0; Иначе Возврат 1; КонецЕсли; КонецЕсли; ТабличноеПоле.ТекущаяСтрока = ЗначенияВыборки.ПолучитьЗначение(1,1); |
|||
26
Salimbek
26.05.14
✎
09:43
|
а чуть ранее это:
Если ТабличноеПоле.ПозиционныйБыстрыйПоиск = 1 Тогда ТекущиеДанные = ТабличноеПоле.ТекущиеДанные; Иначе ТекущиеДанные = ПолучитьПустоеЗначение(); КонецЕсли; БыстрыйПоискПоПодстроке(КолонкаПоиска,ЗначениеПоиска,ТекущиеДанные); Что же такое "ПозиционныйБыстрыйПоиск" - надо смотреть в документации на класс |
|||
27
DGorgoN
26.05.14
✎
09:49
|
(25) Во, в класс заберусь и там подправлю. Спасибо!
|
|||
28
Salimbek
26.05.14
✎
09:54
|
Зачем править? Я ж тебе поле нашел...
ПозиционныйБыстрыйПоиск Синтаксис: ПозиционныйБыстрыйПоиск Доступ: Чтение и запись Тип: Число (1,0) Описание: Признак для управления быстрым поиском. Используется только у поставщиков данных «Справочник», «Документы», «Журнал», «Операции», «Регистр». При установке флага равного 0 быстрый поиск не будет учитывать текущую позицию. По умолчанию: 1. |
|||
29
Salimbek
26.05.14
✎
09:54
|
Выставляешь это поле в "0" и будет оно всегда искать с самого начала.
|
|||
30
DGorgoN
26.05.14
✎
09:58
|
(29) Сейчас попробую - заранее спасибо
|
|||
31
DGorgoN
26.05.14
✎
10:19
|
Не нашел, подправил класс и дело с концом. Видимо у меня старая версия классов еще.
Старая конечно но работает. Поэтому оставляю. Всем спасибо за участие. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |