Как ускорить ввод товара в поступление УТ 10.3 и избежать постоянного нажатия Enter

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В работе менеджеров по закупкам и складских работников скорость заполнения документов является критическим фактором. В типовой конфигурации 1С:Управление торговлей 10.3 при добавлении новой строки в табличную часть «Товары» система по умолчанию заставляет пользователя проходить через все колонки: «Номенклатура», «Количество», «Единица измерения», «Цена», «Сумма» и так далее. Если в бизнес-процессе компании количество товара чаще всего равно единице, а цена подтягивается автоматически из прайс-листа, то постоянные нажатия клавиши Enter становятся избыточным действием, замедляющим работу. Рассмотрим, как оптимизировать этот процесс программными и платформенными средствами.

Метод 1. Использование свойства «Пропускать при вводе»

Проанализируем самый простой и эффективный способ, не требующий написания сложного кода. У каждой колонки табличного поля в обычных формах есть специфическое свойство, которое управляет поведением курсора при навигации клавишей Enter или Tab.

Разберем по шагам, как это настроить в конфигураторе:

  1. Откроем форму документа (например, «ПоступлениеТоваровУслуг») в конфигураторе.
  2. Перейдем на закладку «Товары» и выберем табличное поле.
  3. Откроем список колонок табличного поля.
  4. Для колонок, которые не требуют ручного редактирования (например, «Ед. изм.», «Ставка НДС», «Сумма»), установим свойство ПропускатьПриВводе в значение Истина.

После этой настройки, когда менеджер выберет номенклатуру и нажмет Enter, фокус ввода автоматически перепрыгнет через «пропускаемые» колонки. Если пропустить все поля после номенклатуры, система сразу предложит создать новую строку или перейдет к следующему этапу редактирования.

Метод 2. Программное управление фокусом через событие «ПриИзменении»

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

Нам необходимо перехватить событие изменения номенклатуры. Проанализируем следующий код:


Процедура ТоварыНоменклатураПриИзменении(Элемент)
    
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    
    // Выполняем стандартное заполнение цен и единиц измерения
    ОбработкаНоменклатурыПриИзменении(СтрокаТабличнойЧасти);
    
    // Устанавливаем количество по умолчанию, если оно не заполнено
    Если СтрокаТабличнойЧасти.Количество = 0 Тогда
        СтрокаТабличнойЧасти.Количество = 1;
        // Принудительно пересчитываем суммы
        РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, "Товары");
    КонецЕсли;
    
    // Если нужно сразу закончить редактирование и перейти к вводу новой строки
    ЭлементыФормы.Товары.ЗакончитьРедактированиеСтроки(Ложь);
    
КонецПроцедуры

Важный момент: в обычных формах прямое управление фокусом (метод ТекущаяКолонка) внутри события ПриИзменении может работать нестабильно. Выясним причину: платформа еще не завершила цикл обработки текущего изменения, и попытка «увести» фокус может быть проигнорирована. В таких случаях опытные разработчики используют ПодключитьОбработчикОжидания с минимальным интервалом (0.1 сек), чтобы выполнить переход фокуса сразу после того, как платформа освободится.

Метод 3. Оптимизация формы «Подбор товаров»

Рассмотрим альтернативный сценарий. Часто менеджеры используют кнопку «Подбор» вместо прямого ввода в таблицу через Insert. В типовой УТ 10.3 форма подбора имеет очень гибкие настройки, которые пользователи часто игнорируют.

Проанализируем ситуацию: в окне подбора в верхней части есть кнопка «Настройка». Если мы нажмем её, то сможем снять галочки «Запрашивать количество» и «Запрашивать цену». В этом режиме при двойном клике на товар или нажатии Enter в списке, товар мгновенно падает в корзину (или сразу в документ) с количеством 1 и текущей ценой. Это позволяет менеджеру «нащелкать» список артикулов, не отвлекаясь на диалоговые окна.

Метод 4. Создание поля для «быстрого ввода» артикулов

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

Разберем логику работы такого механизма:

  1. Добавим на форму не связанное с данными поле ввода (строкового типа) с именем ПолеБыстрогоВвода.
  2. В свойствах поля установим АвтоОтметкаНезаполненного в Ложь и включим событие ПриИзменении.

Пример кода для обработки ввода:


Процедура ПолеБыстрогоВводаПриИзменении(Элемент)
    
    АртикулДляПоиска = Элемент.Значение;
    Если ПустаяСтрока(АртикулДляПоиска) Тогда
        Возврат;
    КонецЕсли;
    
    // Ищем номенклатуру по артикулу
    НайденнаяСсылка = Справочники.Номенклатура.НайтиПоАртикулу(АртикулДляПоиска);
    
    Если Не НайденнаяСсылка.Пустая() Тогда
        // Добавляем новую строку в ТЧ
        НоваяСтрока = Товары.Добавить();
        НоваяСтрока.Номенклатура = НайденнаяСсылка;
        
        // Вызываем типовые процедуры заполнения
        ПриИзмененииНоменклатурыТоваров(НоваяСтрока);
        НоваяСтрока.Количество = 1;
        РассчитатьСуммуТабЧасти(НоваяСтрока, "Товары");
        
        // Очищаем поле для следующего ввода и оставляем фокус в нем
        Элемент.Значение = "";
        ЭлементыФормы.ПолеБыстрогоВвода.УстановитьФокус();
    Иначе
        Предупреждение("Товар с артикулом " + АртикулДляПоиска + " не найден!");
        Элемент.Значение = "";
    КонецЕсли;
    
КонецПроцедуры

Такой подход позволяет менеджеру просто вводить артикул, нажимать Enter и тут же вводить следующий. Это исключает необходимость работы с табличной частью напрямую.

Метод 5. Порядок обхода и горячие клавиши

Не стоит забывать и о стандартных возможностях платформы. Посмотрим на настройку Порядок обхода. В режиме редактирования формы (меню «Форма» -> «Порядок обхода») мы можем четко определить, в какой последовательности курсор перемещается по элементам. Если убрать из списка обхода ненужные элементы управления, работа станет значительно комфортнее.

Также напомним менеджеру о полезных сочетаниях клавиш:

Подведем итоги: для решения проблемы «лишних нажатий» лучше всего комбинировать установку свойства ПропускатьПриВводе для второстепенных колонок и небольшую программную доработку в событии ПриИзменении, которая будет автоматически подставлять единичное количество. Если же объем данных очень велик, стоит рассмотреть вариант с «полем быстрого набора», который превратит ввод данных в линейный и максимально быстрый процесс.

← На главную