Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 04:28

Помогите с поиском в справочнике

Автор Boris1989, 14 мая 2011, 18:19

0 Пользователей и 1 гость просматривают эту тему.

Boris1989

Прошу не ругать, я только начал изучать 1С. В институте дали задание добавить в справочник функции поиска и сортировки. Со вторым я более-менее справился, а с поиском проблемы.
Задумка была такая: вводим в поле текст, жмем "найти", выделяется искомый элемент в справочнике и выскакивает окно с вопросом: "Продолжить? <Ok>,<Отмена>. При нажатии <Ok> должен выделяться следующий подходящий элемент.
Но этого не происходит. При нажатии <Ok> опять появляется окно с вопросом, а в многострочной части ничего не выделяется.

Вот текст процедуры:
//Поиск элемента справочника по коду или наименованию*********************
Процедура НайтиЭлемент()
   ОчиститьОкноСообщений(); 
   Если ПустаяСтрока(СтрокаПоиска) = 1 Тогда
      Сообщить("Введите строку для поиска","!");
   Иначе
      СпрВБ = СоздатьОбъект("Справочник.ВидыБрака");
      Если (Режим = 1) и (Совпадение = 0)  Тогда
         СпрВБ.ВыбратьЭлементы();
         Счетчик = 0;
         Кол = 0;
         Пока СпрВБ.ПолучитьЭлемент() = 1 Цикл 
             Счетчик = Счетчик + 1;
         КонецЦикла;
         СпрВБ.ВыбратьЭлементы();
          Пока СпрВБ.ПолучитьЭлемент() = 1 Цикл
            Кол = Кол + 1;   
            Если Найти(СпрВБ.ТекущийЭлемент().Наименование,СтрокаПоиска) > 0 Тогда   
               АктивизироватьОбъект(СпрВБ.ТекущийЭлемент());
               Если Вопрос("Продолжить поиск?",1) = 1 Тогда
                  Продолжить;
               ИначеЕсли Вопрос("Продолжить поиск?",1) = 2 Тогда
                  Прервать;
               КонецЕсли;
            КонецЕсли;
            Если Кол = Счетчик Тогда
               ОчиститьОкноСообщений();
               Сообщить("Совпадений не найдено","!");
               Прервать;
            КонецЕсли;
          КонецЦикла;
      КонецЕсли;     
      Если (Режим = 1) и (Совпадение = 1)  Тогда
         Если СпрВБ.НайтиПоНаименованию(СтрокаПоиска, 0, 1) = 1 Тогда
            АктивизироватьОбъект(СпрВБ.ТекущийЭлемент());
         Иначе
            ОчиститьОкноСообщений();
            Сообщить("Точного совпадения не найдено","!");
         КонецЕсли;
      КонецЕсли;
      Если Режим = 2  Тогда
         Если СпрВБ.НайтиПоКоду(СтрокаПоиска,0)=1 Тогда
            АктивизироватьОбъект(СпрВБ.ТекущийЭлемент());
         Иначе
            ОчиститьОкноСообщений();
            Сообщить("Элементов с кодом '" + СтрокаПоиска + "' не найдено","!");
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Boris1989

Проблема где-то здесь. Может что посоветуете.

Если Найти(СпрВБ.ТекущийЭлемент().Наименование,СтрокаПоиска) > 0 Тогда   
               АктивизироватьОбъект(СпрВБ.ТекущийЭлемент());
               Если Вопрос("Продолжить поиск?",1) = 1 Тогда
                  Продолжить;
               ИначеЕсли Вопрос("Продолжить поиск?",1) = 2 Тогда
                  Прервать;
               КонецЕсли;
            КонецЕсли;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск