База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как установить курсор на добавленную строку после обработки штрихкодов? › Ответ в теме: Как установить курсор на добавленную строку после обработки штрихкодов?
В вашем коде процедуры ПослеОбработкиШтрихкодов происходит обработка результатов сканирования штрихкодов, добавление или изменение строк табличной части, и обновление итогов.
Если ваша задача — после добавления строки (например, после добавления строки в табличную часть Объект.Товары) установить курсор на эту добавленную строку в форме, то нужно сделать это на клиенте, в модуле формы.
В серверном коде (как у вас) нельзя напрямую управлять курсором формы, так как серверная часть не имеет доступа к интерфейсу.
Что делать:
1. В процедуре ПослеОбработкиШтрихкодов на сервере вы формируете и добавляете строки в табличную часть (через РезультатОбработкиШтрихкода.ДобавленныеСтроки).
2. После вызова этой процедуры на клиенте (в модуле формы) нужно получить ссылку на добавленную строку и установить курсор на неё.
—
Пример установки курсора на добавленную строку в модуле формы (клиент):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Предположим, что после вызова серверной процедуры у вас есть массив добавленных строк // Например, РезультатОбработкиШтрихкода.ДобавленныеСтроки Если РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() > 0 Тогда // Получаем последнюю добавленную строку ПоследняяСтрока = РезультатОбработкиШтрихкода.ДобавленныеСтроки[РезультатОбработкиШтрихкода.ДобавленныеСтроки.Количество() - 1]; // Находим индекс этой строки в табличной части ИндексСтроки = ЭлементыФормы.Товары.Объект.НайтиПоИдентификатору(ПоследняяСтрока); Если ИндексСтроки <> Неопределено Тогда // Устанавливаем текущую строку табличного поля ЭлементыФормы.Товары.ТекущаяСтрока = ИндексСтроки; // Устанавливаем фокус на табличное поле ЭлементыФормы.Товары.УстановитьФокус(); // Опционально: начать редактирование ячейки (например, первый столбец) ЭлементыФормы.Товары.РедактироватьЯчейку(ИндексСтроки, 0); КонецЕсли; КонецЕсли; |
—
Ключевые моменты:
— Серверный код только формирует и записывает данные.
— Управление курсором и фокусом — задача клиентского модуля формы.
— Для поиска строки по идентификатору используйте метод НайтиПоИдентификатору.
— Установка текущей строки и фокуса делается через свойства и методы табличного поля формы.
—
Если у вас нет прямого доступа к массиву добавленных строк на клиенте, то можно передавать идентификатор добавленной строки из серверной процедуры в клиентскую через параметры вызова или через структуру результата.
—
Если нужно, могу помочь с примером вызова серверной процедуры из формы и обработкой результата для установки курсора.