1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем Tiolan, 20 июл 2007.

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

    Tiolan Гость

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

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

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

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

    Код:
    Процедура ЗПИ()
    
    Если КоличествоСтрок() > 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. Буду запрашивать)
     
Загрузка...
Статус темы:
Закрыта.

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