Добрый день! Есть такая задача: Открываем справочник контрагентов, вводим номер телефона контрагента. Далее происходит поиск контрагента по реквизиту "телефон". Если находит хочу,чтобы спозиционироваться на найденном объекте.
Так вот контрагента находит(сообщает), но позиционировать отказывается. Как это можно сделать?
Код ниже:
СпрКлиенты.НайтиПоНаименованию(Запрос.ТекущийЭлемент.Наименование,0,1);
АктивизироватьОбъект(СпрКлиенты.ТекущийЭлемент());
СпрКлиенты.НайтиПоНаименованию(Запрос.ТекущийЭлемент.Наименование,0,1);
Конт = "";
ОткрытьФорму("Справочник.Клиенты.ФормаСписка",Конт,);
Конт.АктивизироватьОбъект(СпрКлиенты.ТекущийЭлемент());
в форме списка все нормально отрабатывает - откуда Вы вызываете поиск?
полный код давайте
sava1 @ Сегодня, 11:36
,
открываю форму списка. На форме есть поле для ввода номера телефона(длина поля 10) вводим номер 0999999999 и жмем ENTER, в спрввочнике "телефон" длина 32 символа (строка).
Находить,сообщает клиента но не позиционируется
Процедура НайтиКлиента()
Перем Запрос, ТекстЗапроса;
Перем НомСтр, ТЗ;
СпрКлиенты = СоздатьОбъект("Справочник.Клиенты");
СпрРодительКлиента = СоздатьОбъект("Справочник.Клиенты");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Если ПустоеЗначение(СокрЛП(НомерТелефон))= 1 Тогда
Иначе
Для Позиция = 1 По СтрДлина(СокрЛП(НомерТелефон)) Цикл
Символ = Сред(СокрЛП(НомерТелефон),Позиция,1);
Если Найти("0123456789", Символ) > 0 Тогда
Иначе
Предупреждение("Можно вводить только цифры!");
Возврат;
КонецЕсли;
КонецЦикла;
Если СтрДлина(СокрЛП(НомерТелефон)) < 10 Тогда
Сообщить("Неверный формат номера!");
Возврат;
Иначе
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|ТекущийЭлемент = Справочник.Клиенты.ТекущийЭлемент;
|Родитель = Справочник.Клиенты.Родитель;
|Телефон = Справочник.Клиенты.Телефон;
|Условие(СокрЛП(Телефон) = НомерТелефон);
|Группировка ТекущийЭлемент без групп;
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Если Запрос.Группировка(1) = 1 тогда
Сообщить("Клиент с таким номером телефона уже существует в справочнике - " + Запрос.Родитель + " / " + Запрос.ТекущийЭлемент.Наименование);
СпрКлиенты.НайтиПоНаименованию(Запрос.ТекущийЭлемент.Наименование,0,1);
АктивизироватьОбъект(СпрКлиенты.ТекущийЭлемент());
НомерТелефон = "";
Иначе
Если Вопрос("Не найден клиент создать нового?","Да+Нет")="Да" Тогда
Конт = "";
НаимКлиента = "";
ВвестиСтроку(НаимКлиента,"Укажите наименование клиента",32,,);
СпрКлиенты.Новый();
СпрРодительКлиента.НайтиПоНаименованию("Покупатели",0,1);
СпрКлиенты.Родитель = СпрРодительКлиента.ТекущийЭлемент();
СпрКлиенты.Наименование = НаимКлиента;
СпрКлиенты.Телефон = НомерТелефон;
СпрКлиенты.Записать();
ОткрытьФормуМодально(СпрКлиенты.ТекущийЭлемент(),Конт,,0,);
КонецЕсли;
НомерТелефон = "";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
вот поиск товара в списке
стрПоиск - строка
Процедура НайтиТовар()
Сообщить("...."+стрПоиск);
сс = СоздатьОбъект("Справочник.Номенклатура");
рез = сс.НайтиПоНаименованию(СокрЛП(стрПоиск),0);
Сообщить(""+рез);
Если рез=1 Тогда
Сообщить(сс.ТекущийЭлемент());
АктивизироватьОбъект(сс.ТекущийЭлемент());
КонецЕсли;
КонецПроцедуры // НайтиТовар()
sava1 @ Сегодня, 12:36
,
Проверил Ваш вариант предложенный НайтиТовар() - работает. А Вот в моей конструкции:
Если Запрос.Группировка(1) = 1 тогда
Сообщить("Клиент с таким номером телефона уже существует в справочнике - " + Запрос.Родитель + " / " + Запрос.ТекущийЭлемент.Наименование);
СпрК = СоздатьОбъект("Справочник.Клиенты");
Поиск = Запрос.ТекущийЭлемент.Наименование;
Сообщить("...."+Поиск);
рез = СпрК.НайтиПоНаименованию(СокрЛП(Поиск),0);
Сообщить(""+рез);
Если рез=1 Тогда
Сообщить(СпрК.ТекущийЭлемент());
АктивизироватьОбъект(СпрК.ТекущийЭлемент());
КонецЕсли;
КонецЕсли;
Процедура ПозиционированиеНаКлиенте()
НайтиКлиента();
СпрК = СоздатьОбъект("Справочник.Клиенты");
Результат = СпрК.НайтиПоНаименованию(СокрЛП(Поиск),0);
Если Результат = 1 Тогда
Сообщить("Клиент с таким номером телефона уже существует в справочнике - " + Группа + " / " + Поиск);
АктивизироватьОбъект(СпрК.ТекущийЭлемент());
КонецЕсли;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua