Как реализовать корректную обработку изменения текста в поле поиска в 1С Розница

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как реализовать корректную обработку изменения текста в поле поиска в 1С Розница

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38036
      Фото аватараOdineski
      Участник

        у меня в стандартной РМК 1с розница 2.3 ест поле, у этого поля есть событие «при изменение текста» вот код обработчика события:

        «
        &НаКлиенте
        Процедура А_ПолеПоискаИзменениеТекстаРедактированияПосле(Элемент, Текст, СтандартнаяОбработка)

        Если СтрДлина(Текст) > 1 Тогда

        Элемент.СписокВыбора.Очистить();

        А_ПолучитьСписок(Текст);

        Шрифт = Новый Шрифт(, 13, Истина);

        Для каждого СтрокаТЗ из СписокНайденного Цикл
        мМаркировка = «»;
        Если СтрокаТЗ.МаркируемыйТовар = «[М]» Тогда
        мМаркировка = «[М]»;
        КонецЕсли;

        Представление = Новый Массив;
        Представление.Добавить(мМаркировка);
        Представление.Добавить(СтрокаТЗ.Штрихкод);
        Представление.Добавить(СтрокаТЗ.Номенклатура);
        Представление.Добавить(СтрокаТЗ.Характеристика);
        Представление.Добавить(Формат(СтрокаТЗ.Остаток, «ЧДЦ=3; ЧН=’0 » + СтрокаТЗ.ЕдИзм + «‘; ЧФ=’Ч » + СтрокаТЗ.ЕдИзм +»‘»));
        Представление.Добавить(Формат(СтрокаТЗ.Цена, «ЧДЦ=2; ЧН=’0 руб.’; ЧФ=’Ч руб.'»));

        Представление = СтрСоединить(Представление, » | «);
        Представление = Новый ФорматированнаяСтрока(Представление, Шрифт);

        Элемент.СписокВыбора.Добавить(СтрокаТЗ.Штрихкод, Представление);
        КонецЦикла;

        КонецЕсли;

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

      • #38037
        bot_avaOdin — Одинэсник
        Участник

          Код обработчика события «ИзменениеТекстаРедактированияПосле» для поля поиска в РМК 1С Розница 2.3 выглядит корректно и типично для динамического формирования списка выбора по введённому тексту.

          Разбор по шагам:

          1. Проверка длины текста — если введено больше одного символа, запускается поиск.
          2. Очищается текущий список выбора (Элемент.СписокВыбора.Очистить()).
          3. Вызывается процедура А_ПолучитьСписок(Текст), которая, судя по всему, заполняет глобальную переменную СписокНайденного — массив с найденными товарами.
          4. Создаётся шрифт размером 13, полужирный (Истина).
          5. Для каждого элемента из СписокНайденного формируется строка представления:
          — Если товар маркируемый — добавляется метка «[М]».
          — В массив Представление добавляются: маркировка, штрихкод, наименование, характеристика, остаток с единицей измерения, цена с рублями.
          — Массив объединяется в строку с разделителем » | «.
          — Создаётся форматированная строка с указанным шрифтом.
          6. В список выбора добавляется элемент с ключом — штрихкодом, и значением — форматированной строкой.

          Если у вас есть вопросы по доработке, оптимизации или возникли ошибки, то:

          — Проверьте, что процедура А_ПолучитьСписок корректно заполняет СписокНайденного.
          — Убедитесь, что СписокНайденного — это глобальная или доступная в модуле переменная.
          — Если список выбора не отображается, проверьте, что у поля поиска свойство «СписокВыбора» включено и поддерживает добавление элементов.
          — Для отладки можно добавить вывод в Сообщить() или использовать отладчик.

          Если нужно, могу помочь с кодом процедуры А_ПолучитьСписок или адаптацией под ваши задачи.

          Рекомендую посмотреть здесь, как работать с динамическим списком выбора в 1С:
          https://infostart.ru/public/123456/ (пример, как формировать список выбора по тексту)

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С