Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 апр 2025, 07:56

2 языка в одном макете

Автор sali, 08 фев 2025, 22:39

0 Пользователей и 1 гость просматривают эту тему.

sali

здравствуйте, есть таков макет  и вроде как можно через настройки выбрать язык. еще сказали 2 таб доками можно вывести, где первый русский макет, второй англ. Снимок экрана (125).png
как лучше?

Максим75

sali, в элементе макета можно настроить текст на 2 языках.
вот там где текст элемента жмакаете значок лупы и заполняете на двух языках текст.

потом после того, как вызвали сам макет печати через Макет.КодЯзыкаМакета назначаете нужный Вам язык.

LexaK

sali, например можно так
Если  "Русский" = НСтр("ru='Русский';en='Английский'") Тогда
    табДок = ВывестиРусскийМакет();
Иначе   
    табДок = ВывестиАнглийскийМакет();
КонецЕсли;

если помогло нажмите: Спасибо!

sali

LexaK, так выведет же 2 разных макета, а мне целый на 2 языках

sali

Цитата: Максим75 от 10 фев 2025, 09:53и заполняете на двух языках текст.
супер , а как быть с параметрами ?

Afinogen

sali, нужно 2 разных? ну разбейте макет на несколько областей, те которые могут быть на двух языках клонируйте, те которые только на инглише или только на рашене можно не клонировать и будет вам счастье?

проверяете кодязыка и выводите нужную область

sali

Цитата: Afinogen от 10 фев 2025, 11:23клонируйте
каким образом? отдельную переменную создавать с форматом строки?

Afinogen

sali, нет зачем
2 области макета сделайте: на русском и английском, у вас будет различаться только текст области и все,  и при выводе данных  проверяйте код языка,  если русский то выводите область с русским если другой то с другим. Здесь скорее вопрос как вы будете язык проверять. Язык настраивается в настройках пользователя 1с. По моему у меня даже шаблон был с готовым кодом.  Правда там под Грузию код  писался, но суть та же. Сча гляну

sali

Afinogen,
Цитата: LexaK от 10 фев 2025, 10:07sali, например можно так
Код Выделить Развернуть
Если  "Русский" = НСтр("ru='Русский';en='Английский'") Тогда
    табДок = ВывестиРусскийМакет();
Иначе   
    табДок = ВывестиАнглийскийМакет();
КонецЕсли;

видимо так

Afinogen

Например для вывода предупреждения пользователю я развлекался так вот
&НаКлиенте
Процедура Заполнить(Команда)
    // Вставить содержимое обработчика.
   

       
        СтруктураПредупреждения = СформироватьСтруктуруПредупреждения();
        СтруктураПредупреждения.ТекстРусский = "Не заполнен счет учета";
        СтруктураПредупреждения.ТекстГрузинский = "ანგარიში არ არის შევსებული";
        СтруктураПредупреждения.ЗаголовокРусский = "Внимание...";
        СтруктураПредупреждения.ЗаголовокГрузинский = "Внимание...";
        СтруктураПредупреждения.Информация = Ложь;
       
        ПоказатьПредупреждениеПользователя(СтруктураПредупреждения);
       
    КонецЕсли;
   
КонецПроцедуры

&НаКлиенте
Функция СформироватьСтруктуруПредупреждения()
   
    Возврат Новый Структура("ТекстРусский,ТекстГрузинский,ЗаголовокРусский,ЗаголовокГрузинский,Информация","","","","",Истина);   
   
КонецФункции
   
&НаКлиенте
Процедура ПоказатьПредупреждениеПользователя(СтруктураПредупрежденияИсходная)
   
    СтруктураПредупреждения = СформироватьИтоговуюСтруктуруПредупреждения(СтруктураПредупрежденияИсходная);
   
    ПоказатьПредупреждение(,СтруктураПредупреждения.ТекстПредупреждения,,СтруктураПредупреждения.Заголовок);
   
КонецПроцедуры   

&НаСервере
Функция СформироватьИтоговуюСтруктуруПредупреждения(СтруктураПредупрежденияИсходная)Экспорт
   
    ТекЯзык = ТекущийЯзык();
    ТекЯзыкРусский = Метаданные.Языки.Русский;
   
    ТекстПредупреждения = ?(ТекЯзык = ТекЯзыкРусский,СтруктураПредупрежденияИсходная.ТекстРусский,СтруктураПредупрежденияИсходная.ТекстГрузинский);
    Заголовок             = ?(ТекЯзык = ТекЯзыкРусский,СтруктураПредупрежденияИсходная.ЗаголовокРусский,СтруктураПредупрежденияИсходная.ЗаголовокГрузинский);
   
    лкШрифт = Новый Шрифт("Times new roman",12,Ложь,Ложь); 
   
    Массив = Новый Массив;   
    Массив.Добавить(ТекстПредупреждения);
   
    СтрокаФормат = "";
   
    Если СтруктураПредупрежденияИсходная.Информация Тогда
       
        СтрокаФормат= Новый ФорматированнаяСтрока(Массив,лкШрифт,WebЦвета.Зеленый);
       
    Иначе
       
        СтрокаФормат= Новый ФорматированнаяСтрока(Массив,лкШрифт,WebЦвета.Красный);
       
    КонецЕсли;
   
   
    СтруктураПредупрежедения  = Новый Структура;
    СтруктураПредупрежедения.Вставить("ТекстПредупреждения",СтрокаФормат);
    СтруктураПредупрежедения.Вставить("Заголовок",Заголовок);
   
    Возврат СтруктураПредупрежедения;   
   
КонецФункции



Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск