Поле строка - использование маски

Albawarden

Посетитель
#1
Использую поле строка для введения Фамилии , для быстроты набора указал маску типа >a!aaaaaaaaaaaaaaaaaaa . Количество символов на глаз с запасом , хотя есть вариант что фамилия будет еще длиннее . При переходе в поле по Tab все работает неплохо , но если оператор клацает в поле мышкой , то курсор становится не в начало строки , что усложняет работу . Может в новых версиях что-то изменилось на этот счет ?
 

Vladimir

Администратор
Команда форума
#2
При использовании маски строка уже заполнена символами, поэтому при клике в ней курсор будет становится именно в указанную позицию - это обычное поведение маски в любых программах.

Можно решить задачу через приведение первого символа к верхнему регистру при помощи функции [Upper()] и добавления всех остальных символов строки (например до 50). Длину строки при вводе также надо ограничить 50 символами при помощи регулярного выражения:
.{,50}
На первый взгляд - результирующее составное поле "ФИО" очень большое и сложное для набора. Но сделано оно было за пару минут: в Excel вставлено протяжкой 50 строк, а в соседнем столбце использована формула сцепления:
=СЦЕПИТЬ("[";A1;"(Фамилия)]")
50 строк перенесено в текстовый редактор и удалены символы конца строк. Для "Имя" и "Отчества" были заменены слова через поиск и замену в пару кликов.
Затем всё вставлено в составное поле:
Формула в составном поле посимвольного формирования строки.png
Результат работы:
Пример строк с большой буквы.png
Пример проекта во вложении.
 

Вложения

#3
Спасибо большое, теперь не надо задумываться (о регистре заглавной) и нажимать на шифт при наборе (иногда забываю).
Очень удобно набирать ФИО, например: иванов иван иваныч, а получать Иванов Иван Иваныч.

Подскажите, пожалуйста, а как прописать формулу что бы так же при наборе выдавалось: Иванов И.И.?
До этого пользовалась функцией [Фамилия] [1(Имя)].[1(Отчество)].
Но для того что бы она работала корректно надо в водить ФИО обязательно с учетом регистра (больших и маленьких букв).
Попробовала в ваш вариант внести изменения, не получилось((
 

Vladimir

Администратор
Команда форума
#4
Причина в том, что нельзя применять составное поле в другом составном поле - в случае взаимного использования, или в цепочке обработки, возникает коллизия. Решение в данном случае такое: копировать составное поле в строку, которую далее можно использовать в другом составном поле.
Несколько неудобное решение и мы подумаем над алгоритмом, чтобы упростить данную задачу.
Кроме того, в следующей версии конструктора мы уже добавили функцию для приведения первого символа строки к верхнему регистру.
 

Vladimir

Администратор
Команда форума
#6
Это будет версия 6.0. До её выхода ещё будут выпускаться обновления для версии 5.1 с техническими подверсиями.
Изначально планировалось выпустить версию 5.2, но изменения стали настолько масштабными, как по внешнему оформлению, так и во внутренней работе, что было принято решение о выпуске совершенно новой версии со своим логотипом.