Конструктор строк на разных языках может использоваться для

Обновлено: 28.04.2024

Особенности использования строк интерфейса конфигурации на разных языках

Платформа 1С:Предприятие 8 предоставляет набор механизмов для удобной локализации конфигураций. Одним из них является поддержка строк на разных языках. Такие строки позволяют хранить интерфейсные (предназначенные для пользователя) тексты на нескольких языках одновременно, при этом пользователь соответствующую строку увидит на своем (указанном в его настройках) языке. Используются эти строки очень широко. Например, в таком виде задаются синонимы (представления) объектов метаданных, тексты в формах, меню и табличных документах. В данной статье мы рассмотрим особенности хранения и редактирования подобных строк.

Языки конфигурации

Набор доступных для пользователей языков определяется объектами метаданных "Язык". Каждый язык помимо стандартных свойств "Имя", "Синоним" и "Комментарий" имеет свойство "Код языка". Это свойство представляет собой строку , которую рекомендуется определять в соответствии с международным стандартом двухбуквенных кодов языков ISO-639. Это требование не обязательное, однако исключительно важно, чтобы в пределах конфигурации данные коды были уникальны. Как мы увидим, в отличие от других объектов метаданных, именно код, а не имя является основным идентификатором языка.

Отображение строк на разных языках

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

Хранение строк на разных языках и связь с языками конфигурации

Строка на разных языках представляет собой набор пар код-строка. То есть привязка к конкретному языку осуществляется именно по коду, а не по имени или внутреннему идентификатору (данное замечание касается именно строк, поскольку, например, свойство конфигурации "Основной язык" для привязки использует внутренний идентификатор, и редактирование имени и кода языка на него никак не влияет). Что же происходит со строками при изменении кода языка? Ничего. Автоматическая "перепривязка" строк не производится. Таким образом, все строки, привязанные к старому коду, будут недоступны.

Редактирование строк на разных языках

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

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

Программное формирование строк на разных языках

Если интерфейсную строку требуется сформировать программно, следует воспользоваться функцией НСтр() . Она описана в документации, однако следует указать на необходимость аккуратного соблюдения синтаксиса. Строки для каждого языка могут быть заключены как в одинарные так и в двойные кавычки. Сложности возникают, если эти символы содержаться в самих строках. Рассмотрим, например, строковую константу “ Документ “”” . Она содержит двойную кавычку. При переводе ее в параметр функции НСтр() рекомендуется использовать следующий вариант:

То есть оформить ее в одинарных кавычках. Можно воспользоваться и двойными, но при этом все внутренние двойные кавычки следует удвоить:

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

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

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

Форматирование модулей, содержащих НСтр()

Следует обратить внимание еще на одну особенность работы с НСтр() . Если необходимо сформировать сложную строку как результат нескольких вызовов НСтр() , то рекомендуется располагать эти вызовы на разных строках модуля. Например вместо

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

Вопрос 04.24 экзамена 1С:Профессионал по платформе. Каким образом можно задать текст надписей для элементов управления на выбранном языке?

  1. В палитре свойств элемента управления в свойстве Заголовок нажать на кнопку "Кнопка открытия". В появившемся окне "Строки на разных языках" ввести надпись
  2. Сменить язык редактирования конфигурации, а потом ввести надпись в свойстве Заголовок (или Синоним)
  3. Нет правильного ответа
  4. Верны ответы 1 и 2

Для отдельных элементов управления можно задать наименование, переключив язык редактирования конфигурации в целом (Конфигурация -> Язык редактирования конфигурации):

Вопрос 04.25 экзамена 1С:Профессионал по платформе. Конструктор строк на разных языках может использоваться для.

  1. определения строковых представлений интерфейса на разных языках
  2. определения нескольких форматных строк под разные языки
  3. перевода данных базы на разные языки
  4. верно утверждение 1 и 2
  5. верны все утверждения

