1с нстр что это

Обновлено: 17.05.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Из официальной документации получены все вызовы (за исключением раздела "Предопределенные").

2. Далее, производился поиск и подсчет каждого метода в 5-х типовых конфигурациях: УТ 11.4, РТ 2.3, БП 3.0, ЗУП 3.1 и ERP 2.4.

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

Часть 1. Базовая функциональность.
Пользовательская документация
Настройка и использование

2259. ТекущийПользователь. Возвращает текущего пользователя.

1926. ЭтоПолноправныйПользователь. Проверяет, является ли текущий или указанный пользователь полноправным.

981. АвторизованныйПользователь. Возвращает текущего пользователя или текущего внешнего пользователя, в зависимости от того, кто выполнил вход в сеанс.

620. РолиДоступны. Возвращает доступность хотя бы одной из указанных ролей или полноправность пользователя (текущего или указанного).

140. СсылкаНеуказанногоПользователя. Возвращает ссылку неуказанного пользователя.

100. СвойстваПользователяИБ. Возвращает свойства пользователя информационной базы в виде структуры.

21. НайтиПоИмени. Возвращает пользователя из справочника Пользователи, с которым сопоставлен пользователь ИБ с указанным именем.

67. НовоеОписаниеПользователяИБ. Возвращает пустую структуру описания пользователя ИБ. Назначение свойств структуры соответствует свойствам объекта ПользовательИнформационнойБазы.

10. УдалитьПользователяИБ. Удаляет указанного пользователя информационной базы.

7. СоздатьАдминистратора. Используется при обновлении и начальном заполнении информационной базы. Создает первого администратора и сопоставляет его с новым или существующим пользователем в справочнике Пользователи

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

5. СохраняемоеЗначениеСтрокиПароля. Возвращает сохраняемое значение пароля для указанного пароля.

30. СкопироватьСвойстваПользователяИБ. Копирует значения свойств пользователя ИБ с преобразованием в/из строковых идентификаторов для основного интерфейса, языка, режима запуска и ролей.

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

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

5. ПользовательИБЗанят. Проверяет, сопоставлен ли пользователь ИБ с элементом справочника Пользователи или с элементом справочника ВнешниеПользователи.

Пользовательская документация
Настройка и использование

1435. ВывестиТабличныйДокументВКоллекцию. Добавляет табличный документ в коллекцию печатных форм. Процедура предназначена для использования только внутри процедуры Печать.

1307. НужноПечататьМакет. Проверить, нужно ли печатать макет. Функция предназначена для использования только внутри процедуры Печать.

1121. МакетПечатнойФормы. Возвращает макет печатной формы по полному пути к макету.

868. ЗадатьОбластьПечатиДокумента. Задает область печати объекта в табличном документе.

627. ВыполнитьКомандуПечати. Формирует и выводит на экран печатные формы.

142. ДобавитьОписаниеОбласти. Добавляет к параметру НаборОбластей новую запись об области.

Пользовательская документация
Настройка и использование

1948. ОписаниеВарианта. Находит настройки варианта отчета. Используется для настройки размещения. Для использования в ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.

618. ОписаниеОтчета. Возвращает настройки указанного отчета. Используется для настройки размещения и общих параметров отчета в ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.

306. НастроитьОтчетВМодулеМенеджера. Вызывает модуль менеджера отчета для заполнения его настроек. Для вызова из процедуры ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.

142. ПодключитьСхему. Устанавливает отчету переданную схему и на основании нее, инициализирует компоновщик настроек.

Пользовательская документация
Настройка и использование

256. ЭтоКонтактнаяИнформацияВXML. Возвращает признак того, является ли строка данных контактной информации XML данными.

138. ЭтоКонтактнаяИнформацияВJSON. Возвращает признак того, является ли строка данных контактной информации JSON данными.

247. СведенияОбАдресе. Возвращает сведения об адресе в виде отдельных частей адреса и различных кодов (код региона, ОКТМО и др.).

234. ПредставлениеКонтактнойИнформации. Возвращает представление контактной информации (адреса, телефона, электронной почты и т.п.).

209. КонтактнаяИнформацияОбъекта. Возвращает таблицу, содержащую контактную информацию объекта.

188. КонтактнаяИнформацияВJSON. Преобразует входящие форматы контактной информации во внутренний формат JSON.

