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