Подскажите про автоматическую установку языка для реквизита

1. BigBoss 2 18.09.17 14:06 Сейчас в теме
День добрый. Вот такой вопрос: есть реквизит, который заполняется всегда на англ.языке. Пользователи не хотят постоянно менять раскладку клавиатуры. Есть ли в 1С встроенное средство для установки нужного языка для реквизита?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. ekaruk 4906 18.09.17 15:05 Сейчас в теме
(1) При выходе из поля меняй русские буквы на английские.
Либо на транслит, либо согласно расположению на клавиатуре.
7. Dm_Kz 22.09.17 13:40 Сейчас в теме
(1) В БСП есть функция
СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(Текст)
Она переводит кириллицу в транслит. Латинские символы, при этом, не изменяются.
2. olbu 18.09.17 14:18 Сейчас в теме
Можно попробовать в событии перед началом ввода запустить кодик, ввести значение и после ввода значения снова запустить этот код, что бы вернуть раскладку в исходное...
Код:

Попытка
		Shell = Новый COMОбъект("WScript.Shell");
	Исключение
		Сообщить("Ошибка Новый COMОбъект('WScript.Shell')");
		Возврат Ложь;
	КонецПопытки;
	
	КомандаПереключения = "%+"; // Alt-Shift : значение по умолчанию
	//КомандаПереключения = "Ctrl+Shift"; // Alt-Shift : значение по умолчанию
	
	Попытка
		
		// Но значение может быть задано условно, например в виде "Ctrl+Shift".
		// Попробуем преобразовать.
		Ctrl = Найти(Врег(КомандаПереключения),"CTRL");
		Alt = Найти(Врег(КомандаПереключения),"ALT");
		Shift = Найти(Врег(КомандаПереключения),"SHIFT");
		Если Ctrl > 0 И Shift > Ctrl Тогда
			КомандаПереключения = "^+"; // Ctrl-Shift
		ИначеЕсли Alt > 0 И Shift > Alt Тогда
			КомандаПереключения = "%+"; // Alt-Shift
		КонецЕсли;
			
		Если ЗначениеЗаполнено(КомандаПереключения) Тогда
			Shell.SendKeys(КомандаПереключения);
			Возврат Истина;
		КонецЕсли;
	Исключение
		Возврат Ложь;
	КонецПопытки;
Показать
4. Dnki 4 18.09.17 20:31 Сейчас в теме
Я творил так: пусть пользователь и не переключает язык, программно тоже не трогаем.
Делаю через событие поля "АвтоПодборТекста". Срабатывает после набора каждой буковки.

Следовательно, обработчик:
Стр = Элемент.Значение;
// пробежимся по буковкам
к = СтрДлина(Стр);
Для н = 1  По к  Цикл
// если буква русская, то в ненашенскую.
ЛатСим = СоответствиеСимволов.Получить(Сред(Стр, н, 1));
Если ЛатСим <> Неопределено Тогда
Стр = Лев(Стр, н-1) + ЛатСим + Сред(Стр, н+1);
Показать

Проблема только заполнить "СоответствиеСимволов". И сделать это нужно не в обработчике. А заранее и только 1 раз. Вопрос скорости здесь критичен. На длинные тексты (под 1000) не сгодится.
В итоге получится интересно. Нажал пользователь "Я". Она через долю секунды превратилась в "Z".
5. Dm_Kz 22.09.17 13:35 Сейчас в теме
(4) Можно использовать не соответствие символов, а получать кода символа и если он соответствует кириллице - переводить его в латиницу вычетанием из кода фиксированного значения.
6. Dm_Kz 22.09.17 13:36 Сейчас в теме
(4) При вводе больших текстов имеет смысл хранить позицию последнего обработанного символа.
8. BigBoss 2 01.11.17 11:27 Сейчас в теме
Вопрос такой: у поля ввода есть событие "ОкончаниеВводаТекста" , но мне нужно перед вводом переключать на англ.раскладку, Есть ли событие "НачалоВводаТекста"?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот