Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как обработать несколько Элементов диалога          
Sede Подменю пользователя
сообщение 14.07.15, 10:01
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

Добрый день.

Процедура исчет значение в списке, если найдено - делает его активным(выбранным).
Процедура ПоискВСписке(Текст)
Стр="";    
Для Номер = 1 По СписокТов.РазмерСписка() Цикл
  ЗначСписка= СокрЛП(СписокТов.ПолучитьЗначение(Номер, Стр));
   Если Найти(Текст,ЗначСписка)=0 Тогда
       Продолжить;
   Иначе        
        СписокТов.ТекущаяСтрока(Номер);      
       Прервать;
   КонецЕсли;
КонецЦикла;
КонецПроцедуры


Процедура дублируется много раз только с разным названием списка.
Хочу переделать в одну - чтобы в процедуру передавалось также и название Поля со списком (СписокТов, СписокЗак, СписокВес и т.д.)
Никак не могу разобраться с обработкой нескольких Элементов. Как понимаю надо как-то использовать квадратные скобки, но не могу найти нормального описания как их правильно использовать:

Процедура ПоискВПолеСоСписком(НазваниеСписка, ЗначПоиска)
Стр="";    
Для Номер = 1 По [НазваниеСписка].РазмерСписка() Цикл
  ЗначСписка= СокрЛП([НазваниеСписка].ПолучитьЗначение(Номер, Стр));
   Если Найти(ЗначПоиска,ЗначСписка)=0 Тогда
       Продолжить;
   Иначе        
        [НазваниеСписка].ТекущаяСтрока(Номер);      
       Прервать;
   КонецЕсли;
КонецЦикла;
КонецПроцедуры


Процедура Вызывается:

ПоискВПолеСоСписком("СписокТов", ЗначПоиска);


Где/что поправить/изменить. Помогите пожалуйста.

daveal Подменю пользователя
сообщение 14.07.15, 10:41
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Передавайте не название, а сам список. И квадратные скобки не нужны.

Спасибо сказали: Sede,

Sede Подменю пользователя
сообщение 14.07.15, 10:47
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

Большое спасибо. Действительно оказалось элементарно.

 Процедура ПоискВПолеСоСписком(НазваниеСписка, ЗначПоиска)
Стр="";    
Для Номер = 1 По НазваниеСписка.РазмерСписка() Цикл
  ЗначСписка= СокрЛП(НазваниеСписка.ПолучитьЗначение(Номер, Стр));
   Если Найти(ЗначПоиска,ЗначСписка)=0 Тогда
       Продолжить;
   Иначе        
        НазваниеСписка.ТекущаяСтрока(Номер);      
       Прервать;
   КонецЕсли;
КонецЦикла;
КонецПроцедуры

//Вызов процедуры:
ПоискВПолеСоСписком(МойСписок, ЗначПоиска);


Благодарю за помощь 12201689.gif

Vofka Подменю пользователя
сообщение 14.07.15, 16:54
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Sede, жмите палец.

awp Подменю пользователя
сообщение 15.07.15, 8:16
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

Цитата(Sede @ 14.07.15, 11:47) *
Большое спасибо. Действительно оказалось элементарно.

 Процедура ПоискВПолеСоСписком(НазваниеСписка, ЗначПоиска)
Стр="";    
Для Номер = 1 По НазваниеСписка.РазмерСписка() Цикл
  ЗначСписка= СокрЛП(НазваниеСписка.ПолучитьЗначение(Номер, Стр));
   Если Найти(ЗначПоиска,ЗначСписка)=0 Тогда
       Продолжить;
   Иначе        
        НазваниеСписка.ТекущаяСтрока(Номер);      
       Прервать;
   КонецЕсли;
КонецЦикла;
КонецПроцедуры

//Вызов процедуры:
ПоискВПолеСоСписком(МойСписок, ЗначПоиска);


Благодарю за помощь 12201689.gif


Зачем Вы делаете цикл по всему списку?

НайтиЗначение(<?>)
Синтаксис:
НайтиЗначение(<Значение>)
Назначение:
Возвращает номер позиции в списке с искомым значением (0 - если не найдено).
Параметры:
<Значение> - значение, которое необходимо найти в списке.




Signature
Бухгалтер - это не профессия! Это диагноз!

Sede Подменю пользователя
сообщение 16.07.15, 10:59
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(awp @ 15.07.15, 9:16) *
Зачем Вы делаете цикл по всему списку?

НайтиЗначение(<?>)
Синтаксис:
НайтиЗначение(<Значение>)
Назначение:
Возвращает номер позиции в списке с искомым значением (0 - если не найдено).
Параметры:
<Значение> - значение, которое необходимо найти в списке.


Поиск производиться не только на полное соответствие но и на частичное: Я так понимаю ваш способ действенен если в списке "Товар" и ищу "Товар", а если я ищу "овар" наверно ничего не найду.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 3:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!