Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как в 8.2 вытянуть синоним на заданном языке для объекта метаданных?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
wisekat
Многоязычная конфа. Получаю
МетаданныеТипа = Метаданные.НайтиПоТипу(ТипЗнч(пОбъектСсылка));

Могу потом обратиться МетаданныеТипа.Синоним, но он возвращается на языке текущего пользователя. А как мне его вытянуть на заданном языке независимо от текущей языковой настройки?
Vofka
Как это на "заданном"? Синоним задается на языках, присутствующих в прикладном решении. Языка "по умолчанию" нету.
wisekat
Нужен аналог НСтр, которая позволяет же выбрать строку на нужном языке.

Суть в чём. В конфе все синонимы на 2-х языках - рус/укр, и есть специальный регистр для регистрации действий с объектами справочников. В него надо записывать информацию вида "Справочник <Название>", где <Название> - это дружелюбный для пользователя синоним справочника. Фокус в том, что этот синоним выдаётся системой в зависимости от текущего языка пользователя, и получается чехарда - то "Справочник Физлица", то "Справочник Фізособи". И затем по этому полю невозможно отбор/группировку делать.
logist
А зачем вообще записывать текст? Не проще ли записать ссылку а потом выводить ее на дружественном пользователю языке?
Vofka
Не получите вы синоним на требуемом языке, платформа такого не позволяет. Пишите в регистр Имя объекта, оно всегда будет одно независимо от языка.

Цитата(logist @ 26.06.12, 16:21) необходимо зарегистрироваться для просмотра ссылки
Не проще ли записать ссылку а потом выводить ее на дружественном пользователю языке?

Человеку, насколько я понял, надо не ссылка, а вид объекта.
wisekat
Цитата(Vofka @ 26.06.12, 17:49) необходимо зарегистрироваться для просмотра ссылки
Не получите вы синоним на требуемом языке, платформа такого не позволяет.


Глупо... Почему бы и не сделать этого - ведь если в коде можно достучаться ко всем метаданным, то почему синонимы на всех определённых языках нельзя перебрать.

Цитата(Vofka @ 26.06.12, 17:49) необходимо зарегистрироваться для просмотра ссылки
Пишите в регистр Имя объекта, оно всегда будет одно независимо от языка.


Зачем обычному пользователю мои программные идентификаторы?? Ведь в этом как раз и есть смысл синонимов...
Vofka
В таком случае сделайте, например, регистр "СинонимыОбъектовМетаданных" и в них храните программный идентификатор и его синоним. Дальше, я думаю, понятно.
alex040269
Можно хранить идентификатор, а пользователю показывать синоним.
wisekat
Цитата(Vofka @ 27.06.12, 15:01) необходимо зарегистрироваться для просмотра ссылки
В таком случае сделайте, например, регистр "СинонимыОбъектовМетаданных" и в них храните программный идентификатор и его синоним.


Х-м, прикольное решение - но не программистское mellow.gif

Зачем мне плодить новые таблицы и в них дублировать ту информацию, которая в самой конфе уже прописана? Ведь вопрос был именно об этом.

Но за идею спасибо. Если ничего толкового больше не найдём, то как обходной путь возможно что его используем.

Цитата(alex040269 @ 27.06.12, 15:23) необходимо зарегистрироваться для просмотра ссылки
Можно хранить идентификатор, а пользователю показывать синоним.


Синоним откуда и какой? Что-то не понял...
Ardi
Цитата(wisekat @ 27.06.12, 17:32) необходимо зарегистрироваться для просмотра ссылки
Х-м, прикольное решение - но не программистское mellow.gif

Если таблицу заполнить программно - то решение программистское smile.gif
wisekat
Цитата(Ardi @ 27.06.12, 17:35) необходимо зарегистрироваться для просмотра ссылки
Если таблицу заполнить программно - то решение программистское


Согласен, можно при старте приложения как-то заполнять/обновлять эту таблицу программно по синонимам, но опять-таки упираемся в проблему аккаунта текущего пользователя и его языка. Как здесь быть?
Ardi
Цитата(wisekat @ 28.06.12, 12:51) необходимо зарегистрироваться для просмотра ссылки
но опять-таки упираемся в проблему аккаунта текущего пользователя и его языка

Не таблицу - а регистр сведений.
Соответственно когда мы заходим на китайском языке - в регистре всё ещё есть данные оставшиеся после запуска на русском.
wisekat
Цитата(Ardi @ 28.06.12, 13:51) необходимо зарегистрироваться для просмотра ссылки
Не таблицу - а регистр сведений.


под "таблица" я подразумевал общее понятие - это м.б. и регистр, и справочник, и т.д. - не суть важно

всё равно не пойму вашу идею - мне надо синонимы на строго определённом языке независимо от языка текущего пользователя

код какой-то покажете?
wisekat
Цитата(Ardi @ 28.06.12, 13:51) необходимо зарегистрироваться для просмотра ссылки
Соответственно когда мы заходим на китайском языке - в регистре всё ещё есть данные оставшиеся после запуска на русском.


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

Но есть вопрос сопровождения и дальнейшего изменения приложения. Получается, что после каждого изменения разработчику надо будет чистить таблицу синонимов и снова запускать алгоритм её заполнения, и опять таки от пользователя с нужным языком.

На сегодня у меня в системе нужны правильные синонимы имён справочников, регистров сведений и их измерений. Из этого следует, что кроме таблицы синонимов, нужно будет придумать функции, которые вытаскивают для всех перечисленных сущностей их правильные названия из таблицы синонимов. Ох и геморрой же получится пока эту всю систему наладишь...

Вот почему разрабы 1С, как я считаю, должны реализоватьпрограммную возможность получения синонимов на заданном языке.
Vofka
Танцуйте. Платформа 8.3:
Цитата
Возможность получения нестандартного представления. Возможность получения представления для таблиц внешних источников данных в тех случаях, когда не указано поле, обеспечивающее представление. Возможность получения представления объекта, включающего в себя локализованные данные
wisekat
УРА!!!!

Как руки дойдут - достану дистрибутив 8.3 и буду пробовать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.