Имя: Пароль:
1C
 
Удалить язык из табличного документа
0 TormozIT
 
15.05.23
14:48
Однажды в конфигурации с кучей языков я открыл табличный документ и задал для одной ячейки строки на всех ее языках. Затем я перенес этот табличный документ в конфигурацию с двумя языками.
В этом табличном документе при редактировании текста ячейки в отдельном окне видны все языки, на которых есть хотя бы одно непустое значение.
Я очистил все тексты на ненужных языках этого табличного документа. Но поля ввода для них все равно отображаются.
Платформа внутри хранит список языков. Но вроде не дает к нему доступа.
Как то можно без пересоздания табличного документа от них избавиться в конфигураторе или во встроенном языке?
https://i.imgur.com/VJUaG5j.png
Так выглядит ЗначениеВСтрокуВнутр(ТабличныйДокумент):
{"#",e603103e-a318-4edc-a014-b1c6cf94d49f,
{8,1,12,
{"ru","ru",1,10,"ru","Русский","Русский","en","Английский","Английский","bg","Болгарский","Болгарский","xx","Служебный","Служебный","ka","Грузинский","","kk","Казахский","","ky","Киргизский","","tg","Таджикский","","tk","Туркменский","","uz","Узбекский","",1},
1 TormozIT
 
15.05.23
23:59
Пришлось писать код.
Получилось это
Функция УдалитьВнешниеЯзыкиДокумента(ТабДок, выхБылиУдаления = Ложь)
	ЗаписьХмл = Новый ЗаписьXML;
	ЗаписьХмл.УстановитьСтроку();
	СериализаторXDTO.ЗаписатьXML(ЗаписьХмл, ТабДок);
	ТекстДо = ЗаписьХмл.Закрыть();
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ТекстДо);
	ПостроительDOM = Новый ПостроительDOM;
	ДокументДом = ПостроительDOM.Прочитать(ЧтениеXML);	 
	РазрешенныеЯзыки = Новый Структура;
	Для Каждого МетаЯзык Из Метаданные.Языки Цикл
		РазрешенныеЯзыки.Вставить(МетаЯзык.КодЯзыка);
	КонецЦикла;
	БылиУдаления = Ложь;
	ЭлементЯзыки = ДокументДом.ПолучитьЭлементыПоИмени("languageSettings");
	Для Каждого ЯзыкДокумента Из ЭлементЯзыки[0].ПолучитьЭлементыПоИмени("languageInfo") Цикл
		КодЯзыкаДокумента = ЯзыкДокумента.ПолучитьЭлементыПоИмени("id")[0].ТекстовоеСодержимое;
		Если Не РазрешенныеЯзыки.Свойство(КодЯзыкаДокумента) Тогда
			ЯзыкДокумента.РодительскийУзел.УдалитьДочерний(ЯзыкДокумента);
			БылиУдаления = Истина;
		КонецЕсли;
	КонецЦикла; 
	Если Не БылиУдаления Тогда
		Возврат ТабДок;
	КонецЕсли;
	выхБылиУдаления = Истина;
	ЗаписьХмл = Новый ЗаписьXML;
	ЗаписьХмл.УстановитьСтроку();
	ЗаписьДом = Новый ЗаписьDOM;
	ЗаписьДом.Записать(ДокументДом, ЗаписьХмл); 
	ТекстПосле = ЗаписьХмл.Закрыть();	 
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(ТекстПосле);
	Рез = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
	Возврат Рез;

КонецФункции
2 TormozIT
 
21.05.23
23:17
Добавил эту функцию в редактор табличного документа ИР https://www.hostedredmine.com/issues/963610