Как установить курсор на добавленную строку после обработки штрихкодов?

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

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

        &НаСервере
        Процедура ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода,КэшированныеЗначения) Экспорт

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

        Если ТипЗнч(РезультатОбработкиШтрихкода.ИсходныеДанные) = Тип(«Структура») Тогда
        ДанныеШтрихкодов = Новый Массив;
        ДанныеШтрихкодов.Добавить(РезультатОбработкиШтрихкода.ИсходныеДанные);
        Иначе
        ДанныеШтрихкодов = РезультатОбработкиШтрихкода.ИсходныеДанные;
        КонецЕсли;

        ВидыПродукцииИС = Новый Массив(ОбщегоНазначенияИСМПКлиентСерверПовтИсп.УчитываемыеВидыМаркируемойПродукции());

        Если ПолучитьФункциональнуюОпцию(«ВестиСведенияДляДекларацийПоАлкогольнойПродукции») Тогда
        ВидыПродукцииИС.Добавить(Перечисления.ВидыПродукцииИС.Алкогольная);
        КонецЕсли;

        ПараметрыЗаполнения = ИнтеграцияИС.ПараметрыЗаполненияТабличнойЧастиТовары(ВидыПродукцииИС);

        ПараметрыЗаполнения.ПересчитатьКоличествоЕдиниц = Истина;
        ПараметрыЗаполнения.МаркируемаяПродукцияВТЧ = Истина;

        //ШтрихкодированиеИС
        ДанныеДляОбработки = Неопределено;
        ШтрихкодированиеИСПереопределяемый.ПодготовитьДанныеДляОбработкиШтрихкодов(
        ЭтотОбъект, ДанныеШтрихкодов, ПараметрыЗаполнения, ДанныеДляОбработки);

        //ШтрихкодированиеИС
        ШтрихкодированиеИСПереопределяемый.ОбработатьШтрихкоды(
        ЭтотОбъект, ДанныеДляОбработки, КэшированныеЗначения);

        // Если это не алкогольная продукция, и номенклатура по штрихкоду найдена — добавим ее
        Если ДанныеДляОбработки.МассивСтрокСАкцизнымиМарками.Количество() = 0
        И ДанныеДляОбработки.ТекущаяСтрока <> Неопределено Тогда

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

        Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.СтавкаНДС) Тогда
        РезультатОбработкиШтрихкода.ДобавленныеСтроки.Добавить(ТекущаяСтрока);
        Иначе
        РезультатОбработкиШтрихкода.ИзмененныеСтроки.Добавить(ТекущаяСтрока);
        КонецЕсли;

        КонецЕсли;

        КонецЕсли;

        ОбработатьСтрокиТЧ(
        РезультатОбработкиШтрихкода.ДобавленныеСтроки,
        РезультатОбработкиШтрихкода.ИзмененныеСтроки,
        КэшированныеЗначения);

        ОбновитьИтоги(ЭтотОбъект);
        КонецПроцедуры

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

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

          Если ваша задача — после добавления строки (например, после добавления строки в табличную часть Объект.Товары) установить курсор на эту добавленную строку в форме, то нужно сделать это на клиенте, в модуле формы.

          В серверном коде (как у вас) нельзя напрямую управлять курсором формы, так как серверная часть не имеет доступа к интерфейсу.

          Что делать:

          1. В процедуре ПослеОбработкиШтрихкодов на сервере вы формируете и добавляете строки в табличную часть (через РезультатОбработкиШтрихкода.ДобавленныеСтроки).

          2. После вызова этой процедуры на клиенте (в модуле формы) нужно получить ссылку на добавленную строку и установить курсор на неё.

          Пример установки курсора на добавленную строку в модуле формы (клиент):

          Ключевые моменты:

          — Серверный код только формирует и записывает данные.
          — Управление курсором и фокусом — задача клиентского модуля формы.
          — Для поиска строки по идентификатору используйте метод НайтиПоИдентификатору.
          — Установка текущей строки и фокуса делается через свойства и методы табличного поля формы.

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

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

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