|
|
|
Удалить язык из табличного документа | ☑ | ||
|---|---|---|---|---|
|
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
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |