//ирПортативный Перем ирПортативный Экспорт; //ирПортативный Перем ирОбщий Экспорт; //ирПортативный Перем ирСервер Экспорт; //ирПортативный Перем ирКэш Экспорт; //ирПортативный Перем ирПривилегированный Экспорт; Перем ФайлСтилейСинтаксПомощника Экспорт; Перем ЗаменыВнешнихОбъектов; Перем СоответствиеЗамены; Перем типСтрока; Перем СрабатываниеЗамен; Перем ВычислительРегВыражений; Перем ВычислительРегВыражений2; Перем мПлатформа; Перем шТег Экспорт; Перем шТегНеКлюч Экспорт; Перем шТегКлюч Экспорт; Перем шКонецТегаКлюч Экспорт; Перем шТип Экспорт; Функция РаспаковатьФайлАрхиваСинтаксПомощника(Знач ПутьКЭлементу, ПрефиксСсылки = "") Экспорт ФайлАрхива = ПолучитьАрхивСинтаксПомощникаПоПутиКЭлементу(ПутьКЭлементу,, Истина); Если ФайлАрхива = Неопределено Тогда Возврат Неопределено; КонецЕсли; #Если Сервер И Не Сервер Тогда мПлатформа = Обработки.ирПлатформа.Создать(); ФайлАрхива = Новый Файл; #КонецЕсли Если Лев(ПутьКЭлементу, 1) = "/" Тогда ПутьКЭлементу = Сред(ПутьКЭлементу, 2); КонецЕсли; МассивФрагментов = ирОбщий.СтрРазделитьЛкс(ПутьКЭлементу, "#"); ПутьКЭлементу = МассивФрагментов[0]; ФайлСтраницы = Новый Файл(ПутьКэшаСинтаксПомощника() + ПутьКЭлементу); Если Не ФайлСтраницы.Существует() Тогда ФайлРаспаковщикаZIP = мПлатформа.ПолучитьФайлРаспаковщикаZIP(Истина); #Если Сервер И Не Сервер Тогда ФайлРаспаковщикаZIP = Новый Файл; #КонецЕсли ПараметрыКоманды = " -o " + ФайлАрхива.Имя + " """ + ПутьКЭлементу + """"; Если ирКэш.ЛиПлатформаWindowsЛкс() Тогда // Так быстрее - 150мс ВК = ирКэш.ВКОбщаяЛкс(); ВК.Run(ФайлРаспаковщикаZIP.ПолноеИмя, ПараметрыКоманды, ПутьКэшаСинтаксПомощника(), Истина, Ложь); Иначе // Так медленнее - 200мс ирОбщий.ЗапуститьСкрытоеПриложениеИДождатьсяЗавершенияЛкс("""" + ФайлРаспаковщикаZIP.ПолноеИмя + """" + ПараметрыКоманды, ПутьКэшаСинтаксПомощника(), Истина); КонецЕсли; КонецЕсли; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ФайлСтраницы.ПолноеИмя); СодержаниеСтраницы = ТекстовыйДокумент.ПолучитьТекст(); Если Найти(СодержаниеСтраницы, "") > 0 Тогда Маркер = ""; ИначеЕсли Найти(СодержаниеСтраницы, "") > 0 Тогда Маркер = ""; ИначеЕсли Найти(СодержаниеСтраницы, "") > 0 Тогда Маркер = ""; КонецЕсли; Если Маркер <> Неопределено Тогда ТегБазы = ""; СодержаниеСтраницы = СтрЗаменить(СодержаниеСтраницы, Маркер, Маркер + ТегБазы); ТекстовыйДокумент.УстановитьТекст(СодержаниеСтраницы); ТекстовыйДокумент.Вывод = ИспользованиеВывода.Разрешить; ТекстовыйДокумент.Записать(ФайлСтраницы.ПолноеИмя); КонецЕсли; ВременныйАдрес = ФайлСтраницы.ПолноеИмя; Если МассивФрагментов.Количество() > 1 Тогда ВременныйАдрес = ВременныйАдрес + "#" + МассивФрагментов[1]; КонецЕсли; Возврат ВременныйАдрес; КонецФункции Функция ФайлСтилейСинтаксПомощника() Экспорт Если ФайлСтилейСинтаксПомощника = Неопределено Тогда ФайлСтилейСинтаксПомощника = Новый Файл(ПолучитьИмяВременногоФайла("css")); ТекстовыйДокумент = ПолучитьМакет("СтилиСинтаксПомощника"); ТекстовыйДокумент.Вывод = ИспользованиеВывода.Разрешить; ТекстовыйДокумент.Записать(ФайлСтилейСинтаксПомощника.ПолноеИмя); КонецЕсли; Возврат ФайлСтилейСинтаксПомощника; КонецФункции // Получает zip-архив синтакс-помощника из файла "shcntx_ru.hbk" в каталоге установки платформы. // // Параметры: // ЭлементСтруктуры - Число, *0 - 0 - архив страниц, 1 - содержание книги, 2 - индекс книги // Функция АрхивСинтаксПомощникаПоИмени(ЭлементСтруктуры = 0, ИмяАрхива = "shcntx_ru") Экспорт мПлатформа = ирКэш.Получить(); #Если Сервер И Не Сервер Тогда мПлатформа = Обработки.ирПлатформа.Создать(); #КонецЕсли КлючСтруктуры = "_" + ИмяАрхива + ЭлементСтруктуры; ФайлАрхива = Новый Файл(ПутьКэшаСинтаксПомощника() + КлючСтруктуры + ".zip"); Если Не ФайлАрхива.Существует() Тогда Если ЭлементСтруктуры = 0 Тогда ИмяБлока = "FileStorage.data"; ИначеЕсли ЭлементСтруктуры = 1 Тогда ИмяБлока = "PackBlock.data"; ИначеЕсли ЭлементСтруктуры = 2 Тогда ИмяБлока = "IndexPackBlock.data"; КонецЕсли; ИмяФайлаПлатформы = ИмяАрхива + ".hbk"; ТекущийКаталог = КаталогВременныхФайлов(); ФайлПлатформы = Новый Файл(КаталогПрограммы() + ИмяФайлаПлатформы); //ФайлПлатформы = Новый Файл(ПолучитьИмяФайлаВФорматеDOS(ФайлПлатформы.ПолноеИмя)); ФайлБлока = Новый Файл(ТекущийКаталог + ИмяБлока); #Если Клиент Тогда Состояние("Распаковка синтакс-помощника"); #КонецЕсли мПлатформа.РаспаковатьФайлВнешнейОбработки(ФайлПлатформы.ПолноеИмя, ТекущийКаталог); Попытка ПереместитьФайл(ФайлБлока.ПолноеИмя, ФайлАрхива.ПолноеИмя); Исключение // Если файл залочен на чтение (открыт синтакс-помощник в конфигураторе) КопияФайлаПлатформы = Новый Файл(ПолучитьИмяВременногоФайла()); КопироватьФайл(ФайлПлатформы.ПолноеИмя, КопияФайлаПлатформы.ПолноеИмя); ФайлПлатформы = Новый Файл(мПлатформа.ПолучитьИмяФайлаВФорматеDOS(КопияФайлаПлатформы.ПолноеИмя)); ФайлБлока = Новый Файл(ТекущийКаталог + ИмяБлока); мПлатформа.РаспаковатьФайлВнешнейОбработки(ФайлПлатформы.ПолноеИмя, ТекущийКаталог); ПереместитьФайл(ФайлБлока.ПолноеИмя, ФайлАрхива.ПолноеИмя); КонецПопытки; УдалитьФайлы(ТекущийКаталог + Лев(ФайлПлатформы.ИмяБезРасширения, 8)); #Если Клиент Тогда Состояние(""); #КонецЕсли КонецЕсли; Возврат ФайлАрхива; КонецФункции Функция ПутьКэшаСинтаксПомощника() Экспорт Результат = ирКэш.КаталогИзданияПлатформыВПрофилеЛкс() + ирОбщий.РазделительПутиКФайлуЛкс() + XMLСтрока(ирКэш.НомерВерсииПлатформыЛкс()); СоздатьКаталог(Результат); Возврат Результат + ирОбщий.РазделительПутиКФайлуЛкс(); КонецФункции Функция ПрочитатьИндексАрхиваСинтаксПомощника(ИмяАрхива) Экспорт Результат = Неопределено; ФайлИндекса = Новый Файл(ПутьКэшаСинтаксПомощника() + ИмяАрхива + ".idx"); Если ФайлИндекса.Существует() Тогда Результат = ЗначениеИзФайла(ФайлИндекса.ПолноеИмя); Результат = Результат.Индекс; КонецЕсли; Возврат Результат; КонецФункции Процедура ЗаписатьИндексАрхиваСинтаксПомощника(ИмяАрхива, ТаблицаИндекса) Экспорт ФайлИндекса = Новый Файл(ПутьКэшаСинтаксПомощника() + ИмяАрхива + ".idx"); Результат = Новый Структура; Результат.Вставить("Индекс", ТаблицаИндекса); ЗначениеВФайл(ФайлИндекса.ПолноеИмя, Результат); КонецПроцедуры // // // Параметры: // ПутьКЭлементу - Строка - модифицируется // ИмяАрхива – Строка – входное значение игнорируется, на выход подается вычисленное имя файла архива; // // Возвращаемое значение: // – <Тип.Вид> – <описание значения> // <продолжение описания значения>; // <Значение2> – <Тип.Вид> – <описание значения> // <продолжение описания значения>. // Функция ПолучитьАрхивСинтаксПомощникаПоПутиКЭлементу(ПутьКЭлементу, ЭлементСтруктуры = 0, ЛиОбрезатьПутьДоОтносительного = Ложь, ИмяАрхива = "") Экспорт МаркерДопАрхива = "//"; Если Найти(ПутьКЭлементу, МаркерДопАрхива) = 1 Тогда ИмяАрхива = ирОбщий.ПервыйФрагментЛкс(Сред(ПутьКЭлементу, СтрДлина(МаркерДопАрхива) + 1), "/"); Если ЛиОбрезатьПутьДоОтносительного Тогда ПутьКЭлементу = Сред(ПутьКЭлементу, СтрДлина(МаркерДопАрхива) + 1 + СтрДлина(ИмяАрхива) + 1); КонецЕсли; ФайлАрхива = АрхивСинтаксПомощникаПоИмени(ЭлементСтруктуры, ИмяАрхива); Иначе ФайлАрхива = АрхивСинтаксПомощникаПоИмени(ЭлементСтруктуры); КонецЕсли; Возврат ФайлАрхива; КонецФункции Функция ЗагрузитьОписаниеМетода(Знач ТипКонтекста, Знач ИмяМетода, Знач ОписаниеHTML, Знач ТипСлова = "Метод", Знач ЯзыкПрограммы = 0, Знач ТаблицаПараметров = Неопределено, Знач РабочийКаталог = "", Знач СтрокаОписания = Неопределено) Экспорт мПлатформа = ирКэш.Получить(); #Если Сервер И Не Сервер Тогда мПлатформа = Обработки.ирПлатформа.Создать(); #КонецЕсли Если ТаблицаПараметров = Неопределено Тогда ТаблицаПараметров = мПлатформа.ТаблицаПараметров; КонецЕсли; #Если Сервер И Не Сервер Тогда ТаблицаПараметров = Новый ТаблицаЗначений; #КонецЕсли ТекстовыйДокумент = Новый ТекстовыйДокумент; ВычислительРегВыражений.IgnoreCase = Истина; ВычислительРегВыражений.Global = Истина; ВычислительРегВыражений.Pattern = шТегКлюч + "Вариант синтаксиса:\s*([^<""]+)" + шКонецТегаКлюч; ВхожденияВариантов = ВычислительРегВыражений.НайтиВхождения(ОписаниеHTML); ОписанияВариантов = Новый СписокЗначений; Если ВхожденияВариантов.Количество() = 0 Тогда ОписанияВариантов.Добавить(ОписаниеHTML); Иначе ТекущаяПозиция = 1; ТекущийВариант = ""; Для Каждого Вхождение Из ВхожденияВариантов Цикл Если ТекущаяПозиция > 1 Тогда ОписанияВариантов.Добавить(Сред(ОписаниеHTML, ТекущаяПозиция, Вхождение.FirstIndex - ТекущаяПозиция), ТекущийВариант); КонецЕсли; ТекущаяПозиция = Вхождение.FirstIndex; ТекущийВариант = Вхождение.SubMatches(0); КонецЦикла; ОписанияВариантов.Добавить(Сред(ОписаниеHTML, ТекущаяПозиция), Вхождение.SubMatches(0)); КонецЕсли; Для Каждого ЭлементСписка Из ОписанияВариантов Цикл Если ТаблицаПараметров = мПлатформа.ТаблицаПараметров Тогда ВычислительРегВыражений.Pattern = шТегКлюч + "+Описание(?: варианта метода)?:?" + шКонецТегаКлюч + "+(.*?)(?:\s*

