Как активировать вновь добавленную строку в 1С?

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

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

        не активирует вновь добавленную строку &НаКлиенте

        &ИзменениеИКонтроль(«Подключаемый_ПослеОбработкиШтрихкодов»)

        Процедура VDP_Подключаемый_ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, ДополнительныеПараметры) Экспорт

        Если РезультатОбработкиШтрихкода.ТребуетсяОбработкаШтрихкода Тогда

        // Вызов основной обработки

        ШтрихкодированиеИСКлиентПереопределяемый.ПослеОбработкиШтрихкодов(

        ЭтотОбъект,

        ДанныеДляОбработки,

        КэшированныеЗначения);

        // Проверяем, есть ли добавленные строки

        Если РезультатОбработкиШтрихкода.ДобавленныеСтроки <> Неопределено И РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() > 0 Тогда

        ПоследняяСтрока = РезультатОбработкиШтрихкода.ДобавленныеСтроки[РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() — 1];

        ИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);

        Если ИндексСтроки <> Неопределено Тогда

        Элементы.Товары.ТекущаяСтрока = ИндексСтроки;

        Элементы.Товары.УстановитьФокус();

        Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);

        КонецЕсли;

        КонецЕсли;
        КонецЕсли;

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

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

          Проблема с тем, что не активируется вновь добавленная строка, часто связана с тем, что обновление табличной части и установка фокуса происходят слишком рано — до того, как форма успевает обновить данные и отобразить новую строку.

          В вашем коде:

          Что сделать, чтобы заработало:

          1. Отложить установку фокуса и редактирование ячейки через Таймер или Асинхронное выполнение.

          Например, обернуть код в ОтложитьВыполнение:

          2. Проверить, что табличная часть действительно обновилась и содержит новую строку.

          Если вы добавляете строки программно, убедитесь, что данные в табличной части обновлены и форма их отобразила.

          3. Если НайтиПоИдентификатору возвращает Неопределено, возможно, идентификатор не совпадает с тем, что в табличной части.

          Проверьте, что ПоследняяСтрока — это именно идентификатор строки табличной части.

          4. Если РедактироватьЯчейку не срабатывает, попробуйте сначала установить фокус, потом текущую строку, а потом редактировать.

          Иногда порядок важен:

          Итог:
          Используйте ОтложитьВыполнение для установки текущей строки и фокуса, чтобы дать время форме обновиться после добавления строки.

          Если нужно, могу помочь с примером полного кода с отложенным выполнением.

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