База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как активировать вновь добавленную строку в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 августа 2026 в 11:08 #38472
не активирует вновь добавленную строку &НаКлиенте
&ИзменениеИКонтроль(«Подключаемый_ПослеОбработкиШтрихкодов»)
Процедура VDP_Подключаемый_ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, ДополнительныеПараметры) Экспорт
Если РезультатОбработкиШтрихкода.ТребуетсяОбработкаШтрихкода Тогда
// Вызов основной обработки
ШтрихкодированиеИСКлиентПереопределяемый.ПослеОбработкиШтрихкодов(
ЭтотОбъект,
ДанныеДляОбработки,
КэшированныеЗначения);
// Проверяем, есть ли добавленные строки
Если РезультатОбработкиШтрихкода.ДобавленныеСтроки <> Неопределено И РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() > 0 Тогда
ПоследняяСтрока = РезультатОбработкиШтрихкода.ДобавленныеСтроки[РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() — 1];
ИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);
Если ИндексСтроки <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = ИндексСтроки;
Элементы.Товары.УстановитьФокус();
Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);
КонецЕсли;
КонецЕсли;
КонецЕсли;КонецПроцедуры
-
26 августа 2026 в 11:08 #38473
Проблема с тем, что не активируется вновь добавленная строка, часто связана с тем, что обновление табличной части и установка фокуса происходят слишком рано — до того, как форма успевает обновить данные и отобразить новую строку.
В вашем коде:
1С (Код)1234567ИндексСтроки = Элементы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока);Если ИндексСтроки <> Неопределено ТогдаЭлементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.УстановитьФокус();Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецЕсли;Что сделать, чтобы заработало:
1. Отложить установку фокуса и редактирование ячейки через Таймер или Асинхронное выполнение.
Например, обернуть код в
ОтложитьВыполнение:1С (Код)1234567891011Если ИндексСтроки <> Неопределено ТогдаОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.УстановитьФокус();Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецПроцедуры));КонецЕсли;2. Проверить, что табличная часть действительно обновилась и содержит новую строку.
Если вы добавляете строки программно, убедитесь, что данные в табличной части обновлены и форма их отобразила.
3. Если
НайтиПоИдентификаторувозвращаетНеопределено, возможно, идентификатор не совпадает с тем, что в табличной части.Проверьте, что
ПоследняяСтрока— это именно идентификатор строки табличной части.4. Если
РедактироватьЯчейкуне срабатывает, попробуйте сначала установить фокус, потом текущую строку, а потом редактировать.Иногда порядок важен:
1С (Код)123456789ОтложитьВыполнение(Новый ОписаниеПроцедуры(Процедура()Элементы.Товары.УстановитьФокус();Элементы.Товары.ТекущаяСтрока = ИндексСтроки;Элементы.Товары.РедактироватьЯчейку(ИндексСтроки, 0);КонецПроцедуры));—
Итог:
ИспользуйтеОтложитьВыполнениедля установки текущей строки и фокуса, чтобы дать время форме обновиться после добавления строки.—
Если нужно, могу помочь с примером полного кода с отложенным выполнением.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.