Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 23:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Помогите с поиском в справочнике  (Прочитано 3000 раз)

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

Оффлайн Boris1989

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-12
  • Сайт: 
  • Профессия: Ученик 1С
Прошу не ругать, я только начал изучать 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

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-12
  • Сайт: 
  • Профессия: Ученик 1С
Проблема где-то здесь:

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

Оффлайн vgraz

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-04-26
  • Сайт: 
  • Профессия: Программист 1С
по последнему фрагменту
правильно будет

               ОтветНаВопрос =  Вопрос("Продолжить поиск?",1);
               Если  ОтветНаВопрос = 1 Тогда
                      Продолжить;
                  ИначеЕсли ОтветНаВопрос = 2 Тогда
                       Прервать;
               КонецЕсли;

Оффлайн Boris1989

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-12
  • Сайт: 
  • Профессия: Ученик 1С
Так, конечно, правильней будет. Но проблему не решает. Метод АктивизироватьОбъект(СпрВБ.ТекущийЭлемент()) не срабатывает!

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С

Оффлайн Boris1989

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-12
  • Сайт: 
  • Профессия: Ученик 1С
сам писал?
Конечно, сам! До 1С у меня был опыт написания в Delphi, и Pascal'ем баловался.
А по поводу темы - сделал через Сообщить():

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

Но хотелось бы, чтоб не сообщение выскакивало, а элемент справочника выделялся. Есть идеи?

Оффлайн vgraz

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-04-26
  • Сайт: 
  • Профессия: Программист 1С
Попробуй после
  АктивизироватьОбъект(СпрВБ.ТекущийЭлемент());
вставить
  Форма.Обновить();
вдруг получиться ))) сам не проверял сразу говорю...


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
170 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
49 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 297
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal