При работе с расширениями в системе 1С:Предприятие разработчики часто сталкиваются с ситуацией, когда созданная общая команда или другой объект метаданных отображается в пользовательском режиме не по заданному синониму, а по своему имени. Это особенно актуально в многоязычных конфигурациях, где для одного языка синоним может отображаться корректно, а для другого — нет. Давайте разберем, почему это происходит, и как мы можем обеспечить правильное отображение для всех необходимых языков.
Прежде чем перейти к решению, нам важно понять фундаментальное различие между именем и синонимом объекта метаданных в 1С. Имя (например, Доп1_ВвестиНаОснованииДокументЧ) является уникальным идентификатором объекта в конфигурации и используется для программного доступа к нему. Оно должно быть уникальным, не содержать пробелов и специальных символов, и часто содержит префиксы для удобства разработки (например, Доп1_ для объектов расширения).
Синоним, напротив, предназначен для отображения объекта в пользовательском интерфейсе. Он должен быть понятным, удобным для чтения и нести осмысленную информацию для конечного пользователя (например, "Ввести на основании документа Ч"). В идеале, именно синоним должен видеть пользователь.
Проблема, с которой мы сталкиваемся, возникает, когда система по какой-то причине не может найти или применить заданный синоним и вместо этого использует имя объекта. Наиболее частая причина этого в многоязычных системах заключается в том, что:
Мы видим, что в вашем случае, когда расширение имеет основной украинский язык, синоним на украинском отображается корректно. Однако для русского языка он не задан, и система отображает техническое имя. Наша задача — научить систему отображать корректный синоним для русского языка.
Первым делом нам необходимо убедиться, что все языки, для которых мы хотим задать синонимы, добавлены в состав нашей конфигурации или расширения. Если основной язык расширения, например, украинский, а пользователь работает с русским интерфейсом, то русский язык должен быть явно добавлен. Давайте посмотрим, как мы можем это сделать:
ru) нет в этом списке, его необходимо добавить. Обычно это делается через кнопку добавления или выбор из списка доступных языков. Обратите внимание, что расширение часто наследует языки основной конфигурации, но для явного указания синонимов лучше убедиться, что язык присутствует и в самом расширении.После добавления русского языка в состав языков расширения мы сможем приступить к редактированию многоязычных синонимов.
Когда все необходимые языки добавлены, мы можем перейти к редактированию синонима нашей команды. В 1С предусмотрен специальный механизм для работы с многоязычными строками.
Доп1_ВвестиНаОснованииДокументЧ).Ctrl + Shift + F4.В открывшемся диалоге вы увидите список всех языков, добавленных в расширение. Для каждого языка будет доступно поле для ввода синонима:
ru), и введите для нее желаемый синоним, например, "Ввести на основании документа Ч".uk) также указан корректный синоним.Ctrl + S или соответствующую кнопку на панели инструментов).После выполнения этих шагов и обновления конфигурации базы данных (или перезапуска пользовательского сеанса, если расширение обновилось динамически), вы увидите, что в пользовательском режиме для русского языка команда будет отображаться с корректным синонимом, а не с техническим именем.
Чтобы полностью понимать, как работает отображение, давайте проанализируем, как система 1С:Предприятие определяет, какой язык использовать для вывода синонимов:
Понимание этой иерархии помогает нам предвидеть поведение системы и гарантировать, что синонимы будут отображаться так, как мы ожидаем, для различных групп пользователей с разными языковыми предпочтениями.
Чтобы избежать подобных проблем в будущем и обеспечить качественную разработку расширений в многоязычной среде, мы можем рассмотреть следующие рекомендации:
Доп1_), поскольку они критичны для программного кода.НСтр(), которая позволяет задать строку для нескольких языков одновременно, например:
СообщениеПользователю.Текст = НСтр("ru = 'Русское сообщение'; en = 'English message'; uk = 'Українське повідомлення'");
Таким образом, для успешной работы с многоязычными синонимами в расширениях 1С крайне важно, чтобы все необходимые языки были добавлены в расширение, а для каждого объекта метаданных были явно заданы синонимы на всех этих языках с использованием встроенного редактора многоязычных строк. Это обеспечит корректное и приятное для глаз отображение интерфейса для всех пользователей, независимо от их языковых настроек.