База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить автоподбор в процедуре 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 месяцев, 4 недели назад сделано  Odin — Одинэсник. Odin — Одинэсник.
- 
		АвторСообщения
- 
		
			- 
4 апреля 2025 в 15:00 #32258 OdineskiУчастник OdineskiУчастникЕсть код, который я сделал для процедуры автоподбор, при вводе нескольких букв он видет, нажимаю, а он не добавляет сам код 1с » Процедура НовыйПланАдресов_ОтправленияИНазначения_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) //Объект.НовыйПлан 
 СтандартнаяОбработка = Ложь;КоличествоСтрок = Объект.НовыйПлан.Количество(); 
 Строка = КоличествоСтрок -1;
 СтрокаДляАвтозаполнения = Объект.НовыйПлан.НайтиПоИдентификатору(Строка );
 АдресОтправления =СтрокаДляАвтозаполнения.АдресОтправления;
 МатрицаСтавок = Истина;
 Структура= Новый Структура;
 Структура.Вставить(«АдресОтправления» ,АдресОтправления);
 Структура.Вставить(«МатрицаСтавок» , МатрицаСтавок);
 Структура.Вставить(«ТекстЗапол» , Текст);ТекстДляАвтоПодбора = СокрЛП(Текст); 
 Если СтрДлина(ТекстДляАвтоПодбора) < 3 Тогда
 Возврат;
 КонецЕсли;
 ДанныеВыбора = Общий.АвтоПодборПунктаНазначения(Текст,,Структура);
 //СтандартнаяОбработка = Ложь;КонецПроцедуры " 
- 
4 апреля 2025 в 15:00 #32259 Odin — ОдинэсникУчастник Odin — ОдинэсникУчастникДля решения проблемы с автоподбором в вашей процедуре, необходимо проверить несколько моментов: 1. **Проверка данных**: Убедитесь, что в Объект.НовыйПландействительно есть данные, соответствующие введённому тексту. Если данных нет, то автоподбор не сможет вернуть результаты.2. **Логика автоподбора**: Ваша процедура использует функцию Общий.АвтоПодборПунктаНазначения, которая должна возвращать данные на основе введённого текста. Убедитесь, что эта функция корректно реализована и возвращает ожидаемые результаты. Возможно, стоит добавить отладочные сообщения, чтобы проверить, что именно возвращает эта функция.3. **Параметры функции**: Проверьте, правильно ли передаются параметры в функцию Общий.АвтоПодборПунктаНазначения. Возможно, стоит добавить дополнительные параметры, если это необходимо для корректной работы функции.4. **Условия для автоподбора**: Убедитесь, что условие Если СтрДлина(ТекстДляАвтоПодбора) < 3действительно соответствует вашим требованиям. Возможно, стоит уменьшить минимальную длину текста для автоподбора.5. **Обработка результата**: После вызова функции Общий.АвтоПодборПунктаНазначения, необходимо обработать возвращаемые данные. Убедитесь, что вы правильно добавляете результаты автоподбора в нужное поле или элемент интерфейса.6. **Стандартная обработка**: Если вы хотите, чтобы стандартная обработка выполнялась после вашего кода, убедитесь, что вы не устанавливаете СтандартнаяОбработка = Ложьв конце процедуры, если это не требуется.Вот пример, как можно улучшить вашу процедуру: 1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142431CПроцедура НовыйПланАдресов_ОтправленияИНазначения_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)СтандартнаяОбработка = Ложь;ТекстДляАвтоПодбора = СокрЛП(Текст);Если СтрДлина(ТекстДляАвтоПодбора) < 3 ТогдаВозврат;КонецЕсли;// Проверка наличия данныхКоличествоСтрок = Объект.НовыйПлан.Количество();Если КоличествоСтрок = 0 ТогдаВозврат; // Нет данных для автоподбораКонецЕсли;// Получение адреса отправленияСтрока = КоличествоСтрок - 1;СтрокаДляАвтозаполнения = Объект.НовыйПлан.НайтиПоИдентификатору(Строка);Если СтрокаДляАвтозаполнения = Неопределено ТогдаВозврат; // Не удалось найти строкуКонецЕсли;АдресОтправления = СтрокаДляАвтозаполнения.АдресОтправления;МатрицаСтавок = Истина;// Подготовка структурыСтруктура = Новый Структура;Структура.Вставить("АдресОтправления", АдресОтправления);Структура.Вставить("МатрицаСтавок", МатрицаСтавок);Структура.Вставить("ТекстЗапол", Текст);// Вызов автоподбораДанныеВыбора = Общий.АвтоПодборПунктаНазначения(Текст, , Структура);// Обработка результата автоподбораЕсли Не ЗначениеЗаполнено(ДанныеВыбора) ТогдаВозврат; // Нет результатов для автоподбораКонецЕсли;// Здесь добавьте код для обработки и добавления результатов в интерфейсКонецПроцедурыПроверьте указанные моменты и внесите необходимые изменения в код. 
 
- 
- 
		АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.
