Как пропускать ввод характеристики в табличной части документа, если она не используется?

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

При разработке управляемых форм в 1С:УНФ часто возникает задача оптимизации ввода данных пользователем. Одной из частых проблем является необходимость «перепрыгивать» через колонку Характеристика при заполнении табличной части, если для выбранной номенклатуры учет характеристик не ведется. Давайте разберем, какими способами можно добиться такого поведения интерфейса.

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

Самым эффективным и правильным способом с точки зрения UX является динамическое управление свойством колонки ПропускатьПриВводе. Это свойство позволяет платформе 1С игнорировать ячейку при навигации клавишами Enter или Tab.

Чтобы реализовать это решение, выполним следующие шаги:

  1. Найдем обработчик события ПриИзменении для колонки Номенклатура в табличной части документа.
  2. Внутри этого обработчика добавим логику проверки того, использует ли выбранная номенклатура характеристики.
  3. Программно установим значение свойства ПропускатьПриВводе для элемента формы, соответствующего колонке Характеристика.

Рассмотрим пример кода, который можно использовать в процедуре ПриИзменении:


&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено Тогда
        // Проверяем, используются ли характеристики для данной номенклатуры
        ИспользоватьХарактеристики = ПроверитьИспользованиеХарактеристик(ТекущиеДанные.Номенклатура);
        
        // Управляем поведением фокуса
        Элементы.ТоварыХарактеристика.ПропускатьПриВводе = НЕ ИспользоватьХарактеристики;
    КонецЕсли;
КонецПроцедуры

Обратите внимание: чтобы данный подход работал стабильно, важно убедиться, что свойство АктивизироватьПоУмолчанию у колонки Характеристика настроено корректно, а также учитывать, что ПропускатьПриВводе динамически меняет поведение интерфейса в зависимости от данных в конкретной строке.

Настройка связи параметров выбора

Еще одним инструментом в арсенале разработчика является СвязьПараметровВыбора. Хотя этот механизм чаще используется для ограничения списка выбора, в связке с правильно настроенными формами он помогает системе понять контекст данных.

Если вы укажете СвязьПараметровВыбора для поля Характеристика по параметру Номенклатура, платформа будет фильтровать доступные варианты. Однако для того, чтобы фокус действительно «перепрыгивал» колонку, одного отбора недостаточно. В дополнение к этому рекомендуется комбинировать данный метод с описанным выше программным управлением свойством ПропускатьПриВводе.

Использование условного оформления

В некоторых случаях для визуального выделения или управления доступностью полей применяется УсловноеОформление. Хотя условное оформление не всегда имеет прямой доступ к реквизитам Номенклатуры для изменения свойства ПропускатьПриВводе, оно отлично подходит для индикации того, что поле является обязательным или наоборот — не требует заполнения.

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

  1. Откройте форму списка или документа в конфигураторе.
  2. Перейдите на вкладку УсловноеОформление.
  3. Создайте новое правило, где условие проверяет, используется ли Характеристика для номенклатуры (через параметры объекта).
  4. Настройте оформление так, чтобы пользователь визуально понимал, активна ли ячейка для ввода.

Рекомендации по реализации

При доработке 1С:УНФ важно учитывать наличие типовых механизмов. Часто в системе уже существуют общие модули или подписки на события, которые могут перехватывать управление фокусом после выбора номенклатуры. Поэтому:

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

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

Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыКоличество;

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

Используя предложенные методы в совокупности, вы сможете добиться максимально комфортной и быстрой работы пользователей в 1С:УНФ, исключив лишние остановки при вводе номенклатуры.

← На главную