Перебор єлементов в справочнике

Тема в разделе "1C и всё что с ней связано", создана пользователем Tiolan, 20 июл 2007.

Статус темы:
Закрыта.
  1. Tiolan

    Tiolan Гость

    Репутация:
    0
    Не могу разобраться как организовать следующее: нахожу в справочнике значение по фамилии и первому инициалу - и далее по порядку ищу соответствие по второму.

    по ВыбратьЭлементы и ПолучитьЭлемент - слишком долго получается, справочник на 70000 записей. да и тупо как-то.

    ПолучитьЭлемент после поиска не выходит не пойму почему...

    Вот код - имеется ввиду, что хотелось бы ( :) ) чтоб НайтиПоНаименованию(шук1,0,0) искало каждый раз не сначала, а следующего.

    Код (Text):
    Процедура ЗПИ()

    Если КоличествоСтрок() > 0 Тогда
    Рез = Вопрос("Заповнити пусті значення згідно ініціалів?","Да+Нет");
    Если Рез = "Нет" Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;

    ВыбратьСтроки();
    ~єакт: 
    Пока ПолучитьСтроку() = 1 Цикл

    Если ПустоеЗначение(Контрагент) = 0 Тогда   
    перейти ~єакт   
    КонецЕсли;      
    сообщить("Шукаю: "+ПІБ);       

    шук1 = Лев(ПІБ, (Найти(ПІБ, " ")+1));                 
    шук2 = Сред (ПІБ, (Найти(ПІБ, " ")+3),1);
    сообщить ("шук2 = "+шук2);
    Спр = СоздатьОбъект("Справочник.Контрагенты");      
    Спр.ВыбратьЭлементы ();                            

    ~ще:     
    Пока Спр.НайтиПоНаименованию(шук1,0,0) = 1 Цикл
    там1 = Лев(спр.ПолнНаименование, (Найти(спр.ПолнНаименование, " ")+1));
    Если там1 <> шук1 Тогда
    перейти ~єакт
    КонецЕсли;  

    там2 = СокрЛП(Прав(спр.ПолнНаименование, (СтрДлина(спр.ПолнНаименование)-(Найти(спр.ПолнНаименование, " ")+1))));   
    там2 = Сред(там2, (Найти(там2, " ")+1),1);
    сообщить ("там2 = "+там2);

    Если шук2 = там2 Тогда
    Контрагент = Спр.ТекущийЭлемент();
    перейти ~єакт
    КонецЕсли;              
    КонецЦикла;

    КонецЦикла;        
    КонецПроцедуры
    Может есть решение проблемы попроще? или лыжи не едут?
    Помогите решить задачку. Очень прошу.
     
  2. Golod

    Golod Гость

    Репутация:
    0
    Используй запрос.
     
  3. b00tch

    b00tch Гость

    Репутация:
    0
    ТОЛЬКО запрос...

    плюс, непл0хо было бы знать операторы Прервать и Продолжить... с ними кодЪ красивше и л0гичней получаецц0...
     
  4. Tiolan

    Tiolan Гость

    Репутация:
    0
    Прервать и Продолжить - неудобны при вложенных циклах (ИМХО) а с Перейти все просто )

    Спасибо Golod. Буду запрашивать)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей