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