140. КонтактнаяИнформацияПоПредставлению. Преобразует представление контактной информации во внутренний формат JSON. Для адресов, введенных в свободной форме, корректное преобразование не гарантируется.

174. КонтактнаяИнформацияВXML. Преобразует все входящие форматы контактной информации в XML.

119. КонтактнаяИнформацияОбъектов. Возвращает таблицу, содержащую контактную информацию нескольких объектов.

181. ОткрытьФормуКонтактнойИнформации. Открывает подходящую форму контактной информации для редактирования или просмотра.

115. ПараметрыФормыКонтактнойИнформации. Конструктор для структуры параметров открытия формы контактной информации. Состав полей может быть расширен в общем модуле РаботаСАдресамиКлиент свойствами с национальной спецификой.

Строки сравниваются посимвольно по коду символа, для ясности несколько примеров "Строка12" < "Строка2", "8.3.9.2000" > "8.3.8", "8.3.9.2000" > "8.3.10"

С учетом регистра можно сравнить строки через знаки сравнения как в примерах

Сравнение без учета регистра можно произвести функций СтрСравнить. Поддерживается с платформы 8.3.6.

  • -1 - первая строка меньше второй
  • 1 - первая строка больше второй.
  • 0 - первая строка равна второй

Преобразование в строку (Строка, Формат)

В языке 1С есть автоматическое преобразование типа когда все части выражения приводятся к типу первого выражения

Преобразование функцией Строка

при преобразовании появляется символ неразрывный пробел, а он обычно не нужен

"Правильнее" будет преобразовывать функцией формат, которая приводит к строке простые типы и можно воспользоватся конструктором


Строка на разных языках НСтр

Форматирование строки по шаблону СтрШаблон. Поддерживается с платформы 8.3.6.

Очень полезная функция которая позволяет избежать соединения строк и сделать текст более читабельным

Функции СтрСоединить, СтрРазделить. Поддерживается с платформы 8.3.6.

Очень полезные функции улучшают читаемость кода.

СтрРазделить удобна когда необходимо разобрать строку с разделителями, например CSV файл, разбор текста на слова, строки

Аналогично, только наоборот работает функция СтрСоединить, преобразуя массив к строке.

Другие функции работы со строками, которые могут быть полезны

СтрСократить (Текст, Количество, Многострочная = Ложь) - сокращает текст до заданной длины заменяя окончание на .

ЭтоКорректныйИдентификатор (Строка) - Проверяет является ли строка корректным идентификатором, строка вида СуммаКонтрагента, _Идентификатор

Когда в 1с встает вопрос разбора большого текста это уже зоопарк из СтрДлина, Сред, СтрНайти для повышения читаемости программ для подобных задач использую свои функции: РазборПрочитатьЦелоеЧисло, РазборПрочитатьШестнадцатеричноеЧисло, РазборПрочитатьНезначимые, РазборПрочитатьИдентификатор,

РазборПропуститьНаборСимволов, РазборПрочитатьСимвол, РазборПрочитатьДоСимвола, РазборНайтиТекст


Рассмотрена подсистема Контактная информация из библиотеки стандартных подсистем (БСП) 3.1.3.

Примеры приведены на конфигурации Управление торговлей 11.4.13.

В пользовательском режиме

Виды контактной информации

Виды контактной информации настраиваются в разделе НСИ и администрирование -> Общие настройки -> Контактная информация -> Виды контактной информации:


Здесь перечислены те объекты, у которых можно добавлять контактную информацию и возможные виды для каждого объекта:


С помощью стрелок можно регулировать последовательность расположения контактной информации:



Также можно создать новый вид контактной информации:


Для каждого вида нужно указать тип контактной информации. Всего есть 7 типов:

  • Адрес
  • Телефон
  • Адрес электронной почты
  • Skype
  • Веб страница
  • Факс
  • Другое

Настройки видов контактной информации

Большинство настроек понятны из названия, рассмотрим основные:



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


Контактную информацию можно выводить в формах списка или в отчетах через поле Ссылка. Для этого нужно выбрать в меню Еще -> Изменить форму и добавить нужную контактную информацию:



В конфигураторе

Получение контактной информации

Для получения контактной информации объекта можно использовать функцию ПредставлениеКонтактнойИнформацииОбъекта из общего модуля УправлениеКонтактнойИнформацией. Данная функция вернет контактную информацию в виде строки:

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