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

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
1 changed files with 52 additions and 53 deletions

View File

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