\s*)"; Результат = ВычислительРегВыражений.НайтиВхождения(ЭлементСписка.Значение); Если Результат.Количество() = 0 Тогда СтрокаОписания.Описание = ""; Иначе СтрокаОписания.Описание = ИзвлечьИзФрагментаHTMLОбычныйТекст(Результат[0].SubMatches(0)); КонецЕсли; КонецЕсли; // Параметры ВычислительРегВыражений.Pattern = шТегКлюч + "+Параметры:?" + шКонецТегаКлюч + "+((?:.|\n)*?)(?:" + шТегКлюч + "+Описание(?: варианта метода)?:?" + шКонецТегаКлюч + "|$)"; Результат = ВычислительРегВыражений.НайтиВхождения(ЭлементСписка.Значение); Если Результат.Количество() = 0 Тогда Продолжить; КонецЕсли; ОписаниеВарианта = Результат[0].SubMatches(0); Если ТипСлова = "Таблица" Тогда ВычислительРегВыражений.Pattern = "([" + мПлатформа.шБукваЦифра + "\-\s\(\)]+)"; Иначе // Грязный прием поиска до первой английском буквы "p" ВычислительРегВыражений.Pattern = шТегКлюч + "(<[^&]*>)" + "()?(?:\s*(?:\((необязательный|обязательный)?\)\s*)?" + шКонецТегаКлюч + "+(?:Тип:" + шТегНеКлюч + "?((?:" + шТип + ")+)" + шТегНеКлюч + "?)?)?\.?((?:(?:Значение по умолчанию: " + шТег + "?([^<>]+)" + шТег + "?\.)|[^p](?=[^p]|$)|[^<]p+)*)"; КонецЕсли; Результат = ВычислительРегВыражений.НайтиВхождения(ОписаниеВарианта); КлючПоискаПараметра = Новый Структура("ТипКонтекста, ЯзыкПрограммы, Слово, Номер, ВариантСинтаксиса"); Если ТипСлова = "Конструктор" Тогда КлючПоискаПараметра.Слово = "<Новый>"; КлючПоискаПараметра.ВариантСинтаксиса = ИмяМетода; Иначе КлючПоискаПараметра.Слово = ИмяМетода; КлючПоискаПараметра.ВариантСинтаксиса = ЭлементСписка.Представление; КонецЕсли; КлючПоискаПараметра.ТипКонтекста = ТипКонтекста; КлючПоискаПараметра.ЯзыкПрограммы = ЯзыкПрограммы; ЧтениеХмлПараметра = Новый ЧтениеXML; НомерПараметра = 1; Для Каждого Item Из Результат Цикл #Если Сервер И Не Сервер Тогда Item = Обработки.ирОболочкаРегВхождение.Создать(); #КонецЕсли НоваяСтрокаПараметра = Неопределено; КлючПоискаПараметра.Номер = НомерПараметра; Если ТаблицаПараметров = мПлатформа.ТаблицаПараметров Тогда НайденныеСтроки = ТаблицаПараметров.НайтиСтроки(КлючПоискаПараметра); Если НайденныеСтроки.Количество() > 0 Тогда НоваяСтрокаПараметра = НайденныеСтроки[0]; КонецЕсли; КонецЕсли; Если НоваяСтрокаПараметра = Неопределено Тогда НоваяСтрокаПараметра = ТаблицаПараметров.Добавить(); КонецЕсли; СтруктураСтроки = ирОбщий.СтруктураСвойствСтрокиТаблицыИлиДереваЛкс(НоваяСтрокаПараметра); ЗаполнитьЗначенияСвойств(СтруктураСтроки, КлючПоискаПараметра); ТекстПараметра = Item.SubMatches(0); ТекстПоискаТипов = Неопределено; // Для параметров виртуальных таблиц надо убрать оберку .... В ней находится ссылка на страницу описания параметра, которую пока не используем. ЧтениеХмлПараметра.УстановитьСтроку(ТекстПараметра); Попытка ЧтениеХмлПараметра.Прочитать(); ЧтениеХмлПараметра.Прочитать(); Исключение КонецПопытки; Если ЧтениеХмлПараметра.ТипУзла = ТипУзлаXML.Текст Тогда ТекстПараметра = ЧтениеХмлПараметра.Значение; КонецЕсли; СтруктураСтроки.Параметр = ТекстПараметра; Если ТипСлова <> "Таблица" Тогда Если Item.SubMatches(2) = "необязательный" Тогда СтруктураСтроки.Необязательный = Истина; КонецЕсли; Если ТаблицаПараметров = мПлатформа.ТаблицаПараметров Тогда СтруктураСтроки.Описание = ИзвлечьИзФрагментаHTMLОбычныйТекст(Item.SubMatches(6)); КонецЕсли; ЗначениеПоУмолчанию = Item.SubMatches(7); Если ирОбщий.СтрокиРавныЛкс(ЗначениеПоУмолчанию, "Пустая строка") Тогда ЗначениеПоУмолчанию = """"""; КонецЕсли; СтруктураСтроки.Значение = ЗначениеПоУмолчанию; ТекстПоискаТипов = Item.SubMatches(3); КонецЕсли; Если Item.SubMatches(1) <> "" Тогда СтруктураСтроки.ПутьКОписанию = Item.SubMatches(1); Если Не ЗначениеЗаполнено(РабочийКаталог) Тогда РаспаковатьФайлАрхиваСинтаксПомощника(СтруктураСтроки.ПутьКОписанию); ФайлОписанияПараметра = Новый Файл(ПутьКэшаСинтаксПомощника() + СтруктураСтроки.ПутьКОписанию); Иначе ФайлОписанияПараметра = Новый Файл(РабочийКаталог + СтруктураСтроки.ПутьКОписанию); КонецЕсли; Если Истина И ФайлОписанияПараметра.Существует() И ФайлОписанияПараметра.ЭтоФайл() Тогда ТекстовыйДокумент.Прочитать(ФайлОписанияПараметра.ПолноеИмя); ВычислительРегВыражений2.Pattern = "Тип параметра:" + шТегНеКлюч + "?((?:" + шТип + ")+)"; Результат2 = ВычислительРегВыражений2.НайтиВхождения(ТекстовыйДокумент.ПолучитьТекст()); Если Результат2.Количество() > 0 Тогда ТекстПоискаТипов = Результат2[0].SubMatches(0); КонецЕсли; КонецЕсли; КонецЕсли; Если ТекстПоискаТипов <> Неопределено Тогда ВычислительРегВыражений2.Global = Истина; ВычислительРегВыражений2.Pattern = шТип; Результат2 = ВычислительРегВыражений2.НайтиВхождения(ТекстПоискаТипов); СтрокаТипаЗначения = ""; Для Каждого Вхождение2 Из Результат2 Цикл СтрокаТипаЗначения = СтрокаТипаЗначения + ", " + СокрЛП(Вхождение2.SubMatches(0)); КонецЦикла; СтруктураСтроки.ТипЗначения = ИзвлечьИзФрагментаHTMLОбычныйТекст(Сред(СтрокаТипаЗначения, 3)); КонецЕсли; СкорректироватьЭлементыСтруктуры(СтруктураСтроки); ЗаполнитьЗначенияСвойств(НоваяСтрокаПараметра, СтруктураСтроки); НомерПараметра = НомерПараметра + 1; КонецЦикла; КонецЦикла; КонецФункции Функция ИзвлечьИзФрагментаHTMLОбычныйТекст(Знач Текст) Экспорт ВычислительРегВыражений.Pattern = "
"; //Текст = ВычислительРегВыражений.Replace(Текст, Символы.ПС); // менее эффективно используется место Текст = ВычислительРегВыражений.Replace(Текст, " "); // более эффективно используется место ВычислительРегВыражений.Pattern = "
  • "; Текст = ВычислительРегВыражений.Replace(Текст, Символы.ПС + " - "); ВычислительРегВыражений.Pattern = "]*>|"; Текст = ВычислительРегВыражений.Replace(Текст, Символы.ПС); ВычислительРегВыражений.Pattern = "(?:\r?\n){2,}"; Текст = ВычислительРегВыражений.Replace(Текст, Символы.ПС); // Удаление всех оставшихся тегов ВычислительРегВыражений.Pattern = "<[^>]+>"; Текст = ВычислительРегВыражений.Replace(Текст, ""); Текст = СокрЛП(ирОбщий.ДекодироватьТекстИзXMLЛкс(Текст)); Возврат Текст; КонецФункции Процедура СкорректироватьЭлементыСтруктуры(Структура) Экспорт Для Каждого ЭлементСтруктуры Из Структура Цикл Если ТипЗнч(ЭлементСтруктуры.Значение) <> типСтрока Тогда Продолжить; КонецЕсли; Если Найти(ЭлементСтруктуры.Значение, "<Имя регистра>") > 0 Тогда Если Найти(ЭлементСтруктуры.Значение, "РегистрСведений") > 0 Тогда СтрокаЗаменыИмениРегистра = "<Имя регистра сведений>"; ИначеЕсли Найти(ЭлементСтруктуры.Значение, "РегистрНакопления") > 0 Тогда СтрокаЗаменыИмениРегистра = "<Имя регистра накопления>"; КонецЕсли; Прервать; КонецЕсли; КонецЦикла; Для Каждого ЭлементСтруктуры Из Структура Цикл ЗначениеЭлемента = ЭлементСтруктуры.Значение; Если ТипЗнч(ЗначениеЭлемента) <> типСтрока Тогда Продолжить; КонецЕсли; Если Истина И Структура.Свойство("ЯзыкПрограммы") И Структура.ЯзыкПрограммы = 1 И ЗначениеЭлемента <> "Ссылка" Тогда ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, "Ссылка", ""); КонецЕсли; Если СтрокаЗаменыИмениРегистра <> Неопределено Тогда ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, "<Имя регистра>", СтрокаЗаменыИмениРегистра); КонецЕсли; // Выполняется много раз! Тяжелый цикл Для Каждого ЭлементЗамены Из СоответствиеЗамены Цикл //Если ВключитьАнализСрабатыванияЗамен Тогда // Если СрабатываниеЗамен[ЭлементЗамены.Ключ] = 0 И Найти(ЗначениеЭлемента, ЭлементЗамены.Ключ) > 0 Тогда // СрабатываниеЗамен[ЭлементЗамены.Ключ] = 1; // КонецЕсли; //КонецЕсли; ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, ЭлементЗамены.Ключ, ЭлементЗамены.Значение); КонецЦикла; Если Найти(ЗначениеЭлемента, "<") = 0 Тогда СтароеЗначениеЭлемента = ЗначениеЭлемента; Для Каждого СтрокаЗамены Из ЗаменыВнешнихОбъектов Цикл ЗначениеЭлемента = СтрЗаменить(ЗначениеЭлемента, СтрокаЗамены.Образец, СтрокаЗамены.Замена); Если СтароеЗначениеЭлемента <> ЗначениеЭлемента Тогда Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Структура[ЭлементСтруктуры.Ключ] = ЗначениеЭлемента; КонецЦикла; КонецПроцедуры //ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла); //ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf"; //ирПортативный #Если Клиент Тогда //ирПортативный Контейнер = Новый Структура(); //ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер); //ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда //ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля); //ирПортативный ирПортативный.Открыть(); //ирПортативный КонецЕсли; //ирПортативный #Иначе //ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта //ирПортативный #КонецЕсли //ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий"); //ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш"); //ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер"); //ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный"); мПлатформа = ирКэш.Получить(); #Если Сервер И Не Сервер Тогда мПлатформа = Обработки.ирПлатформа.Создать(); #КонецЕсли шТег = "(?:\s*<[^>]+>\s*)"; шТегНеКлюч = "(?:\s*<[^>""]+>\s*)"; шТегКлюч = "(?:\s*<(?:div|p|b)[^>]*>\s*)"; шКонецТегаКлюч = "(?:\s*\s*)"; шТип = "\s*(?:<[^>""]+""(?:[^""]*)"">)?((?:[" + мПлатформа.шБукваЦифра + "\-\s\:\&\/]+))(?:(?:<[^>""]+>)?(,|;))?"; СоответствиеЗамены = Новый Соответствие; // Баг платформы. Небрежность в файлах справки. //СоответствиеЗамены.Вставить("Командный интерфейс", "КомандныйИнтерфейс"); // Антибаг 8.2.15.289 http://partners.v8.1c.ru/forum/thread.jsp?id=999202#999202 СоответствиеЗамены.Вставить("<Имя журнала>", "<Имя журнала документов>"); //СоответствиеЗамены.Вставить("ПланВидовХарактристик", "ПланВидовХарактеристик"); //СоответствиеЗамены.Вставить("<Имя плана вида характеристики>", "<Имя плана видов характеристик>"); //СоответствиеЗамены.Вставить("<Имя плана вида характеристик>", "<Имя плана видов характеристик>"); //СоответствиеЗамены.Вставить("<Имя плана видов характеристики>", "<Имя плана видов характеристик>"); //СоответствиеЗамены.Вставить("<Имя предопределенного видов характеристики>", "<Имя предопределенного вида характеристик>"); //СоответствиеЗамены.Вставить("<Имя вида расчета>", "<Имя плана видов расчета>"); //СоответствиеЗамены.Вставить("<Измерения>", "<Имя измерения>"); //СоответствиеЗамены.Вставить("<Измерение>", "<Имя измерения>"); //СоответствиеЗамены.Вставить("<Реквизиты>", "<Имя реквизита>"); //СоответствиеЗамены.Вставить("<Ресурсы>", "<Имя ресурса>"); СоответствиеЗамены.Вставить("<Имя критерия>", "<Имя критерия отбора>"); СоответствиеЗамены.Вставить("<Имя WS-ссылки>", "<Имя WS-Ссылки>"); //СоответствиеЗамены.Вставить("<Имя WSСсылки>", "<Имя WS-Ссылки>"); //СоответствиеЗамены.Вставить("<ИмяКонстанты>", "<Имя константы>"); //СоответствиеЗамены.Вставить("<ИмяРесурса>", "<Имя ресурса>"); //СоответствиеЗамены.Вставить("<Имя Ресурса>", "<Имя ресурса>"); СоответствиеЗамены.Вставить("<Имя значения>", "<Имя значения перечисления>"); //СоответствиеЗамены.Вставить("<НомерСубконто>", "<Номер субконто>"); СоответствиеЗамены.Вставить("<ИмяПеречисления>", "<Имя перечисления>"); //СоответствиеЗамены.Вставить("<имя метода>", "<Имя метода>"); //СоответствиеЗамены.Вставить("<имя свойства>", "<Имя свойства>"); СоответствиеЗамены.Вставить("<Имя внешнего источника данных>", "<Имя внешнего источника>"); // Слишком общий шаблон замены! // Исправлено в 8.1.12 //СоответствиеЗамены.Вставить("<Имя>", "<Имя константы>"); ЗаменыВнешнихОбъектов = Новый ТаблицаЗначений; ЗаменыВнешнихОбъектов.Колонки.Добавить("Образец"); ЗаменыВнешнихОбъектов.Колонки.Добавить("Замена"); СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить(); СтрокаЗамены.Образец = "ВнешнийОтчетТабличнаяЧасть"; СтрокаЗамены.Замена = "ВнешнийОтчетТабличнаяЧасть.<Имя внешнего отчета>.<Имя табличной части>"; СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить(); СтрокаЗамены.Образец = "ВнешняяОбработкаТабличнаяЧасть"; СтрокаЗамены.Замена = "ВнешняяОбработкаТабличнаяЧасть.<Имя внешней обработки>.<Имя табличной части>"; СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить(); СтрокаЗамены.Образец = "ВнешнийОтчет"; СтрокаЗамены.Замена = "ВнешнийОтчетОбъект.<Имя внешнего отчета>"; СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить(); СтрокаЗамены.Образец = "ВнешняяОбработка"; СтрокаЗамены.Замена = "ВнешняяОбработкаОбъект.<Имя внешней обработки>"; СтрокаЗамены = ЗаменыВнешнихОбъектов.Добавить(); СтрокаЗамены.Образец = "ТочкаМаршрутаБизнесПроцессаСсылка"; СтрокаЗамены.Замена = "ТочкаМаршрутаБизнесПроцессаСсылка.<Имя бизнес-процесса>"; типСтрока = Тип("Строка"); ВычислительРегВыражений = ирОбщий.НовыйВычислительРегВыражений(); ВычислительРегВыражений2 = ирОбщий.НовыйВычислительРегВыражений();