Как программно подчеркнуть текст в 1с

Обновлено: 02.07.2024

Использование надписей в формах

Надписи - вспомогательные элементы управления и нужны для того, чтобы объяснить пользователю назначение других элементов или сообщить какую-то полезную информацию. Чаще всего они используются для пояснения предназначения конкретных полей ввода.

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

Чаще всего надпись является статическим объектом, т.е. никогда не меняет своего текста (это не относится к надписи в режиме "бегущей строки", т.к. она по сути является динамическим объектом).

Выравнивание влево

Основные варианты размещения надписей для полей ввода - выровненные влево и выровненные вправо.

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

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


Интервал до поля ввода

Текст надписи не должен примыкать вплотную к полю ввода, т.к. это мешает беглому чтению из-за того, что взгляд натыкается на слишком близко расположенные друг к другу слова:

Оптимальным является отступ на ширину рамки редактирования. При таком отступе надпись и поле ввода отделены друг от друга, но еще воспринимаются вместе как единое целое.

Для вертикальных групп полей ввода с надписями ширина надписей выбирается по самой длинной надписи (в данном случае это надпись "Подразделение". В этом случае связующим звеном между надписью и полем ввода будет принадлежность к группе. Т.е. несмотря на удаленность надписей от поля ввода, они все равно воспринимаются как единое целое, потому что визуально объединены в группу:

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

Две строки

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

Текст надписи

Надписи должны быть короткими и точными. Не рекомендуется дублировать в тексте надписей название объекта, свойства которого показывает или редактирует данная форма. Например, в данной форме дублирование в каждой надписи слова "пользователь" делает форму сложнее для восприятия:

Если убрать слово "пользователь" из надписей, то форма сразу воспринимается по-другому:

Не следует стремиться описать в надписи все особенности данного поля ввода. Например, в приведенном ниже фрагменте формы надпись "Формулировка" вполне понятно характеризует поле ввода, хотя ее можно было бы назвать "Полная формулировка", или "Полная формулировка (отличная от наименования):":

В следующем примере надпись "Номер и дата разрешения ЦБ:" можно заменить на "Разрешение ЦБ:" без какого-либо ухудшения информативности этой группы полей формы:

В случае необходимости подробное описание можно приводить во всплывающей подсказке. При составлении подсказок нужно помнить, что подсказка живет на экране около 5 секунд и обычный человек за это время успеет прочесть всего лишь 6-8 слов на русском языке.

Сокращения и аббревиатуры

В тексте надписей рекомендуется не использовать сокращения, т.к. они значительно затрудняют восприятие информации и раздражают пользователя (например, "Подразд-ние:", "Инвентар-ция:", "Расчетный к-т:".

В то же время использование общеупотребительных сокращений часто помогает сделать формы более наглядными (например, "Юр. адрес:", "Факт. адрес:").
Использование общеупотребительных аббревиатур "ИНН, ОКПО, ФИО" повышает наглядность и лаконичность форм, а придуманные самим разработчиком или малораспространенные аббревиатуры могут запутать пользователя и даже сделать форму нечитабельной.

Цвет и шрифт

Многообразие цветов и шрифтов отрицательно влияет на эргономику форм. Отличные от стандартных цвета и шрифты рекомендуется применять лишь в особых случаях для привлечения внимания пользователя. Выделение цветом, например, применяется в типовых конфигурациях, для того чтобы пользователь мог различать статические надписи от динамических:

Мне частенько приходится взаимодействовать с 1С-разработчиками, и во время совместной работы над проектами замечаю, что далеко не все из них хорошо знают свой главный инструмент – «Конфигуратор». Причем это не относится к степени крутости девелопера. Как оказалось, даже синьоры пользуются далеко не всеми возможностями «Конфигуратора», а ведь они могут сэкономить кучу времени, а тем самым повысить продуктивность разработчика.

Под катом я решил собрать несколько полезных фишек стандартного конфигуратора, которыми пользуюсь регулярно. Многие из них появились в платформе «1С:Предприятие 8.3.х», поэтому перед тестированием обязательно проверьте номер версии установленной у вас платформы.

Закладки

Хорошо, если новые функции добавлены в самый конец модуля, а если потребовалось расположить в разных частях? Вот тут начинается самое интересное. Одни программисты начинают скролить текст (как правило, этим страдают новички). Более продвинутые применяют поиск по тексту (Ctrl + F).

Оба способа рабочие, но пользоваться ими долго. Куда правильней использовать функцию «закладки». Например, переходим к какой-нибудь строке. Нажимаем ALT + F2 и получаем закладку (слева от строки отобразиться квадратик).


Убирается закладка тем же сочетанием клавиш. Так вот, закладок может быть в модуле расставлено много. По ним легко передвигаться нажатием клавиши F2. Фича крутая, но она была изначально не доделана и не позволяла, например, передвигаться по закладкам в разных модулях. Это досадное ограничение создавало лишние тормоза для программистов, привыкших к хорошим IDE (например, Visual Studio, PHP Storm).

В версии 8.3 недочет исправили и сделали классную вещь – «Список закладок». Нажимаем клавиши «Ctrl + Shift + F2», и перед нами откроется окно с полным списком установленных закладок:


В нем перечислены все закладки в разрезе модулей. Для каждой закладки указан номер строк и доступен перечень действий: перейти к коду, удалить закладку, удалить все закладки.

Таким образом, работать с закладками стало на порядок проще. Еще бы добавили возможность установки горячих клавиш на закладки, и стало бы совсем хорошо. Помню еще со времен «Delphi 6» привык к установке закладок по горячим клавишам Alt + <Цифра>. Наставил закладок и быстро перемещайся по ним.

Группировка строк

В «1С:Предприятие» с самого начала была одна большая проблема – отсутствие возможности создавать дополнительные модули для определенных объектов. Например, есть у меня справочник «Контрагенты» и мне хочется разделить его функционал на модули. Допустим, функционала очеееень много. Так вот, в моем распоряжении все равно стандартный набор: Модуль объекта, Модуль менеджера и модуль формы. Понятное дело, что у каждого модуля своя роль, но что делать мне с моими 100500 функциями, которые относятся непосредственно к справочнику «Контрагенты»?

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

Вот взять хотя бы библиотеку БСП. Стоит ее внедрить и в количестве модулей начинает теряться. Я уже молчу про конфигурации, которые построены на базе БСП. Там и сто пятьсот модулей от БСП, и еще столько же специально для конфигурации.

В общем, неудобство налицо (особенно после опыта разработки в языках, где нет подобных ограничений). Увы, спастись от этой проблемы в настоящее время не получится. Зато, мы можем использовать возможности группировки функций/процедур в модулях.+

Например, есть у нас общий модуль «РаботаСКонтрагентами». В нем часть функций отвечают за поиск контрагента, другая часть за загрузку контрагентов из внешних источников и т.д. Чтобы не потеряться во всем этом многообразии возможностей, можно логически сгруппировать все функции/процедуру. Для этого в платформе 8.3 появилась функция под названием «Области». Рассмотрим пример:

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


Клик мышкой по плюсику развернет область, и мы увидим свернутые функции. Если хочется сразу развернуть все имеющиеся функции (в пределах области), то кликаем по плюсику удерживая Ctrl.

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

Форматирование кода

Собственно говоря, тут и рассказывать особо нечего – выделяем код, нажимаем «Alt + Shift + F» и редактор попытается привести его в божеский вид в соответствии с вшитым code-style. Функция работает вполне сносно и ей обязательно надо пользоваться. Пишу это потому, что неоднократно видел, как разработчики пытаются отбивать отступы самостоятельно. Это конечно круто, но зачем тратить время, если большую часть работы можно выполнить одной горячей клавишей?

Комментирование

Опять же, никаких секретных действий – выделили код, нажали “Ctrl + num /” (слеш на дополнительной области клавиатуры) и получили закомментированный участок. Захотели вернуть обратно? Не беда! Выделяем закомментированный участок кода, нажимаем «Ctrl + Shift + num /» и мгновенно приводим его в боевой режим. Фишка попсовая, но опять же, новички про нее не знают, и тратят кучу времени на расстановку слешей. Да еще и матерят компанию «1С», за отсутствие возможности многострочного комментирования, как в продвинутых язык программирования.

Быстрая вставка специальных символов

Иногда возникает необходимость быстро вставить в редактор специальный символ (которого нет на клавиатуре). В большинстве случаев разработчики используют для этого функции встроенного языка (например, символ). А ведь есть способ проще. Если удерживать клавишу Alt и набрать на доп. клавиатуре код нужного символа (из таблицы ASKII), то он тут же будет вставлен. Например, держим ALT и набираем 65. На выходе получаем букву «А». Или вводим 4 и получаем бубновую масть.


Вставка специальных символов

Хорошо, с этим понятно, но какой от этого еще можно получить профит? Лично я, таким образом вставляю символ амперсанда (&). Все знают, что этот символ используется для определения параметров в языке запросов. Неудобство состоит в том, что текст запроса мы пишем на русском языке, а для добавления этого символа перед параметром приходится переключить на английский, затем нажать Shift + 7, а потом вернуться обратно на русский.

Чтобы избавить себя от этой рутиной последовательности действий, я использую выше озвученную функцию. С ее помощью для установки амперсанда требуется лишь набрать с удержанной клавишей «alt» последовательность цифр 38. При этом надобность в двойном переключении языка отпадает.

Многие могут подумать, что я искусственно раздул проблему из ничего, но тут просто дело привычки. Кода приходится писать много и вот такие мелочи немного повышают производительность и избавляют от лишних нажатий клавиши backspace (для удаления случайно набранных символов). Не убедил? Тогда просто выделите время и попробуйте себя переучить

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

Код 1C v 8.х Код 1C v 8.х Код 1C v 8.х Код 1C v 8.х

Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.

Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.

Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"

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

Элемент управления в табличном документе

Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.

Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.

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

Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"

Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:

Разберем самые важные свойства и методы:

Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.

Свойство "Видимость" позволяет показать или скрыть элемент управления.

Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.

Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

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

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

Функция форматирования СтрШаблон()

<Шаблон> - это строка, в которую нужно подставить представления параметров.

<Значение1> , . <Значение10> - это параметры (максимально - десять), представления которых нужно подставить в строку.

Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, . %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.

Например, результатом выполнения такого оператора:


Ошибка в данных в строке 2 (требуется тип Дата)

Функция работы со строками СтрСравнить()

Эта функция сравнивает две строки без учёта регистра. Например, так:


Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений:


Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений, работает и в тонком клиенте, и в веб-клиенте.

Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()

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

Например, их удобно использовать в операторе Если:


Функции работы со строками СтрРазделить(), СтрСоединить()

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


Функция работы со строками СтрНайти()

Вместо старой функции Найти() мы реализовали новую функцию, которая имеет дополнительные возможности:

  • Поиск в разных направлениях (с начала, с конца);
  • Поиск с указанной позиции;
  • Поиск вхождения с указанным номером (второе, третье и т.д.).

Фактически она дублирует возможности старой функции. Так сделано для того, чтобы сохранить совместимость с модулями, скомпилированными в старых версиях. Старую функцию Найти() рекомендуется больше не использовать.

Ниже приведён пример, использующий новые возможности поиска. Поиск в обратном направлении удобен тогда, когда вам нужен последний фрагмент формализованной строки, например, полное имя файла в URL. А поиск с указанной позиции помогает в тех случаях, когда нужно искать в известном фрагменте, а не во всей строке.

Читайте также: