При необходимости локализации конфигурации 1С:УПП (или любой другой сложной конфигурации) на английский язык, разработчики часто сталкиваются с задачей массового заполнения Синонимов. Часто возникает вопрос: можно ли программно получить синоним на нужном языке через Метаданные, просто переключив язык пользователя? Разберем эту задачу детально и рассмотрим способы ее реализации.
Важно уяснить, что стандартная объектная модель Метаданные в режиме исполнения работает в контексте текущего языка сеанса. Это означает, что при обращении к свойству Синоним через код, вы всегда получите значение для того языка, который активен в данный момент у пользователя или в конфигураторе. Простой смены языка пользователя недостаточно для того, чтобы «вытянуть» все синонимы на английском, если текущим языком системы является русский.
Поскольку прямого метода в объектной модели Метаданные для принудительного получения синонима на конкретном языке (отличном от текущего) не предусмотрено, нам необходимо использовать инструменты вне стандартного дерева метаданных.
Один из самых эффективных способов массовой обработки — это выгрузка конфигурации в XML-файлы. Это позволяет анализировать структуру объектов без прямого взаимодействия с базой данных в режиме 1С.
Если вы хотите автоматизировать процесс непосредственно в режиме конфигуратора или через внешнюю обработку, оптимальным решением будет использование V83.COMConnector. Этот метод позволяет программно подключаться к конфигурации и управлять свойствами метаданных.
Рассмотрим примерную логику работы такой обработки:
// Пример логики перебора метаданных через COM-соединение
Connector = Новый COMОбъект("V83.COMConnector");
Конфигурация = Connector.Connect("СтрокаСоединенияСБазой");
Для Каждого Документ Из Конфигурация.Метаданные.Документы Цикл
// Работа с синонимами через объектные свойства
// Обратите внимание: требуется корректная настройка языка в сеансе COM-соединения
Для Каждого Реквизит Из Документ.Реквизиты Цикл
// Здесь мы устанавливаем синоним для нужного языка
// Реквизит.Синоним = "English Name";
КонецЦикла;
КонецЦикла;
При автоматизации перевода интерфейса 1С крайне важно учитывать контекст:
ЗаказПокупателя, Контрагент, Номенклатура.Подводя итог, можно сказать, что решение задачи перевода конфигурации лежит в плоскости манипуляций с файлами выгрузки или использования COMConnector для пакетного обновления метаданных. Не пытайтесь решить задачу просто сменой языка пользователя — это не даст доступа к чтению всех языковых версий синонимов программным путем.