• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Tiolan
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tiolan

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

по ВыбратьЭлементы и ПолучитьЭлемент - слишком долго получается, справочник на 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 Тогда
Контрагент = Спр.ТекущийЭлемент();
перейти ~єакт
КонецЕсли;				 
КонецЦикла;

КонецЦикла;		 
КонецПроцедуры

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

b00tch

ТОЛЬКО запрос...

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

Tiolan

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

Спасибо Golod. Буду запрашивать)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!