При разработке управляемых форм в 1С:УНФ часто возникает задача оптимизации ввода данных пользователем. Одной из частых проблем является необходимость «перепрыгивать» через колонку Характеристика при заполнении табличной части, если для выбранной номенклатуры учет характеристик не ведется. Давайте разберем, какими способами можно добиться такого поведения интерфейса.
Самым эффективным и правильным способом с точки зрения UX является динамическое управление свойством колонки ПропускатьПриВводе. Это свойство позволяет платформе 1С игнорировать ячейку при навигации клавишами Enter или Tab.
Чтобы реализовать это решение, выполним следующие шаги:
ПриИзменении для колонки Номенклатура в табличной части документа.ПропускатьПриВводе для элемента формы, соответствующего колонке Характеристика.Рассмотрим пример кода, который можно использовать в процедуре ПриИзменении:
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
// Проверяем, используются ли характеристики для данной номенклатуры
ИспользоватьХарактеристики = ПроверитьИспользованиеХарактеристик(ТекущиеДанные.Номенклатура);
// Управляем поведением фокуса
Элементы.ТоварыХарактеристика.ПропускатьПриВводе = НЕ ИспользоватьХарактеристики;
КонецЕсли;
КонецПроцедуры
Обратите внимание: чтобы данный подход работал стабильно, важно убедиться, что свойство АктивизироватьПоУмолчанию у колонки Характеристика настроено корректно, а также учитывать, что ПропускатьПриВводе динамически меняет поведение интерфейса в зависимости от данных в конкретной строке.
Еще одним инструментом в арсенале разработчика является СвязьПараметровВыбора. Хотя этот механизм чаще используется для ограничения списка выбора, в связке с правильно настроенными формами он помогает системе понять контекст данных.
Если вы укажете СвязьПараметровВыбора для поля Характеристика по параметру Номенклатура, платформа будет фильтровать доступные варианты. Однако для того, чтобы фокус действительно «перепрыгивал» колонку, одного отбора недостаточно. В дополнение к этому рекомендуется комбинировать данный метод с описанным выше программным управлением свойством ПропускатьПриВводе.
В некоторых случаях для визуального выделения или управления доступностью полей применяется УсловноеОформление. Хотя условное оформление не всегда имеет прямой доступ к реквизитам Номенклатуры для изменения свойства ПропускатьПриВводе, оно отлично подходит для индикации того, что поле является обязательным или наоборот — не требует заполнения.
Разберем логику настройки:
УсловноеОформление.Характеристика для номенклатуры (через параметры объекта).При доработке 1С:УНФ важно учитывать наличие типовых механизмов. Часто в системе уже существуют общие модули или подписки на события, которые могут перехватывать управление фокусом после выбора номенклатуры. Поэтому:
Во-первых, всегда проверяйте, не конфликтует ли ваш код с типовой логикой конфигурации. Иногда может потребоваться отключение стандартных обработчиков.
Во-вторых, если свойство ПропускатьПриВводе не дает желаемого результата из-за специфики конкретной формы, вы можете программно управлять свойством ТекущийЭлемент. В обработчике ПриИзменении можно принудительно перевести фокус на следующую колонку (например, Количество), используя метод:
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыКоличество;
Этот метод является радикальным, но гарантирует, что пользователь будет переведен именно в ту ячейку, которая требуется для ввода количества, минуя характеристики, если они не заданы для номенклатуры.
Используя предложенные методы в совокупности, вы сможете добиться максимально комфортной и быстрой работы пользователей в 1С:УНФ, исключив лишние остановки при вводе номенклатуры.