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