сокращение записи диапазонов упр.символов
This commit is contained in:
parent
0f9427abe8
commit
ce57f18588
@ -494,23 +494,41 @@
|
||||
КонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция МассивПоДиапазонуЧисел(Число_С, Число_По)
|
||||
Результат = Новый Массив;
|
||||
Для ТекЧисло = Число_С По Число_По Цикл
|
||||
Результат.Добавить(ТекЧисло);
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьДиапазон(МассивОписанияДиапазона)
|
||||
Результат = Неопределено;
|
||||
Если 1 = МассивОписанияДиапазона.Количество() Тогда
|
||||
Результат = Новый Массив;
|
||||
Результат.Добавить(МассивОписанияДиапазона[0]);
|
||||
ИначеЕсли 2 = МассивОписанияДиапазона.Количество() Тогда
|
||||
Результат = МассивПоДиапазонуЧисел(МассивОписанияДиапазона[0], МассивОписанияДиапазона[1]);
|
||||
Иначе
|
||||
ВызватьИсключение СтрШаблон("Ошибка в описании диапазона: %1 элементов", МассивОписанияДиапазона.Количество());
|
||||
КонецЕсли;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
Процедура ИсправитьНедопустимыеСимволы(ТабДок)
|
||||
// список символов из:
|
||||
// https://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B
|
||||
УпрСимволы_ASCII = "0,1,2,3,4,5,6,7,8,9,0B,0C,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,7F";
|
||||
УпрСимволы_ISO = "80,81,82,83,84,85,86,87,88,89,8A,8B,8С,8D,8E,8F,90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F";
|
||||
УпрСимволы_Unicode = "034F,2008,200B,200C,200D,200E,200F,2028,2029,202A,202B,202C,202D,202E,2060,2061,2063,2066,2067,2068,2069,206A,206B,206C,206D,206E,206F," +
|
||||
"FE00,FE01,FE02,FE03,FE04,FE05,FE06,FE07,FE08,FE09,FE0A,FE0B,FE0C,FE0D,FE0E,FE0F,FEFF,FFF9,FFFA,FFFB,FFFC,FFFD";
|
||||
|
||||
УпрСимволы = СтрШаблон("%1,%2,%3", УпрСимволы_ASCII, УпрСимволы_ISO, УпрСимволы_Unicode);
|
||||
УпрСимволы = СтрРазделить(УпрСимволы, ",");
|
||||
УпрСимволы = Мап("Результат = Ох(Элемент)", УпрСимволы);
|
||||
УпрСимволы = Мап("Результат = Символ(Элемент)", УпрСимволы);
|
||||
ИнтервалыКодов = "0-1F,7F,80-9F,034F,2008,200B-200F,2028-202E,2060-2061,2063,2066-206F,"
|
||||
+ "FE00-FE0F,FEFF,FFF9-FFFD,E0100-E01EF";
|
||||
ИнтервалыКодов = СтрРазделить(ИнтервалыКодов, ",");
|
||||
ИнтервалыКодов = Мап("Результат = СтрРазделить(Элемент, ""-"")", ИнтервалыКодов);
|
||||
ИнтервалыКодов = Мап("Результат = Мап(""Результат = Ох(Элемент)"" ,Элемент)", ИнтервалыКодов);
|
||||
ИнтервалыКодов = Мап("Результат = СформироватьДиапазон(Элемент)", ИнтервалыКодов);
|
||||
УпрСимволы = Свернуть("ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, Элемент)", ИнтервалыКодов, Новый Массив);
|
||||
УпрСимволы = Мап("Результат = Символ(Элемент)", УпрСимволы);
|
||||
УпрСимволы = ОбщегоНазначенияКлиентСервер.СвернутьМассив(УпрСимволы);
|
||||
|
||||
Для ТекСимвол_Число = Ох("E0100") По Ох("E01EF") Цикл
|
||||
УпрСимволы.Добавить(Символ(ТекСимвол_Число));
|
||||
КонецЦикла;
|
||||
Исключения = Мап("Результат = Символы[Элемент]", СтрРазделить("ПС,ВК", ","));
|
||||
УпрСимволы = Фильтр("Условие = Неопределено = _.Найти(Элемент)", УпрСимволы, Исключения);
|
||||
|
||||
ЗаменитьТекстВТД(ТабДок, Символы.ВТаб, Символы.ПС);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user