Вопрос № 88510: 1С 7.7
Необходимо организовать в справочнике поиск по наименованию
вот что у меня получилось:
Процедура ПоискПр ()
ОчиститьОкноСообщений();
Организац = СоздатьОбъект ("Справочник.Организации");
Организац.Выбр...
Вопрос № 88.510
1С 7.7
Необходимо организовать в справочнике поиск по наименованию
вот что у меня получилось:
Пока Организац.ПолучитьЭлемент()=1 цикл
Если Найти(СокрЛП(Организац.Наименование),СокрЛП(Поиск))>0 тогда
АктивизироватьОбъект(Организац.ТекущийЭлемент());
Сообщить(Организац.НОрганизации);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Тоесть вывожу номер каждого предприятия в котором есть символы набраные в поле ввода Поиск и активизирую последнее предприятие отвечающее условию
Это неудобно хотелось бы как в ворде или екселе добавить найти далее
Если заменить строку сообщть... на прервать(); то выбирается первый элемент справочника отвечающий условию а вот как зделать найти далее
Зарание благодарен
Отправлен: 25.05.2007, 12:29
Вопрос задал: Pycuk (статус: 1-ый класс)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Светлана Николаевна
Здравствуйте, Pycuk!
Можно все результаты записывать в массив. Каждый результат в отдельном элементе, а потом нажимая кнопку "найти далее" выводить следующий элемент массива.
Ответ отправила: Светлана Николаевна (статус: 1-ый класс)
Ответ отправлен: 25.05.2007, 12:40
Отвечает: Игорь К.
Здравствуйте, Pycuk!
Предлагаю вставить блок с вопросом:
Если Вопрос("Найдено: "+Строка(Организац.НОрганизации)+РазделительСтрок+"Продолжить поиск?","Да+Нет")="Нет" Тогда
Прервать;
КонецЕсли;
Если найдет - выдаст окно с информацией из поля НОрганизации
и запросом искать ли дальше.
Весь код в приложении.
P.S. Не знаю тип поля НОрганизации поэтому преобразую в строку.
Если тип строковый лишнее преобразование не помешает.
Приложение:
--------- Лучше два часа потерять, потом за пять минут долететь
Ответ отправил: Игорь К. (статус: 4-ый класс)
Ответ отправлен: 25.05.2007, 13:02
Отвечает: DERL.KG
Здравствуйте, Pycuk!
Создайте список значений, в который будете записывать все найденные значения
перед АктивизироватьОбъект добавите условия наличия текущего элемента в СЗ
а после АктивизироватьОбъект добавляйте найденный элемент в СЗ.
Добавьте (если нет) кнопку для очистки значения для поиска, при нажатии которой очищается СЗ
СЗ.УдалитьВсе().
Приложение:
Ответ отправил: DERL.KG (статус: 2-ой класс)
Ответ отправлен: 25.05.2007, 13:29
Отвечает: Elric
Здравствуйте, Pycuk!
Просто запоминайте элемент, на котором в прошлый раз остановились, и перед началом следующего поиска ("найти далее") сначала позиционируйтесь на него (элемент), а потом только продолжайте поиск (перебор).
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 25.05.2007, 13:36
Отвечает: Dmitry Stashenko
Здравствуйте, Pycuk!
Идея такая: создаешь объект Список значений, в него заносишь все удовлетворяющие условию поиска элементы справочника, а потом работаешь уже с этим списком. Там можно и поиск вперед (перейти на следующую строку списка), и назад (перейти на предыдущую) и еще много всякого.
Удачи
Ответ отправил: Dmitry Stashenko (статус: 2-ой класс)
Ответ отправлен: 25.05.2007, 14:17
Отвечает: Ovr1970
Здравствуйте, Pycuk!
Продолжить поиск очень просто, конечно метод не быстрый, но знасительно быстрее, чем искать заново.
Во первых, перед "ВыбратьЭлементы()" используешь "ПорядокНаименований()" или "ПорядокКодов()"
Во вторых, для поиска далее - передаешь найденное перед этим значение.
Т.Е. "ПоискПервого" - без аргументов, возвращает первую организацию, а "ПоискСлудующей(ТекОрг)" имеет аргумент, организация, с которой начать поиск. Тогда
Приложение:
Ответ отправил: Ovr1970 (статус: Практикант)
Ответ отправлен: 25.05.2007, 14:18