Каким образом можно задать текст надписей для элементов управления на выбранном языке 1с
Редактор текста и модуля — это один из инструментов разработки. Он используется для редактирования текстовых документов и для редактирования программных модулей конфигурации.
Редактор текстов и модулей предоставляет пользователю все основные функции, необходимые при редактировании как простых текстов, так и текстов программных модулей. Конфигуратор 1С:Предприятия 8 использует этот редактор в двух режимах:- для редактирования текстовых документов;
- для редактирования текстов модулей (как составную часть редактора формы).
Редактирование текстовых документов
В режиме редактирования текстовых документов редактор поддерживает все стандартные функции редактирования текста:- создание нового документа или открытие одного из существующих документов;
- ввод и редактирование текста;
- сохранение отредактированного текста;
- печать текста.
В процессе редактирования текста можно переходить к конкретной строке документа, сдвигать блоки текста на позицию табуляции, выполнять поиск и замену и использовать закладки. Закладки могут быть размещены на любой строке текста:
В дальнейшем быстрый переход по закладкам возможен по сочетанию клавиш или команде меню:
Редактирование текстов модулей
Редактирование текстов модулей может выполняться в процессе создания формы объекта прикладного решения, непосредственно при разработке модулей объектов или всего приложения, и при редактировании внешнего текстового файла, содержащего текст модуля.
Помимо стандартных действий, присущих любому текстовому редактору, редактор текстов и модулей имеет ряд специфических особенностей:
Выделение цветом синтаксических конструкций
Для удобства редактирования текстов модулей редактор выделяет цветом элементы встроенного языка: ключевые слова, языковые константы, операторы, комментарии и пр.:
Разработчик может использовать цвета выделения, установленные по умолчанию, или настроить их самостоятельно. В общем случае система сама отслеживает необходимость включения режима выделения цветом. Однако в ситуации, когда система «не знает» о том, что редактируется текст модуля (например, если редактируется внешний текстовый файл, содержащий текст модуля), разработчик может включить режим выделения цветом вручную, используя меню конфигуратора:
Группировка
При просмотре модулей редактор позволяет объединять некоторые синтаксические конструкции языка в группы, сворачивать и разворачивать их. Использование группировки синтаксических конструкций позволяет лучше воспринимать различные части текста, а также переносить и копировать группы целиком:
Свернутый текст замещается специальным маркером, который позволяет просмотреть содержимое свернутой группы в виде подсказки:
Разработчику предоставляется возможность настраивать режим группировки, указывая, какие синтаксические конструкции могут группироваться, и каким должно быть исходное состояние группировки (свернутая или развернутая) при открытии документа. Таким образом, он может настроить, например, использование группировок «по максимуму»:
Области
Разработчик может выделять произвольные области текста, группировать и сворачивать их подобно тому, как сворачиваются инструкции циклов, условий, процедур и функций.
Каждой области текста, которую выделяет разработчик, он может дать собственное имя. Это позволяет простым и понятным образом выделять части модуля, имеющие сходный смысл.
Области могут быть вложены друг в друга или в другие группируемые конструкции языка.
Операции с блоками
Редактор позволяет выполнять ряд операций над выделенными блоками текста модуля: автоматическое форматирование, изменение отступа, добавление/удаление комментариев и переносов строк.
Форматирование модуля
Хорошим стилем написания модулей считается использование синтаксического отступа для выделения управляющих конструкций встроенного языка. Редактор позволяет автоматически форматировать текст при его вводе, и кроме этого, выполнять автоматическое форматирование уже введенного текста.
Результат автоматического форматирования:
Увеличение/уменьшение отступа
Наряду с автоматическим форматированием всего выделенного текста, редактор поддерживает также операции сдвига выделенного блока вправо или влево на шаг табуляции.
Это облегчает ручное форматирование больших фрагментов кода.
Добавление/удаление комментариев
Также редактор содержит очень удобную для разработчика функцию автоматической (одним нажатием мыши) установки и снятия комментариев на выделенный текст. Такая возможность часто используется при отладке модулей:
Добавление/удаление переноса строки
Использование добавления и удаления переноса строки часто применяется при переносе текстов запроса между модулем и, например, консолью запросов.
Таким образом, отладив запрос в консоли запросов, разработчик может просто скопировать текст запроса из консоли, вставить его в модуль и одним движением добавить перенос строки ко всем строкам текста запроса:
Переход по процедурам и функциям
В ситуации, когда модуль содержит большое количество процедур и функций, удобно использовать режим поиска процедур, который поддерживается редактором. Процедуры и функции отображаются в отдельном окне в порядке их расположения в модуле, однако разработчик может отсортировать их по алфавиту. Пиктограммы слева от названия обозначают имеющиеся процедуры и функции, а имена в угловых скобках соответствуют предопределенным процедурам, которые в настоящий момент отсутствуют, но могут быть размещены в данном модуле.
Если установить курсор на той процедуре, которая еще отсутствует в модуле, и нажать Перейти, конструктор автоматически вставит в текст модуля заголовок предопределенной процедуры.
Переход к определению процедур и функций
Редактор позволяет автоматически переходить к определению процедуры или функции, использованной в тексте модуля. Для этого достаточно установить курсор на имени нужной функции в теле модуля и выполнить команду контекстного меню или нажать «горячую» клавишу. В окне редактора будет открыт текст искомой процедуры или функции:
Контекстная подсказка
Редактор предоставляет средство контекстного ввода выражений с использованием системных объектов, их свойств, методов и пр. В процессе ввода текста или при нажатии комбинации клавиш редактор выводит контекстный список, позволяющий выбрать нужное свойство, метод, функцию и т. д., что позволяет быстро и правильно набирать тексты модулей:
Контекстная подсказка также работает и для параметров некоторых методов, если эти параметры задаются строковыми литералами.
Копирование имен объектов и реквизитов
При написании текста модуля разработчик может просто перетаскивать мышью имена объектов или их реквизитов из дерева метаданных в нужное место модуля:
Проверка модуля
Редактируемый модуль может быть проверен на правильность использования синтаксических конструкций встроенного языка, корректность обращений к методам и свойствам объектов «через точку», а также на корректность некоторых параметров, имеющих тип «Строка»:
Кроме этого конфигуратор поддерживает выполнение полной проверки всех модулей, содержащихся в прикладном решении.
В процессе работы с модулем разработчик имеет возможность получать контекстную подсказку по встроенному языку, используя синтакс-помощник. Для этого достаточно установить курсор на интересующий элемент языка и нажатием комбинации клавиш (или по контекстному меню) перейти к описанию этого элемента языка в синтакс-помощнике.
Ограничение доступа к модулю
Для большинства модулей прикладного решения можно установить пароль доступа, защищающий авторские права разработчика конфигурации. При попытке открыть защищенный модуль выводится диалог ввода пароля:
Использование шаблонов
При редактировании текстовых документов и модулей конфигуратор предоставляет разработчику возможность использовать механизм шаблонов для автоматической подстановки часто используемых фрагментов текста.
Для случаев локализации прикладных решений предусмотрен особый инструмент разработки - Редактор текстов, который позволяет одномоментно перевести все вхождения какого-либо слова в прикладном решении. Вызывается из меню Правка -> Редактирование текстов интерфейса; в первом окне обработки можно указать, какие именно тексты редактировать (как "внутри" конфигурации, так и во внешних файлах):
а после того, как платформа подберет все нужные слова - задать им перевод:
Вопрос 05.01 экзамена 1С:Профессионал по платформе. В процессе разработки прикладного решения можно использовать.
- только русскоязычный интерфейс конфигуратора
- не только русскоязычный интерфейс конфигуратора, но и другие интерфейсы, входящие в поставку 1С:Предприятия
- русскоязычный и англоязычный интерфейс конфигуратора
Правильный ответ второй - при установке платформы можно выбрать, какие языки устанавливать, на них и будет доступен конфигуратор:
- все элементы, имеющие одинаковый текст в колонке, по которой производится сортировка, сворачиваются
- все элементы, имеющие одинаковый текст, сворачиваются
- сортировка в активном режиме не поддерживается
Правильный ответ первый, будет группировка по колонке языка сортировки.
- позволяет находить те места, в которых необходимо ввести текст на требуемом языке, чтобы он отображался в режиме 1С:Предприятие в соответствии с языком, выбранным пользователем
- предназначен для подключения дополнительных языков представления информации на ветви конфигурации "Языки"
- предназначен для настройки языков поддержки и сопровождения
- верны все указанные ответы
Правильный ответ первый. Механизм нужен именно для пакетного перевода.
- актуален к использованию даже при использовании одного языка, позволяя пользователю изменить одинаковое текстовое представление одним действием во всех найденных местах
- доступен только при использовании более чем одного языка
- имеет смысл при использовании более чем одного языка
Правильный ответ первый - можно и на русском языке упорядочивать конфигурацию.
Вопрос 05.26 экзамена 1С:Профессионал по платформе. Что позволяет механизм "Редактирование текстов интерфейса"?
- Искать тексты интерфейсов в основной конфигурации, в конфигурации базы данных
- Искать тексты интерфейсов в открытых документах
- Искать тексты интерфейсов во внешних файлах
- В модулях в функциях "НСтр"
- Верны все указанные ответы
- Верны ответы 1, 2 и 3
Правильный ответ пятый. Для функции НСтр предусмотрена отдельная опция:
- позволяет изменить текст прямо в представленной ячейке таблицы найденных текстовых представлений
- Для изменения текста необходимо перейти по ссылке к объекту, который ее содержит и откорректировать в нем
- позволяет лишь сформировать список текстов интерфейсов, корректировка доступна из диалога содержащего его объекта
Правильный ответ первый. Поменять можно прямо в табличке.
Вопрос 06.66 экзамена 1С:Профессионал по платформе. Какой режим используется для выполнения задач локализации (создания интерфейса на другом языке)?
Элементы управления - это объекты формы, определяющие визуальное представление формы и предназначенные для интерактивного взаимодействия с пользователем (например, кнопки, флажки, поля ввода и т.д., визуальное объединение "элементарных" элементов управления).
Поведение каждого типа элементов управления по умолчанию задано платформой, однако может корректироваться разработчиком.
Для обычных форм элементы управления настраиваются только конфигуратором, а для управляемых возможны определенные корректировки элементов в режиме 1С:Предприятие.
В элементах управления данные не хранятся!
Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров.
Платформа в режиме 1С:Предприятие для управляемых форм самостоятельно добавляет эти элементы в форму.
При построении обычных форм используются вертикальные и горизонтальные разделители.
Элемент управления Разделитель позволяет пользователю менять пространство формы, сдвигая ее части. Разделитель может быть как с отображением, так и невидимый.
Наличие разделителя должно интуитивно угадываться при работе с формой, поэтому ближайшие от разделителя по направлениям его передвижения элементы управления размещаются вплотную к нему, таким образом визуально предполагая его расположение:
- вертикальным разделителям устанавливается ширина 6, горизонтальную привязку рекомендуется устанавливать в НеПривязано ;
- горизонтальным разделителям устанавливается высота 6, вертикальную привязку рекомендуется устанавливать в НеПривязано;
- рамку рекомендуется устанавливать в НетРамки . В сложных случаях, когда пользователю может быть тяжело догадаться о наличие разделителя, допускается устанавливать рамку Одинарная .
Разделитель обладает способностью "захватываться" мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя.
При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.Таким образом, элемент управления "Разделитель" позволяет перераспределять внутреннее пространство формы, изменяя размеры расположенных в ней элементов управления, привязанных к разделителю. Размеры самой формы при этом не меняются.
Команды формы редактируются в списке. Разработчик имеет возможность:
- добавить, удалить команды формы;
- задать свойства команд с помощью палитры свойств;
- назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.
Для добавления команды в виде кнопки:
- на обычной форме можно разместить на форме элемент управления "Кнопка", назначить обработчик события "Нажатие" и определить алгоритм в модуле формы;
- на управляемой форме можно:
- добавить в форму элемент управления "Кнопка", назначить команду из списка команд формы и определить алгоритм команды в модуле формы;
- добавить команду формы в командный интерфейс формы и включить ее видимость.
На закладках "Стандартные команды" и "Глобальные команды" разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.
С помощью мыши разработчик может перетащить команду в командный интерфейс формы (платформа автоматически нарисует кнопку). Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме (платформа автоматически нарисует кнопку).
Для кнопки можно определить процедуру-обработчик для события "Нажатие"; тем самым кнопка программируется для выполнения некого стандартного действия:
В качестве обработчика события "Нажатие" элемента управления "Кнопка" может быть выбрано:
- стандартное действие;
- процедура модуля формы, в которой расположена кнопка.
Глобальную процедуру инициировать напрямую по кнопке нельзя.
Поясняющая информация на элементе управления "Кнопка" может быть представлена в виде:
Конструктор строк на разных языках позволяет создать или отредактировать строки на разных языках, которые используются в функции встроенного языка НСтр().
Конструктор строк на разных языках может использоваться:- для определения строковых представлений интерфейса на разных языках;
- определения нескольких форматных строк под разные языки.
На перевод данных базы действие конструктора не распространяется.
Количество языков для конструктора строк на разных языках определяется в конфигурации и может расширяться программно.
Языки редактирования конфигурации задаются в соответствующей ветке дерева объектов "Язык". В конфигурацию можно добавить несколько различных языков. Поскольку все тексты конфигурации и базы данных хранятся в формате UNICODE, разработчик может указывать для одной и той же надписи различные варианты ее отображения на каждом из этих языков.
Если разработчик создает прикладное решение на нескольких языках, он может при помощи мыши переключаться с одного языка на другой. Эта возможность очень удобна при разработке форм, т.к. позволяет быстро увидеть внешний вид формы, скажем, сначала на английском языке, а затем на русском.
Для открытия окна конструктора строк на разных языках необходимо:
- нажать кнопку открытия в палитре свойств элемента управления формы в свойстве "Формат" (не нашел в 8.3); нашел вот это:
Пункт контекстного меню "Конструктор строк на разных языках. ":
Пункт меню "Текст – Конструктор строк на разных языках. ":
Для того, чтобы задать текст надписей для элементов управления на выбранном языке, необходимо:
- В палитре свойств элемента управления в свойстве "Заголовок" (или "Синоним") нажать на кнопку "Кнопка открытия". В появившемся окне "Строки на разных языках" ввести надпись.
- Сменить язык редактирования конфигурации, а потом ввести надпись в свойстве "Заголовок" (или "Синоним").
В палитре свойств элемента управления в свойстве "Заголовок" (или "Синоним") нажать на кнопку "Кнопка открытия". В появившемся окне "Строки на разных языках" ввести надпись:
Сменить язык редактирования конфигурации, а потом ввести надпись в свойстве "Заголовок" (или "Синоним"):
Функция встроенного языка НСтр()
НСтр() позволяет получить строку на нужном языке или на языке, определенном для текущего пользователя прикладного решения из набора строк на разных языках конфигурации.
Например, в результате выполнения следующего кода:
будет получен такой результат:
Механизм редактирования текстов интерфейса 1С
Механизм "Редактирование текстов интерфейса" позволяет искать тексты интерфейсов:
- в основной конфигурации, в конфигурации базы данных;
- в открытых документах;
- во внешних файлах;
- в модулях в функциях "НСтр".
Для функции НСтр предусмотрена отдельная опция:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Особенности использования строк интерфейса конфигурации на разных языках
Платформа 1С:Предприятие 8 предоставляет набор механизмов для удобной локализации конфигураций. Одним из них является поддержка строк на разных языках. Такие строки позволяют хранить интерфейсные (предназначенные для пользователя) тексты на нескольких языках одновременно, при этом пользователь соответствующую строку увидит на своем (указанном в его настройках) языке. Используются эти строки очень широко. Например, в таком виде задаются синонимы (представления) объектов метаданных, тексты в формах, меню и табличных документах. В данной статье мы рассмотрим особенности хранения и редактирования подобных строк.
Языки конфигурации
Набор доступных для пользователей языков определяется объектами метаданных "Язык". Каждый язык помимо стандартных свойств "Имя", "Синоним" и "Комментарий" имеет свойство "Код языка". Это свойство представляет собой строку , которую рекомендуется определять в соответствии с международным стандартом двухбуквенных кодов языков ISO-639. Это требование не обязательное, однако исключительно важно, чтобы в пределах конфигурации данные коды были уникальны. Как мы увидим, в отличие от других объектов метаданных, именно код, а не имя является основным идентификатором языка.
Отображение строк на разных языках
В режиме Конфигуратора строки отображаются на языке редактирования конфигурации, который может быть изменен через выпадающее меню в правом нижнем углу основного окна Конфигуратора. В режиме 1С:Предприятие строки отображаются на языке, выбранном в настройках пользователя, доступных из списка пользователей меню администрирования. Если ни одного пользователя в информационной базе не заведено, используется основной язык конфигурации.
Хранение строк на разных языках и связь с языками конфигурации
Строка на разных языках представляет собой набор пар код-строка. То есть привязка к конкретному языку осуществляется именно по коду, а не по имени или внутреннему идентификатору (данное замечание касается именно строк, поскольку, например, свойство конфигурации "Основной язык" для привязки использует внутренний идентификатор, и редактирование имени и кода языка на него никак не влияет). Что же происходит со строками при изменении кода языка? Ничего. Автоматическая "перепривязка" строк не производится. Таким образом, все строки, привязанные к старому коду, будут недоступны.
Редактирование строк на разных языках
Для формирования строк на языках, отличных от языка редактирования конфигурации, можно использовать редактор в панели свойств. В случае если в конфигурации заведено более одного языка, в нем будет доступна кнопка открытия ("лупа"), нажатие на которую вызывает диалог, позволяющий редактировать содержимое на всех языках, заведенных в данный момент в конфигурации. Однако для решения описанной выше проблемы (потери строк при изменении кода языка) этот способ не подходит. Во-первых, строки со старым кодом в этот диалог просто не попадут, да и "разыскивание" всех строк по всей конфигурации задача утомительная. Для восстановления связи с утерянными строками следует воспользоваться механизмом редактирования текстов интерфейса, доступным из меню "Правка". Данный механизм производит сканирование всей конфигурации (или указанного подмножества объектов) и выводит список всех строк на разных языках. Важным отличием этого механизма от редактора в панели свойств, является то, что он выводит содержимое не только на всех языках (а на самом деле кодах языков), которые присутствуют в конфигурации в данный момент, но и всех, встречающихся в строках. Другим важным средством данного механизма является возможность копирования текстов из одного языка в другой. То есть мы можем указать копирование из старого кода языка в новый код, и связь строк с языком будет восстановлена. После чего можно воспользоваться еще одним средством и очистить строки со старым кодом.
Рассмотрим ситуации, когда данная проблема может возникнуть. Наиболее очевидна ситуация, когда у существующего языка (для которого уже определено много строк) меняется код. Однако возникновение ее маловероятно. Как уже указывалось, рекомендуется использовать стандартные значения кодов и в последствии их не менять. Однако есть еще одна, менее очевидная ситуация, связанная с внешними обработками. Внешняя обработка могла быть создана в среде совсем другой конфигурации, где набор языков (или их коды) отличается от набора, используемого в данной конфигурации. При открытии такой обработки все строки будут "утеряны". Описанный механизм позволит решить эту проблему, поскольку он позволяет искать и редактировать строки не только в конфигурации, но и во внешних обработках (как открытых в конфигураторе, так и находящихся в файлах на диске).
Программное формирование строк на разных языках
Если интерфейсную строку требуется сформировать программно, следует воспользоваться функцией НСтр() . Она описана в документации, однако следует указать на необходимость аккуратного соблюдения синтаксиса. Строки для каждого языка могут быть заключены как в одинарные так и в двойные кавычки. Сложности возникают, если эти символы содержаться в самих строках. Рассмотрим, например, строковую константу “ Документ “”” . Она содержит двойную кавычку. При переводе ее в параметр функции НСтр() рекомендуется использовать следующий вариант:
То есть оформить ее в одинарных кавычках. Можно воспользоваться и двойными, но при этом все внутренние двойные кавычки следует удвоить:
Разумеется, подобная константа не очень наглядна (хотя результат будет тот же, что и в предыдущем варианте). Если же "механически" обрамить строку в двойные кавычки:
то получится ошибочный шаблон. Причем, особенность реализации функции НСтр() состоит в том, что ни при синтаксической проверке модулей, ни при исполнении, никакой ошибки выдано не будет. Функция просто вернет пустую строку.
В целом, для редактирования сложных строк, заключенных в НСтр() , надежнее воспользоваться механизмом "Редактирование текстов интерфейса". Однако следует учитывать, что, по умолчанию, поиск НСтр() не производится, для его включения требуется включить соответствующий флажок в диалоге настройки редактирования текстов интерфейса.
Форматирование модулей, содержащих НСтр()
Следует обратить внимание еще на одну особенность работы с НСтр() . Если необходимо сформировать сложную строку как результат нескольких вызовов НСтр() , то рекомендуется располагать эти вызовы на разных строках модуля. Например вместо
Размещение в одной строке модуля нескольких вызовов НСтр может привести к ошибкам работы механизма редактирования текстов интерфейса. Это может выражаться в следующем. При первичном редактировании строк (ручном, или в результате какой-либо групповой операции, например копировании текстов из одного языка в другой) будут правильно обработаны все строки, но при последующем редактировании тексты, соответствующие НСтр() , расположенным не первыми в строке будут недоступны. Для решения этой проблемы достаточно заново произвести поиск интерфейсных текстов, но лучше не допускать возникновения подобной ситуации, и располагать вызовы НСтр() на разных строках.
Читайте также: