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