From 91ad583c59823ed216515ee4d620e6468f1d7b89 Mon Sep 17 00:00:00 2001
From: Dmitry <b4tm4n@mail.ru>
Date: Thu, 14 Dec 2023 12:16:24 +0300
Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20=D0=BF?=
 =?UTF-8?q?=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D0=B0=20=D0=BA=20=D0=BE?=
 =?UTF-8?q?=D0=B1=D1=89=D0=B8=D0=BC=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F?=
 =?UTF-8?q?=D0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Word2MXL/Ext/ObjectModule.bsl | 50 +++++++++++++++++++++++++++++++++--
 1 file changed, 48 insertions(+), 2 deletions(-)

diff --git a/Word2MXL/Ext/ObjectModule.bsl b/Word2MXL/Ext/ObjectModule.bsl
index 8a943a8..82bcdeb 100644
--- a/Word2MXL/Ext/ObjectModule.bsl
+++ b/Word2MXL/Ext/ObjectModule.bsl
@@ -514,6 +514,52 @@
 	Возврат Результат;
 КонецФункции
 
+
+Функция СвернутьМассив(Знач Массив) Экспорт
+	Результат = Новый Массив;
+	ДополнитьМассив(Результат, Массив, Истина);
+	Возврат Результат;
+КонецФункции
+
+Функция РазностьМассивов(Знач Массив, Знач МассивВычитания) Экспорт
+	
+	Результат = Новый Массив;
+	Для Каждого Элемент Из Массив Цикл
+		Если МассивВычитания.Найти(Элемент) = Неопределено Тогда
+			Результат.Добавить(Элемент);
+		КонецЕсли;
+	КонецЦикла;
+	Возврат Результат;
+	
+КонецФункции
+
+Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт
+	
+	Если ТолькоУникальныеЗначения Тогда
+		
+		УникальныеЗначения = Новый Соответствие;
+		
+		Для Каждого Значение Из МассивПриемник Цикл
+			УникальныеЗначения.Вставить(Значение, Истина);
+		КонецЦикла;
+		
+		Для Каждого Значение Из МассивИсточник Цикл
+			Если УникальныеЗначения[Значение] = Неопределено Тогда
+				МассивПриемник.Добавить(Значение);
+				УникальныеЗначения.Вставить(Значение, Истина);
+			КонецЕсли;
+		КонецЦикла;
+		
+	Иначе
+		
+		Для Каждого Значение Из МассивИсточник Цикл
+			МассивПриемник.Добавить(Значение);
+		КонецЦикла;
+		
+	КонецЕсли;
+	
+КонецПроцедуры
+
 Процедура ИсправитьНедопустимыеСимволы(ТабДок)
 	// список символов из:
 	// 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
@@ -523,9 +569,9 @@
 	ИнтервалыКодов = Мап("Результат = СтрРазделить(Элемент, ""-"")", ИнтервалыКодов);
 	ИнтервалыКодов = Мап("Результат = Мап(""Результат = Ох(Элемент)"" ,Элемент)", ИнтервалыКодов);
 	ИнтервалыКодов = Мап("Результат = СформироватьДиапазон(Элемент)", ИнтервалыКодов);
-	УпрСимволы = Свернуть("ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, Элемент)", ИнтервалыКодов, Новый Массив);
+	УпрСимволы = Свернуть("ДополнитьМассив(Результат, Элемент)", ИнтервалыКодов, Новый Массив);
 	УпрСимволы = Мап("Результат = Символ(Элемент)", УпрСимволы);
-	УпрСимволы = ОбщегоНазначенияКлиентСервер.СвернутьМассив(УпрСимволы);
+	УпрСимволы = СвернутьМассив(УпрСимволы);
 	Исключения = Мап("Результат = Символы[Элемент]", СтрРазделить("ПС,ВК", ","));
 	УпрСимволы = Фильтр("Условие = Неопределено = _.Найти(Элемент)", УпрСимволы, Исключения);