При разработке и доработке конфигураций на платформе 1С:Предприятие разработчики нередко сталкиваются с ситуацией, когда строковое поле ввода ведет себя как числовое: система позволяет вводить исключительно цифры и пробелы, блокируя любые буквенные символы. При этом в свойствах самого элемента управляемой формы маска отсутствует, а стандартные обработчики проверки ввода отключены. Разберем по шагам, где платформа 1С может скрывать подобные ограничения и как их обнаружить и устранить.
Самая распространенная причина, о которой часто забывают разработчики, заключается в том, что свойство Маска и параметры форматирования присутствуют не только у визуального элемента формы, но и у самого реквизита объекта (справочника, документа, плана видов характеристик и т. д.). Если реквизит связан с элементом формы, платформа автоматически транслирует правила ввода из метаданных на форму.
Проанализируем порядок действий для проверки метаданных:
9 (разрешены только цифры), его необходимо очистить.В типовых конфигурациях (таких как «1С:Управление торговлей», ERP или КА) интерфейс часто настраивается динамически при открытии формы с помощью механизмов Библиотеки стандартных подсистем (БСП). В этом случае в конфигураторе свойства могут быть пустыми, но заполняться при инициализации формы.
Проверим модули формы и связанные общие модули:
ПриСозданииНаСервере, ПриЧтенииНаСервере и ПриОткрытии.Элементы.НомерСчета) во всем модуле. Обратим внимание на прямое переопределение свойств маски:
// Пример программного ограничения ввода в типовых механизмах
Элементы.НомерСчета.Маска = "99999 99999 99999 99999";
Также правила проверки могут быть заложены в общих модулях подсистем нормативно-справочной информации, отвечающих за валидацию расчетных или лицевых счетов.
Помимо очевидного обработчика ОкончаниеВводаТекста, ограничение или постобработка введенных данных могут быть реализованы через другие события элемента управления и формы:
ОбработкаВводаСтроки.АвтоПодбор, в котором может перехватываться набранный текст.ПриИзменении, где алгоритм может принудительно очищать строку от нецифровых символов регулярным выражением или функциями работы со строками сразу после того, как поле потеряет фокус.Если в информационной базе подключены расширения конфигурации, они могут модифицировать поведение реквизитов и форм без изменения основной ветки метаданных. Выясним причину возможного перехвата:
&Вместо, &До или &После для обработчиков формы в модулях расширения. В основной конфигурации код может быть закомментирован, но продолжать выполняться из расширения.Нередки ситуации, когда изменения уже внесены в конфигураторе, но в пользовательском сеансе поле продолжает работать по старым правилам до перезапуска программы. Причиной такого поведения является кэширование метаданных платформой, особенно если в базе применялось динамическое обновление (демон-обновление).
Для гарантированного сброса некорректного поведения выполним следующие шаги:
/ClearCache, либо удалив временные папки в каталогах AppData\Local\1C\1cv8 и AppData\Roaming\1C\1cv8.Платформа 1С сохраняет индивидуальные настройки внешнего вида и расположения элементов формы для каждого пользователя. В редких случаях в хранилище пользовательских настроек могут зафиксироваться старые параметры отображения поля.
Для проверки перейдем в пользовательский режим, откроем проблемную форму, нажмем кнопку Еще в командной панели и выберем пункт Установить стандартные настройки.