формат модуля

This commit is contained in:
Dmitry Belyaev 2022-05-16 11:30:11 +03:00
parent 9f8af02165
commit 1f1bdeb8af
Signed by: b4tman
GPG Key ID: 41A00BF15EA7E5F3

View File

@ -166,7 +166,7 @@
ЗакрытьДокумент(комДокумент); // без сохранения
ЗакрытьВорд(комВорд);
ИсправитьНедопустимыеСимволы(т);
ИсправитьНедопустимыеСимволы(т);
Возврат т;
Исключение
@ -420,19 +420,19 @@
Возврат Результат;
КонецФункции
Функция АлфавитСистемСчисления(Нотация=36)
Алфавит = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ДлинаАлфавита = СтрДлина(Алфавит);
Результат = "";
Если ДлинаАлфавита = Нотация Тогда
Результат = Алфавит;
ИначеЕсли ДлинаАлфавита > Нотация Тогда
Результат = Лев(Алфавит, Нотация);
Иначе
ВызватьИсключение "Алфавит слишком мал";
КонецЕсли;
Функция АлфавитСистемСчисления(Нотация = 36)
Алфавит = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ДлинаАлфавита = СтрДлина(Алфавит);
Результат = "";
Если ДлинаАлфавита = Нотация Тогда
Результат = Алфавит;
ИначеЕсли ДлинаАлфавита > Нотация Тогда
Результат = Лев(Алфавит, Нотация);
Иначе
ВызватьИсключение "Алфавит слишком мал";
КонецЕсли;
Возврат Результат;
Возврат Результат;
КонецФункции
Функция ЧислоВДругуюСистему(Знач Значение = 0, Нотация = 36)
@ -441,8 +441,8 @@
КонецЕсли;
Значение = Цел(Число(Значение));
Если Значение <= 0 Тогда
Возврат "0";
Если Значение <= 0 Тогда
Возврат "0";
КонецЕсли;
Алфавит = АлфавитСистемСчисления(Нотация);
@ -456,7 +456,7 @@
КонецФункции
Функция ЧислоИзДругойСистемы(Знач Значение = "0", Нотация = 36)
Если Нотация <= 0 Тогда
Если Нотация <= 0 Тогда
Возврат 0;
КонецЕсли;
@ -465,14 +465,14 @@
Возврат 0;
КонецЕсли;
Алфавит = АлфавитСистемСчисления(Нотация);
Алфавит = АлфавитСистемСчисления(Нотация);
Результат = 0;
Длина = СтрДлина(Значение);
Для Позиция = 1 По Длина Цикл
Множитель = Pow(Нотация, Длина - Позиция);
ТекСимвол = Сред(Значение, Позиция, 1);
ИндексСимвола = СтрНайти(Алфавит, ТекСимвол) - 1;
Результат = Результат + ИндексСимвола * Множитель;
ТекСимвол = Сред(Значение, Позиция, 1);
ИндексСимвола = СтрНайти(Алфавит, ТекСимвол) - 1;
Результат = Результат + ИндексСимвола * Множитель;
КонецЦикла;
Возврат Окр(Результат);
КонецФункции
@ -486,7 +486,7 @@
КонецФункции
Процедура ЗаменитьТекстВТД(ТД, Текст, Замена)
Область = ТД.НайтиТекст(Текст);
Область = ТД.НайтиТекст(Текст);
Пока НЕ Неопределено = Область Цикл
Область.Текст = СтрЗаменить(Область.Текст, Текст, Замена);
Область = ТД.НайтиТекст(Текст, Область);
@ -494,45 +494,44 @@
КонецПроцедуры
Функция МассивПоДиапазонуЧисел(Число_С, Числоо)
Результат = Новый Массив;
Для ТекЧисло = Число_С По Числоо Цикл
Результат.Добавить(ТекЧисло);
КонецЦикла;
Возврат Результат;
Результат = Новый Массив;
Для ТекЧисло = Число_С По Числоо Цикл
Результат.Добавить(ТекЧисло);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция СформироватьДиапазон(МассивОписанияДиапазона)
Результат = Неопределено;
Если 1 = МассивОписанияДиапазона.Количество() Тогда
Результат = Новый Массив;
Результат.Добавить(МассивОписанияДиапазона[0]);
ИначеЕсли 2 = МассивОписанияДиапазона.Количество() Тогда
Результат = МассивПоДиапазонуЧисел(МассивОписанияДиапазона[0], МассивОписанияДиапазона[1]);
Иначе
ВызватьИсключение СтрШаблон("Ошибка в описании диапазона: %1 элементов", МассивОписанияДиапазона.Количество());
КонецЕсли;
Возврат Результат;
Результат = Неопределено;
Если 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
ИнтервалыКодов = "0-1F,7F,80-9F,034F,2008,200B-200F,2028-202E,2060-2061,2063,2066-206F,"
+ "FE00-FE0F,FEFF,FFF9-FFFD,E0100-E01EF";
ИнтервалыКодов = СтрРазделить(ИнтервалыКодов, ",");
ИнтервалыКодов = Мап("Результат = СтрРазделить(Элемент, ""-"")", ИнтервалыКодов);
ИнтервалыКодов = Мап("Результат = Мап(""Результат = Ох(Элемент)"" ,Элемент)", ИнтервалыКодов);
ИнтервалыКодов = Мап("Результат = СформироватьДиапазон(Элемент)", ИнтервалыКодов);
УпрСимволы = Свернуть("ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, Элемент)", ИнтервалыКодов, Новый Массив);
УпрСимволы = Мап("Результат = Символ(Элемент)", УпрСимволы);
// список символов из:
// 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
ИнтервалыКодов = "0-1F,7F,80-9F,034F,2008,200B-200F,2028-202E,2060-2061,2063,2066-206F,"
+ "FE00-FE0F,FEFF,FFF9-FFFD,E0100-E01EF";
ИнтервалыКодов = СтрРазделить(ИнтервалыКодов, ",");
ИнтервалыКодов = Мап("Результат = СтрРазделить(Элемент, ""-"")", ИнтервалыКодов);
ИнтервалыКодов = Мап("Результат = Мап(""Результат = Ох(Элемент)"" ,Элемент)", ИнтервалыКодов);
ИнтервалыКодов = Мап("Результат = СформироватьДиапазон(Элемент)", ИнтервалыКодов);
УпрСимволы = Свернуть("ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, Элемент)", ИнтервалыКодов, Новый Массив);
УпрСимволы = Мап("Результат = Символ(Элемент)", УпрСимволы);
УпрСимволы = ОбщегоНазначенияКлиентСервер.СвернутьМассив(УпрСимволы);
Исключения = Мап("Результат = Символы[Элемент]", СтрРазделить("ПС,ВК", ","));
УпрСимволы = Фильтр("Условие = Неопределено = _.Найти(Элемент)", УпрСимволы, Исключения);
Исключения = Мап("Результат = Символы[Элемент]", СтрРазделить("ПС,ВК", ","));
УпрСимволы = Фильтр("Условие = Неопределено = _.Найти(Элемент)", УпрСимволы, Исключения);
ЗаменитьТекстВТД(ТабДок, Символы.ВТаб, Символы.ПС);
Для Каждого ТекСимвол_Число Из УпрСимволы Цикл
ЗаменитьТекстВТД(ТабДок, ТекСимвол_Число, "");
КонецЦикла;
КонецПроцедуры