Мультиязычность в 1С ERP

Мультиязычность в ERP нам пришлось реализовывать самостоятельно, еще в тот момент, когда в типовой 1С ERP не то, чтобы "мультиязычности" не было, а даже англоязычный интерфейс еще был в стадии бета-конфигурации. Это был (и есть) достаточно проблематичный блок нашей конфигурации. О его реализации, возможно, расскажем позже. 

В рамках этой статьи обсудим "мультиязычность" реализованную в 1С ERP. О том, что в 1C ERP появилась "мультиязычность", мы узнали недавно. И вот решили изучить эту функциональность с надеждой почерпнуть что-то полезное... 

Забегая вперед, сразу сообщим: полезного особо ничего не почерпнули. Да и способ реализации довольно сомнителен и топорен. Хотя, есть подозрение, что задумывался этот функционал не для того, что нам хотелось бы.

Начнем с того, что нам хотелось, какие задачи стояли перед нами при для относительно полноценной реализации проекта... что позволяло бы относительно комфортно работать в 1С ERP пользователям из разных стран:

  1. Интерфейс системы минимум английский. 1С ERP предоставляет два языка : русский и английский, нам этого хватает.
  2. Хранить переводы текстовых реквизитов справочников и документов на произвольном количестве языков и иметь возможность редактировать эти переводы. В идеале, конечно, еще бы иметь возможность задавать переводы для текстовых реквизитов регистров, но с необъектными данными сложнее.
  3. Гибко настраиваемый механизм подключения Справочников и Документов к механизму мультиязычности. Например, если элементы какого-то справочник нам не интересны с точки зрения хранения переводов для их реквизитов, то его и не подключать. А если с течением времени возникнет такая необходимость, то этот справочник можно было бы подключить к функциональности мультиязычности в пользовательском режиме, не прибегая к услугам программистов. Аналогичная ситуация и с самими реквизитами справочника: в подавляющем большинстве случаев, достаточно иметь переводы только для наименований элементов.
  4. Вывод данных в отчеты и печатные формы на любом языке по запросу пользователя. То есть, язык печати определяется либо в настройках документов, либо задается пользователем перед формированием печатной формы.
  5. Следствие пункта 3: макет печатной формы должен подбираться исходя из языка печати. А не ограничивался бы языком пользователя (язык интерфейса в настройках пользователя).
  6. Менее приоритетное требование, но повышающее удобство: в списках и полях ввода элементы справочников должны отображаться на языке пользователя (язык интерфейса в настройках пользователя) - требование минимум, а в идеале: в настройках пользователя иметь еще один язык - язык данных, на этом языке в списках и полях ввода должны отображаться элементы справочников. 

Мы реализовали пока что три первых пункта из этого списка. Пункты 4 и 5 пока что нереализованы. Реализуем. Нужно время.

О способах нашей реализации этой функциональности расскажем позже, как и оговорились выше. А сейчас поговорим о том, что же реализовала компания 1С в ERP. В начале статьи мы не зря, говоря о мультиязычности в ERP использовали кавычки. Да, это не Мультиязычность, это "мультиязычность".

Времени изучить функциональность "мультиязычности" в ERP досконально нет, но беглого взгляда на конфигурацию достаточно, чтобы сделать неутешительные выводы. Если мы не правы, возможно, читатели поправят нас.

Заглянем в конфигуратор...

Список общих модулей мультиязычности выглядит так:
Модули мультиязычности

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

А далее все просто: в справочниках, которые используют мультиязычность, т.е. имеют переводы на несколько языков, добавлена табличная часть "Представление". Состав табличной части - 2 реквизита: КодЯзыка (Строка(10) - даже не справочник языков, далее будет понятно, почему) и Наименование (Строка(15)). У некоторых справочников есть еще реквизит "Описание" - тоже строка. Вот список справочников, которые подключены к "мультиязычности" (на рисунке ниже не все справочники мультиязычны, а только те, у которых красным шрифтом выделено название табличной части "Представление":

список справочников мультиязычности

Помимо этого набора справочников (целых 7 штук справочников) есть еще План видов характеристик "Дополнительные реквизиты и сведения". Вопрос: вы еще не поняли по составу справочников и ПВХ, для чего все это? 

Правильно: для вывода в интерфейс. Например, справочник "Варианты отчетов" нужен для формирования Панели отчетов в разделах. Согласитесь, будет некрасиво, если пользователь заходит в систему с языком интерфейса "Английский" - все на английском, переходит в панель отчетов, а там названия и описания отчетов на русском (или наоборот). Тоже самое и с остальными справочниками и ПВХ: все они так или иначе используются при формировании интерфейса.

Теперь становится понятно, почему КодЯзыка это строка: посмотрите на картинку ниже и станет понятно

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

Никакой речи о мультиязычности хранения текстовых данных здесь речи быть и не может.

А теперь вспомните 6 пунктов - требований к мультиязычности в начале статьи. Сколько из них реализовано в типовом варианте 1С ERP? Ровно один - первый. 

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

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

Достаточно первых двух пунктов... Отвечаем:

  1. А надо ли что-то отвечать? Ведь по сути, это языки интерфейса. Потребуется или весь интерфейс переводить на добавленные языки (а это практически нереально силами небольшой группы разработки. Поверьте на слово. Мы это делали), или иметь эти языки только для целей хранения переводов и не назначать их языками интерфейсов в настройках пользователей.. но это уж слишком: задействовать такие механизмы, это как стрелять из пушки по воробьям.
  2. Это уже не сделать в пользовательском режиме. Гибкости нет. Про состав табличной части - да, выход, но, все равно, универсальности нет. Пользовательским режимом и не пахнет.

 Вернемся к ERP. На примере справочника "ВариантыОтчетов" посмотрим как реализовано интерфейсно редактирование переводов. в Модуле формы элемента справочника:

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//Пропустим несколько строк и дойдем до нужной нам
//.......

//А вот, что нам интерсно: создание элементов формы, которые вызывают форму редактирования переводов
МультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
//.......
//Далее есть еще строки коды, но нам они не интересны
КонецПроцедуры

 Кому интересно, те исследуют дальше как формируются элементы формы и заполняются и сохраняются переводы, эти подробности оставим за рамками статьи, а посмотрим, что видит пользователь: реквизитов справочника, которые подключены к мультиязычности, появляются такие кнопки, которые вызывают форму редактирования переводов

Вот как выглядит эта форма, можно взять за идею. Будет время, сделаем у себя такую. Наша, признаемся, выглядит немного хуже... но более универсальна. Хотя, если в эту форму добавить кнопку "Добавить язык перевода", то будет горазду лучше.

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


Печать   E-mail

Оставлять комментарии могут только зарегистрированные пользователи

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Еще почитать: