Odin | База знаний 1С

Как исправить автоп...
 

Как исправить автоподбор в процедуре 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Есть код, который я сделал для процедуры автоподбор, при вводе нескольких букв он видет, нажимаю, а он не добавляет сам код 1с " Процедура НовыйПланАдресов_ОтправленияИНазначения_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)

//Объект.НовыйПлан
СтандартнаяОбработка = Ложь;

КоличествоСтрок = Объект.НовыйПлан.Количество();
Строка = КоличествоСтрок -1;
СтрокаДляАвтозаполнения = Объект.НовыйПлан.НайтиПоИдентификатору(Строка );
АдресОтправления =СтрокаДляАвтозаполнения.АдресОтправления;
МатрицаСтавок = Истина;
Структура= Новый Структура;
Структура.Вставить("АдресОтправления" ,АдресОтправления);
Структура.Вставить("МатрицаСтавок" , МатрицаСтавок);
Структура.Вставить("ТекстЗапол" , Текст);

ТекстДляАвтоПодбора = СокрЛП(Текст);
Если СтрДлина(ТекстДляАвтоПодбора) < 3 Тогда
Возврат;
КонецЕсли;
ДанныеВыбора = Общий.АвтоПодборПунктаНазначения(Текст,,Структура);
//СтандартнаяОбработка = Ложь;

КонецПроцедуры

"



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для решения проблемы с автоподбором в вашей процедуре, необходимо проверить несколько моментов:

1. **Проверка данных**: Убедитесь, что в `Объект.НовыйПлан` действительно есть данные, соответствующие введённому тексту. Если данных нет, то автоподбор не сможет вернуть результаты.

2. **Логика автоподбора**: Ваша процедура использует функцию `Общий.АвтоПодборПунктаНазначения`, которая должна возвращать данные на основе введённого текста. Убедитесь, что эта функция корректно реализована и возвращает ожидаемые результаты. Возможно, стоит добавить отладочные сообщения, чтобы проверить, что именно возвращает эта функция.

3. **Параметры функции**: Проверьте, правильно ли передаются параметры в функцию `Общий.АвтоПодборПунктаНазначения`. Возможно, стоит добавить дополнительные параметры, если это необходимо для корректной работы функции.

4. **Условия для автоподбора**: Убедитесь, что условие `Если СтрДлина(ТекстДляАвтоПодбора) < 3` действительно соответствует вашим требованиям. Возможно, стоит уменьшить минимальную длину текста для автоподбора.

5. **Обработка результата**: После вызова функции `Общий.АвтоПодборПунктаНазначения`, необходимо обработать возвращаемые данные. Убедитесь, что вы правильно добавляете результаты автоподбора в нужное поле или элемент интерфейса.

6. **Стандартная обработка**: Если вы хотите, чтобы стандартная обработка выполнялась после вашего кода, убедитесь, что вы не устанавливаете `СтандартнаяОбработка = Ложь` в конце процедуры, если это не требуется.

Вот пример, как можно улучшить вашу процедуру:

1C
Процедура НовыйПланАдресов_ОтправленияИНазначения_АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
  
  СтандартнаяОбработка = Ложь;

  ТекстДляАвтоПодбора = СокрЛП(Текст);
  Если СтрДлина(ТекстДляАвтоПодбора) < 3 Тогда      
    Возврат;
  КонецЕсли;  

  // Проверка наличия данных
  КоличествоСтрок = Объект.НовыйПлан.Количество();
  Если КоличествоСтрок = 0 Тогда
    Возврат; // Нет данных для автоподбора
  КонецЕсли;

  // Получение адреса отправления
  Строка = КоличествоСтрок - 1;
  СтрокаДляАвтозаполнения = Объект.НовыйПлан.НайтиПоИдентификатору(Строка);
  Если СтрокаДляАвтозаполнения = Неопределено Тогда
    Возврат; // Не удалось найти строку
  КонецЕсли;

  АдресОтправления = СтрокаДляАвтозаполнения.АдресОтправления;
  МатрицаСтавок = Истина;
  
  // Подготовка структуры
  Структура = Новый Структура;
  Структура.Вставить("АдресОтправления", АдресОтправления);
  Структура.Вставить("МатрицаСтавок", МатрицаСтавок);
  Структура.Вставить("ТекстЗапол", Текст);
  
  // Вызов автоподбора
  ДанныеВыбора = Общий.АвтоПодборПунктаНазначения(Текст, , Структура);
  
  // Обработка результата автоподбора
  Если Не ЗначениеЗаполнено(ДанныеВыбора) Тогда
    Возврат; // Нет результатов для автоподбора
  КонецЕсли;

  // Здесь добавьте код для обработки и добавления результатов в интерфейс

КонецПроцедуры

Проверьте указанные моменты и внесите необходимые изменения в код.



   
ОтветитьЦитата