Правильный ответ четвертый - на сами данные базы конструктор не распростраяется.

Вопрос 04.26 экзамена 1С:Профессионал по платформе. Для открытия окна конструктора строк на разных языках необходимо.

  1. нажать кнопку открытия в палитре свойств элемента управления формы в свойстве Формат
  2. установить курсор в текст модуля и выбрать пункт "Текст – Конструктор строк на разных языках"
  3. находясь в палитре свойств элемента управления формы в свойстве Формат, выбрать пункт "Текст – Конструктор строк на разных языках"
  4. верно утверждение 1 и 2

Правильный ответ четвертый, разбор см.выше.

Вопрос 04.27 экзамена 1С:Профессионал по платформе. Количество языков для конструктора строк на разных языках.

  1. предопределено в платформе и неизменно
  2. задается настройками конфигуратора
  3. определяется в конфигурации и ограничено набором языков
  4. определяется в конфигурации и может расширяться программно

Правильный ответ четвертый. Языки редактирования конфигурации задаются в соответствующей ветке дерева объектов, см. пост Мультиязычность.

10 комментариев:

Этот комментарий был удален автором.

Вопрос 04.25 экзамена 1С:Профессионал по платформе. Конструктор строк на разных языках может использоваться для.

определения строковых представлений интерфейса на разных языках
определения нескольких форматных строк под разные языки

Объясните, пожалуйста, как Конструктор строк на разных языках может использоваться для определения нескольких форматных строк под разные языки? И что под этим вообще подразумевается? Форматная строка и так определяется под конкретный язык, указанный в ней самой.

Особенности использования строк интерфейса конфигурации на разных языках

Платформа 1С:Предприятие 8 предоставляет набор механизмов для удобной локализации конфигураций. Одним из них является поддержка строк на разных языках. Такие строки позволяют хранить интерфейсные (предназначенные для пользователя) тексты на нескольких языках одновременно, при этом пользователь соответствующую строку увидит на своем (указанном в его настройках) языке. Используются эти строки очень широко. Например, в таком виде задаются синонимы (представления) объектов метаданных, тексты в формах, меню и табличных документах. В данной статье мы рассмотрим особенности хранения и редактирования подобных строк.

Языки конфигурации

Набор доступных для пользователей языков определяется объектами метаданных "Язык". Каждый язык помимо стандартных свойств "Имя", "Синоним" и "Комментарий" имеет свойство "Код языка". Это свойство представляет собой строку , которую рекомендуется определять в соответствии с международным стандартом двухбуквенных кодов языков ISO-639. Это требование не обязательное, однако исключительно важно, чтобы в пределах конфигурации данные коды были уникальны. Как мы увидим, в отличие от других объектов метаданных, именно код, а не имя является основным идентификатором языка.

Отображение строк на разных языках

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

Хранение строк на разных языках и связь с языками конфигурации

Строка на разных языках представляет собой набор пар код-строка. То есть привязка к конкретному языку осуществляется именно по коду, а не по имени или внутреннему идентификатору (данное замечание касается именно строк, поскольку, например, свойство конфигурации "Основной язык" для привязки использует внутренний идентификатор, и редактирование имени и кода языка на него никак не влияет). Что же происходит со строками при изменении кода языка? Ничего. Автоматическая "перепривязка" строк не производится. Таким образом, все строки, привязанные к старому коду, будут недоступны.

Редактирование строк на разных языках

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

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

Программное формирование строк на разных языках

Если интерфейсную строку требуется сформировать программно, следует воспользоваться функцией НСтр() . Она описана в документации, однако следует указать на необходимость аккуратного соблюдения синтаксиса. Строки для каждого языка могут быть заключены как в одинарные так и в двойные кавычки. Сложности возникают, если эти символы содержаться в самих строках. Рассмотрим, например, строковую константу “ Документ “”” . Она содержит двойную кавычку. При переводе ее в параметр функции НСтр() рекомендуется использовать следующий вариант:

