|   |   | 
| 
 | 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 | 
        Не нашел, подправил класс и дело с концом. Видимо у меня старая версия классов еще.
 Старая конечно но работает. Поэтому оставляю. Всем спасибо за участие. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |