В чём трабл?
04.09.2003
10:49
#1
"ситуация следующая, на форму справочника "БАНКИ" "Для выбора" прицепил текстовое поле и кнопку "Поиск"
//******************************************************************************
// Поиск()
// Описание:
// Выполняет поиск банка по кнопке "поиск" на форме.
Процедура Поиск()
Бнк=СоздатьОбъект("Справочник.Банки");
//Банк.ПорядокКодов();
Бнк.ВыбратьЭлементы(0);
Если Бнк.ВыбратьЭлементы(0)=1 Тогда
Пока Бнк.ПолучитьЭлемент(0)=1 Цикл
Если Найти(СокрЛП(Бнк.Наименование),СокрЛП(ПоискБанка))=0 Тогда
Иначе Бнк.НайтиЭлемент(Бнк.ТекущийЭлемент());
//Предупреждение("Такой банк уже существует! Его код="+Банк.Код);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры;
//******************************************************************************
говорит объект не может быть перепозицианирован! и ссылается на строку Иначе Бнк.НайтиЭлемент(Бнк.ТекущийЭлемент());
в чём тут трабл?"
//******************************************************************************
// Поиск()
// Описание:
// Выполняет поиск банка по кнопке "поиск" на форме.
Процедура Поиск()
Бнк=СоздатьОбъект("Справочник.Банки");
//Банк.ПорядокКодов();
Бнк.ВыбратьЭлементы(0);
Если Бнк.ВыбратьЭлементы(0)=1 Тогда
Пока Бнк.ПолучитьЭлемент(0)=1 Цикл
Если Найти(СокрЛП(Бнк.Наименование),СокрЛП(ПоискБанка))=0 Тогда
Иначе Бнк.НайтиЭлемент(Бнк.ТекущийЭлемент());
//Предупреждение("Такой банк уже существует! Его код="+Банк.Код);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры;
//******************************************************************************
говорит объект не может быть перепозицианирован! и ссылается на строку Иначе Бнк.НайтиЭлемент(Бнк.ТекущийЭлемент());
в чём тут трабл?"
04.09.2003
11:40
#2
А вот прочувсвуйте эту строку - вы затавляете объект самого на себя перепозиционироваться.
Эта строка просто не имеет смысла..
Эта строка просто не имеет смысла..
05.09.2003
08:17
#3
"так... и что же делать? как же тогда позиционироваться на найденном объекте?
Ну нашёл я подстроку "ПоискБанка" в строке "Бнк.Наименование", как теперь на неё позиционироваться?
НайтиЭлемент();
НайтиПоНиаменованию();
НайтиПоКоду();
и т.д. приводят ктому же результату
как же тогда позиционироваться!"
Ну нашёл я подстроку "ПоискБанка" в строке "Бнк.Наименование", как теперь на неё позиционироваться?
НайтиЭлемент();
НайтиПоНиаменованию();
НайтиПоКоду();
и т.д. приводят ктому же результату
как же тогда позиционироваться!"
05.09.2003
17:51
#4
Вот прочитайте "Спозиционироваться на найденном объекте".
На мысли не наводит?
Вы и так на нем, куда еще хотите?
На мысли не наводит?
Вы и так на нем, куда еще хотите?
09.09.2003
08:33
#5
возможно не правильно выразился 
объект найден, так?
но этот объект никак с формой не связан, так?
элементарное что тут можно сделать вывести его через Сообщить() или Предупреждение(), но нужно совсем другое!!!
Чтобы он стал активным (т.е. стал выделенным синим курсором)... Я же объясняю, что нужно сделать что-то похожее на ПОИСК в справочнике "Банки"... потому что к самой строке поиска не отовсюду можно получить доступ!
А способ, сначала открывать справочник "Банки" проверять есть ли там уже нужный банк, потом через документы (например, п/п) заводить или выбирать... короче должен быть способ сделать всё намного проще!
объект найден, так?
но этот объект никак с формой не связан, так?
элементарное что тут можно сделать вывести его через Сообщить() или Предупреждение(), но нужно совсем другое!!!
Чтобы он стал активным (т.е. стал выделенным синим курсором)... Я же объясняю, что нужно сделать что-то похожее на ПОИСК в справочнике "Банки"... потому что к самой строке поиска не отовсюду можно получить доступ!
А способ, сначала открывать справочник "Банки" проверять есть ли там уже нужный банк, потом через документы (например, п/п) заводить или выбирать... короче должен быть способ сделать всё намного проще!
09.09.2003
14:43
#6
"АктивизироватьОбъект(>);
Синтаксис:
АктивизироватьОбъект(<Объект>)
Назначение:
Активизировать объект в форме списка.
Параметры:
<Объект> - выражение, которое может содержать значение элемента справочника или документ или запись журнала расчетов (в зависимости от типа модуля формы, в котором должен быть активизирован элемент диалога).
Замечание:
Доступ к методу возможен только в контексте Модуля формы."
Синтаксис:
АктивизироватьОбъект(<Объект>)
Назначение:
Активизировать объект в форме списка.
Параметры:
<Объект> - выражение, которое может содержать значение элемента справочника или документ или запись журнала расчетов (в зависимости от типа модуля формы, в котором должен быть активизирован элемент диалога).
Замечание:
Доступ к методу возможен только в контексте Модуля формы."
09.09.2003
14:52
#7
"Пробовал!
Работает не понятно как
Вместо позиции первого найденного делает активным самый последний найденный
Что только не делал... всё время активным становится только последний найденный элемент!
Опять же косяк...
вот код:
//******************************************************************************
// Описание:
// Выполняет поиск банка по кнопке "поиск" на форме.
Процедура Поиск()
i=1;
Бнк=СоздатьОбъект("Справочник.Банки");
Бнк.ПорядокНаименований();
Бнк.ВыбратьЭлементы();
Пока Бнк.ПолучитьЭлемент()=1 Цикл
Если (Найти(СокрЛП(ВРЕГ(Бнк.Наименование)),СокрЛП(ВРЕГ(ПоискБанка)))<>0) Тогда
Найденные[i]=Бнк.Наименование;
//Сообщить(Найденные[i]);
i=i+1;
КонецЕсли;
КонецЦикла;
//****************************************************************************************
Если ФлагПоиска=0 Тогда
//АктивизироватьОбъект(Найденные[1]);
Сообщить("_____"+Найденные[1]);
k=k+1;
ФлагПоиска=1;
ИначеЕсли (k
//АктивизироватьОбъект(Найденные[k]);
Сообщить("*** "+Найденные[k]);
k=k+1;
КонецЕсли;
КонецПроцедуры // Поиск()
//********************************************************************************************
// Определяем переменные при каждом новом открытии формы
ФлагПоиска=0;
k=1;"
Работает не понятно как
Вместо позиции первого найденного делает активным самый последний найденный
Опять же косяк...
вот код:
//******************************************************************************
// Описание:
// Выполняет поиск банка по кнопке "поиск" на форме.
Процедура Поиск()
i=1;
Бнк=СоздатьОбъект("Справочник.Банки");
Бнк.ПорядокНаименований();
Бнк.ВыбратьЭлементы();
Пока Бнк.ПолучитьЭлемент()=1 Цикл
Если (Найти(СокрЛП(ВРЕГ(Бнк.Наименование)),СокрЛП(ВРЕГ(ПоискБанка)))<>0) Тогда
Найденные[i]=Бнк.Наименование;
//Сообщить(Найденные[i]);
i=i+1;
КонецЕсли;
КонецЦикла;
//****************************************************************************************
Если ФлагПоиска=0 Тогда
//АктивизироватьОбъект(Найденные[1]);
Сообщить("_____"+Найденные[1]);
k=k+1;
ФлагПоиска=1;
ИначеЕсли (k
//АктивизироватьОбъект(Найденные[k]);
Сообщить("*** "+Найденные[k]);
k=k+1;
КонецЕсли;
КонецПроцедуры // Поиск()
//********************************************************************************************
// Определяем переменные при каждом новом открытии формы
ФлагПоиска=0;
k=1;"
10.09.2003
08:42
#8
"вот теперь всё понятно
)
действительно, есть такая плюха в 1С,
дело в том, что ...
короче: вставляешь кнопку "Поиск" с формулой Поиск()
и
Процедура Поиск()
ПоискБанка = """";
Если ВвестиСтроку(ПоискБанка,"Укажите пару символов ..",50,0,20) = 0 Тогда
Возврат;
КонецЕсли;
Бнк=СоздатьОбъект("Справочник.Банки");
Бнк.ПорядокНаименований();
Бнк.ВыбратьЭлементы();
Пока Бнк.ПолучитьЭлемент()=1 Цикл
Если (Найти(СокрЛП(ВРЕГ(Бнк.Наименование)),СокрЛП(ВРЕГ(ПоискБанка)))<>0) Тогда
АктивизироватьОбъект(Бнк.ТекущийЭлемент());
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Я правда делал в отдельной форме, так как результат могет быть множественным и
понадобиться дополнительный отбор, например уже из списка значений
выведенного на экран.
Удачи !!
"
действительно, есть такая плюха в 1С,
дело в том, что ...
короче: вставляешь кнопку "Поиск" с формулой Поиск()
и
Процедура Поиск()
ПоискБанка = """";
Если ВвестиСтроку(ПоискБанка,"Укажите пару символов ..",50,0,20) = 0 Тогда
Возврат;
КонецЕсли;
Бнк=СоздатьОбъект("Справочник.Банки");
Бнк.ПорядокНаименований();
Бнк.ВыбратьЭлементы();
Пока Бнк.ПолучитьЭлемент()=1 Цикл
Если (Найти(СокрЛП(ВРЕГ(Бнк.Наименование)),СокрЛП(ВРЕГ(ПоискБанка)))<>0) Тогда
АктивизироватьОбъект(Бнк.ТекущийЭлемент());
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Я правда делал в отдельной форме, так как результат могет быть множественным и
понадобиться дополнительный отбор, например уже из списка значений
выведенного на экран.
Удачи !!
"
Читают тему
(гостей: 1)