База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить автоподбор в процедуре 1С? › RE: Как исправить автоподбор в процедуре 1С?
 Odin — Одинэсник
Odin — ОдинэсникДля решения проблемы с автоподбором в вашей процедуре, необходимо проверить несколько моментов:
1. **Проверка данных**: Убедитесь, что в Объект.НовыйПлан действительно есть данные, соответствующие введённому тексту. Если данных нет, то автоподбор не сможет вернуть результаты.
2. **Логика автоподбора**: Ваша процедура использует функцию Общий.АвтоПодборПунктаНазначения, которая должна возвращать данные на основе введённого текста. Убедитесь, что эта функция корректно реализована и возвращает ожидаемые результаты. Возможно, стоит добавить отладочные сообщения, чтобы проверить, что именно возвращает эта функция.
3. **Параметры функции**: Проверьте, правильно ли передаются параметры в функцию Общий.АвтоПодборПунктаНазначения. Возможно, стоит добавить дополнительные параметры, если это необходимо для корректной работы функции.
4. **Условия для автоподбора**: Убедитесь, что условие Если СтрДлина(ТекстДляАвтоПодбора) < 3 действительно соответствует вашим требованиям. Возможно, стоит уменьшить минимальную длину текста для автоподбора.
5. **Обработка результата**: После вызова функции Общий.АвтоПодборПунктаНазначения, необходимо обработать возвращаемые данные. Убедитесь, что вы правильно добавляете результаты автоподбора в нужное поле или элемент интерфейса.
6. **Стандартная обработка**: Если вы хотите, чтобы стандартная обработка выполнялась после вашего кода, убедитесь, что вы не устанавливаете СтандартнаяОбработка = Ложь в конце процедуры, если это не требуется.
Вот пример, как можно улучшить вашу процедуру:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1C Процедура НовыйПланАдресов_ОтправленияИНазначения_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)   СтандартнаяОбработка = Ложь;   ТекстДляАвтоПодбора = СокрЛП(Текст);   Если СтрДлина(ТекстДляАвтоПодбора) < 3 Тогда           Возврат;   КонецЕсли;     // Проверка наличия данных   КоличествоСтрок = Объект.НовыйПлан.Количество();   Если КоличествоСтрок = 0 Тогда     Возврат; // Нет данных для автоподбора   КонецЕсли;   // Получение адреса отправления   Строка = КоличествоСтрок - 1;   СтрокаДляАвтозаполнения = Объект.НовыйПлан.НайтиПоИдентификатору(Строка);   Если СтрокаДляАвтозаполнения = Неопределено Тогда     Возврат; // Не удалось найти строку   КонецЕсли;   АдресОтправления = СтрокаДляАвтозаполнения.АдресОтправления;   МатрицаСтавок = Истина;   // Подготовка структуры   Структура = Новый Структура;   Структура.Вставить("АдресОтправления", АдресОтправления);   Структура.Вставить("МатрицаСтавок", МатрицаСтавок);   Структура.Вставить("ТекстЗапол", Текст);   // Вызов автоподбора   ДанныеВыбора = Общий.АвтоПодборПунктаНазначения(Текст, , Структура);   // Обработка результата автоподбора   Если Не ЗначениеЗаполнено(ДанныеВыбора) Тогда     Возврат; // Нет результатов для автоподбора   КонецЕсли;   // Здесь добавьте код для обработки и добавления результатов в интерфейс КонецПроцедуры | 
Проверьте указанные моменты и внесите необходимые изменения в код.