То есть оформить ее в одинарных кавычках. Можно воспользоваться и двойными, но при этом все внутренние двойные кавычки следует удвоить:

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

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

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

Форматирование модулей, содержащих НСтр()

Следует обратить внимание еще на одну особенность работы с НСтр() . Если необходимо сформировать сложную строку как результат нескольких вызовов НСтр() , то рекомендуется располагать эти вызовы на разных строках модуля. Например вместо

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

Конструктор строк на разных языках позволяет создать или отредактировать строки на разных языках, которые используются в функции встроенного языка НСтр().

  1. для определения строковых представлений интерфейса на разных языках;
  2. определения нескольких форматных строк под разные языки.

На перевод данных базы действие конструктора не распространяется.


Количество языков для конструктора строк на разных языках определяется в конфигурации и может расширяться программно.

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

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

Для открытия окна конструктора строк на разных языках необходимо:

  1. нажать кнопку открытия в палитре свойств элемента управления формы в свойстве "Формат" (не нашел в 8.3); нашел вот это:

открытие окна конструктора строк на разных языках

Пункт контекстного меню "Конструктор строк на разных языках. ":

Вызов конструктора строк на разных языках

Пункт меню "Текст – Конструктор строк на разных языках. ":

Конструктор строк на разных языках.

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

  1. В палитре свойств элемента управления в свойстве "Заголовок" (или "Синоним") нажать на кнопку "Кнопка открытия". В появившемся окне "Строки на разных языках" ввести надпись.
  2. Сменить язык редактирования конфигурации, а потом ввести надпись в свойстве "Заголовок" (или "Синоним").

В палитре свойств элемента управления в свойстве "Заголовок" (или "Синоним") нажать на кнопку "Кнопка открытия". В появившемся окне "Строки на разных языках" ввести надпись:


Сменить язык редактирования конфигурации, а потом ввести надпись в свойстве "Заголовок" (или "Синоним"):


Функция встроенного языка НСтр()

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

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


будет получен такой результат:


Механизм редактирования текстов интерфейса 1С


Механизм

Механизм "Редактирование текстов интерфейса" позволяет искать тексты интерфейсов:

  1. в основной конфигурации, в конфигурации базы данных;
  2. в открытых документах;
  3. во внешних файлах;
  4. в модулях в функциях "НСтр".

Для функции НСтр предусмотрена отдельная опция:


Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Конструктор макета позволяет создавать макеты, используемые как объектами прикладного решения, так и самим прикладным решением в целом. Макеты могут содержать различные данные, которые требуются для отображения информации в процессе работы. Конструктор макетов позволяет создавать: пустые макеты (например, пустой макет табличного или текстового документа); Читать дальше .

Конструктор форматной строки 1С

Конструктор форматной строки позволяет разработчику составить текст форматной строки исключительно визуальными средствами и предназначен для настроек правил отображения значений типа "Число", "Дата", или "Булево" в выводных формах или полях ввода данных. Форматная строка представляет собой строковое значение, включающее параметры форматирования. Используются в Читать дальше .

Конструктор печати 1C

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

Конструктор строк на разных языках

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

Конструктор агрегатов 1С

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

Конструктор запроса 1С

Конструктор запроса 1С - это один из инструментов разработки, который позволяет: составить текст запроса на языке запросов исключительно визуальными средствами; отредактировать текст имеющегося запроса. Программный код обычный конструктор не создает. Конструктор запроса с обработкой результата - это один из инструментов разработки, который Читать дальше .

Конструктор форм 1С

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

Конструктор ввода на основании

Конструктор ввода на основании помогает создать процедуру на встроенном языке, которая будет вызываться при создании одного объекта прикладного решения на основании данных, содержащихся в другом объекте. Такая функциональность может потребоваться, например, если в прикладном решении на основании справочника "Контрагенты" должен создаваться Читать дальше .

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