При разработке конфигураций на платформе «1С:Предприятие 8» часто возникает задача изменить стандартные названия полей, которые платформа создает автоматически. Например, вместо стандартного Наименование в справочнике «Товары» может потребоваться отображать «Артикул и название», а в документах заменить Номер на «Внутренний ID». Ситуация усложняется, если необходимо задать эти значения для языка, который изначально не представлен в платформе. В данной статье мы подробно разберем, как управлять синонимами стандартных реквизитов на уровне метаданных, программно и в рамках системы компоновки данных.
Многие начинающие разработчики ищут стандартные реквизиты (такие как Дата, Номер, Наименование, Код, Проведен, ПометкаУдаления) в общем списке реквизитов объекта, но не находят их там. Это происходит потому, что данные поля встроены в ядро платформы. Однако доступ к их свойствам, включая синонимы, все же существует.
Проанализируем шаги для изменения синонима в конфигураторе (для глубокого изучения структуры полезен анализ структуры метаданных):
Наименование).Важный нюанс: изменение синонима здесь повлияет на отображение реквизита во всем приложении: в списках, в заголовках полей на формах (если они не переопределены), а также в стандартных диалогах настройки отборов и сортировки. Это именно то «глобальное» решение, которое чаще всего требуется для локализации системы под нужды конкретного бизнеса.
Если стоит задача задать синоним на языке, которого нет в списке системных (например, на редком диалекте или специфическом техническом языке), нам необходимо сначала добавить поддержку этого языка в саму конфигурацию. Рассмотрим, как это сделать правильно.
Разберем последовательность действий по добавлению нового языка:
Язык. В поле «Имя» укажем краткий код (например, en_custom или suah), а в поле «Синоним» — понятное название.Платформа позволяет хранить неограниченное количество переводов. При запуске сеанса пользователем под определенным языком интерфейса, система автоматически подставит нужный синоним из этой таблицы.
Иногда изменение синонима в метаданных является избыточным или невозможным (например, если в разных формах одного и того же справочника поле Наименование должно называться по-разному). В этом случае мы можем прибегнуть к программному управлению элементами формы.
Рассмотрим пример кода, который изменяет заголовок поля при создании формы на сервере. Выясним причину использования именно этого метода: он позволяет динамически подставлять значения из констант, параметров сеанса или внешних словарей (также доступно добавление реквизитов и элементов формы без кодирования).
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Изменяем заголовок стандартного реквизита "Наименование"
Элементы.Наименование.Заголовок = "Специальное название для этой формы";
// Если нужно учесть язык пользователя программно
Если ПараметрыСеанса.ТекущийЯзык = "Английский" Тогда
Элементы.Номер.Заголовок = "Serial Number";
КонецЕсли;
КонецПроцедуры
Использование свойства Заголовок у элемента формы Элементы — это самый гибкий способ визуальной подстройки интерфейса «на лету» (похожие задачи решает редактор форм в режиме предприятия).
Если мы хотим реализовать поддержку языка, которого нет в настройках платформы, программным путем, нам поможет функция НСтр(). Она позволяет хранить строки на разных языках прямо в коде. Платформа будет выбирать нужную часть строки в зависимости от текущего языка сеанса.
Проанализируем структуру строки в НСтр():
// Пример использования в коде
ТекстЗаголовка = НСтр("ru='Наименование'; en='Description'; custom='MyLabel'");
Элементы.Наименование.Заголовок = ТекстЗаголовка;
Хотя платформа автоматически не распознает произвольный код custom, мы можем использовать программную логику для извлечения нужных данных, если расширим механизм перевода через свои справочники или файлы ресурсов.
Часто вопрос о синонимах стандартных реквизитов возникает при построении отчетов. Если в метаданных реквизит называется Дата, а в конкретном отчете его нужно вывести как «Дата совершения операции», менять синоним во всей конфигурации не стоит.
Посмотрим, как это решается в Системе компоновки данных (СКД):
Ссылка.Код).Это переопределит отображение поля только в рамках данного отчета, включая шапку таблицы и доступные поля в настройках пользователя. Это наиболее корректный путь для аналитической отчетности, не затрагивающий глобальную логику системы.
При работе с синонимами стандартных реквизитов важно помнить о следующих правилах:
Наименование в «Заголовок», в коде вы по-прежнему будете писать Объект.Наименование.КАК). В этом случае изменение синонима в Стандартных реквизитах может не сработать, и правки нужно вносить в сам текст запроса.Наименование на что-то непонятное, пользователям может стать сложнее ориентироваться в поиске.Подводя итог, можно сказать, что для изменения отображения стандартных полей в 1С существует целый арсенал средств: от простых настроек метаданных до гибкого программного управления. Выбор конкретного метода зависит от того, насколько глобальными должны быть изменения и требуется ли поддержка множества языков интерфейса.