mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-06-12 23:57:25 +02:00
Merge branch 'release/1.12.2'
This commit is contained in:
commit
7cf970d8df
@ -37,7 +37,7 @@
|
|||||||
- `РазборОбычныхФормНаИсходники` - при выполнении данного сценария, файлы обычных форм (`Form.bin`) раскладываются на исходные файлы с помощью инструмента `v8unpack`
|
- `РазборОбычныхФормНаИсходники` - при выполнении данного сценария, файлы обычных форм (`Form.bin`) раскладываются на исходные файлы с помощью инструмента `v8unpack`
|
||||||
- `КорректировкаXMLФорм` - при выполнении данного сценария, файлы описаний форм (`Form.xml`) проверяются на наличие задублировавшихся индексов элементов, которые образуются при объединениях. Если дубли есть, то они исправляются
|
- `КорректировкаXMLФорм` - при выполнении данного сценария, файлы описаний форм (`Form.xml`) проверяются на наличие задублировавшихся индексов элементов, которые образуются при объединениях. Если дубли есть, то они исправляются
|
||||||
- `ДобавлениеПробеловПередКлючевымиСловами` - при выполнении данного сценария, в файлах модулей перед ключевыми словами добавляются отсутсвующие пробелы. На данный момент обрабатывается только ключевое слово `Экспорт`.
|
- `ДобавлениеПробеловПередКлючевымиСловами` - при выполнении данного сценария, в файлах модулей перед ключевыми словами добавляются отсутсвующие пробелы. На данный момент обрабатывается только ключевое слово `Экспорт`.
|
||||||
- `УдалениеЛишнихКонцевыхПробелов` - при выполнении данного сценария, в файлах модулей удаляются лишние пробелы и табы в конце строки после `;`.
|
- `УдалениеЛишнихКонцевыхПробелов` - при выполнении данного сценария, в файлах модулей удаляются лишние пробелы и табы в конце не пустой строки.
|
||||||
- `СортировкаДереваМетаданных` - при выполнении данного сценария, выполняется упорядочивание объектов метаданных в дереве за исключением подсистем, они остаются в том порядке, который задал разработчик.
|
- `СортировкаДереваМетаданных` - при выполнении данного сценария, выполняется упорядочивание объектов метаданных в дереве за исключением подсистем, они остаются в том порядке, который задал разработчик.
|
||||||
- `СинхронизацияОбъектовМетаданныхИФайлов` - анализирует наличие файлов и объектов конфигурации.
|
- `СинхронизацияОбъектовМетаданныхИФайлов` - анализирует наличие файлов и объектов конфигурации.
|
||||||
- `УдалениеДублейМетаданных` - удаляет задублированные объекты метаданных (результат кривого мерджа)
|
- `УдалениеДублейМетаданных` - удаляет задублированные объекты метаданных (результат кривого мерджа)
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global"
|
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||||
Тогда Код возврата команды "oscript" равен 0
|
Тогда Код возврата команды "oscript" равен 0
|
||||||
И Я сообщаю вывод команды "oscript"
|
И Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12"
|
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||||
И Вывод команды "oscript" содержит "Установленные настройки:"
|
И Вывод команды "oscript" содержит "Установленные настройки:"
|
||||||
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
||||||
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
||||||
@ -24,7 +24,7 @@
|
|||||||
И Я сообщаю вывод команды "oscript"
|
И Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит
|
И Вывод команды "oscript" содержит
|
||||||
"""
|
"""
|
||||||
precommit4onec v1.0.12
|
precommit4onec v1.0.12.2
|
||||||
Установленные настройки:
|
Установленные настройки:
|
||||||
ИспользоватьСценарииРепозитория = Нет
|
ИспользоватьСценарииРепозитория = Нет
|
||||||
КаталогЛокальныхСценариев =
|
КаталогЛокальныхСценариев =
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
Сценарий: Получение версии продукта
|
Сценарий: Получение версии продукта
|
||||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os version"
|
Когда Я выполняю команду "oscript" c параметрами "src/main.os version"
|
||||||
Тогда Я сообщаю вывод команды "oscript"
|
Тогда Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит "1.0.12"
|
И Вывод команды "oscript" содержит "1.0.12.2"
|
||||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||||
И Код возврата команды "oscript" равен 0
|
И Код возврата команды "oscript" равен 0
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os help"
|
Когда Я выполняю команду "oscript" c параметрами "src/main.os help"
|
||||||
Тогда Вывод команды "oscript" содержит
|
Тогда Вывод команды "oscript" содержит
|
||||||
"""
|
"""
|
||||||
precommit4onec v1.0.12
|
precommit4onec v1.0.12.2
|
||||||
Возможные команды:
|
Возможные команды:
|
||||||
help - Выводит справку по командам
|
help - Выводит справку по командам
|
||||||
version - Выводит версию приложения
|
version - Выводит версию приложения
|
||||||
@ -36,7 +36,7 @@
|
|||||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os"
|
Когда Я выполняю команду "oscript" c параметрами "src/main.os"
|
||||||
Тогда Вывод команды "oscript" содержит
|
Тогда Вывод команды "oscript" содержит
|
||||||
"""
|
"""
|
||||||
precommit4onec v1.0.12
|
precommit4onec v1.0.12.2
|
||||||
Возможные команды:
|
Возможные команды:
|
||||||
help - Выводит справку по командам
|
help - Выводит справку по командам
|
||||||
version - Выводит версию приложения
|
version - Выводит версию приложения
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install rep1"
|
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||||
Тогда Код возврата команды "oscript" равен 0
|
Тогда Код возврата команды "oscript" равен 0
|
||||||
И Я сообщаю вывод команды "oscript"
|
И Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12"
|
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||||
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
||||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||||
|
|
||||||
@ -26,13 +26,13 @@
|
|||||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./"
|
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||||
Тогда Код возврата команды "oscript" равен 0
|
Тогда Код возврата команды "oscript" равен 0
|
||||||
И Я сообщаю вывод команды "oscript"
|
И Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12"
|
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||||
|
|
||||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||||
Тогда Код возврата команды "oscript" равен 0
|
Тогда Код возврата команды "oscript" равен 0
|
||||||
И Я сообщаю вывод команды "oscript"
|
И Я сообщаю вывод команды "oscript"
|
||||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12"
|
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
call del "*.ospx"
|
call del "*.ospx"
|
||||||
call opm build . -mf ./packagedef -out .
|
call opm build . -mf ./packagedef -out .
|
||||||
call opm install -f precommit4onec-1.0.12.ospx
|
call opm install -f precommit4onec-1.0.12.2.ospx
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
//
|
//
|
||||||
Функция ВерсияПродукта() Экспорт
|
Функция ВерсияПродукта() Экспорт
|
||||||
|
|
||||||
Возврат "1.0.12";
|
Возврат "1.0.12.2";
|
||||||
|
|
||||||
КонецФункции // ВерсияПродукта
|
КонецФункции // ВерсияПродукта
|
||||||
|
|
||||||
|
@ -25,3 +25,43 @@
|
|||||||
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
|
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// ЭтоФайлОписанияКонфигурации
|
||||||
|
// Возвращает истину, если файл является файлом описания конфигурации
|
||||||
|
// Параметры:
|
||||||
|
// Файл - Строка - Полный путь к файлу
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Булево - Признак
|
||||||
|
//
|
||||||
|
Функция ЭтоФайлОписанияКонфигурации(Файл) Экспорт
|
||||||
|
|
||||||
|
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СтрСравнить(Файл.Имя, "Configuration.xml") = 0;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// ЭтоФайлОписанияКонфигурацииEDT
|
||||||
|
// Возвращает истину, если файл является файлом описания конфигурации в формате EDT
|
||||||
|
// Параметры:
|
||||||
|
// Файл - Строка - Полный путь к файлу
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Булево - Признак
|
||||||
|
//
|
||||||
|
Функция ЭтоФайлОписанияКонфигурацииEDT(Файл) Экспорт
|
||||||
|
|
||||||
|
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат СтрСравнить(Файл.Имя, "Configuration.mdo") = 0;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
@ -58,7 +58,7 @@
|
|||||||
Функция ВставитьНужныеПробелы(Знач ИмяФайла)
|
Функция ВставитьНужныеПробелы(Знач ИмяФайла)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ИмяФайла, "utf-8");
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
СодержимоеФайла = Текст.Прочитать();
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
|
||||||
@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1 $2$3$4");
|
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1 $2$3$4");
|
||||||
|
|
||||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС);
|
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM,,, Символы.ПС);
|
||||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||||
ЗаписьТекста.Закрыть();
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
Процедура ПроверитьНаОтсутствиеПерейти(ПутьКФайлуМодуля)
|
Процедура ПроверитьНаОтсутствиеПерейти(ПутьКФайлуМодуля)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ПутьКФайлуМодуля, "utf-8");
|
Текст.Открыть(ПутьКФайлуМодуля, КодировкаТекста.UTF8NoBOM);
|
||||||
|
|
||||||
ТекстМодуля = Текст.Прочитать();
|
ТекстМодуля = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла)
|
Функция ОбновитьИндексыЭлементовВФорме(Знач ИмяФайла)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ИмяФайла, "utf-8");
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
СодержимоеФайла = Текст.Прочитать();
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
|
||||||
@ -129,7 +129,7 @@
|
|||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС);
|
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM,,, Символы.ПС);
|
||||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||||
ЗаписьТекста.Закрыть();
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
Процедура ПроверитьНаКорректностьОбластей(ПутьКФайлуМодуля)
|
Процедура ПроверитьНаКорректностьОбластей(ПутьКФайлуМодуля)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ПутьКФайлуМодуля, "utf-8");
|
Текст.Открыть(ПутьКФайлуМодуля, КодировкаТекста.UTF8NoBOM);
|
||||||
|
|
||||||
ТекстМодуля = Текст.Прочитать();
|
ТекстМодуля = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
Лог = ДополнительныеПараметры.Лог;
|
Лог = ДополнительныеПараметры.Лог;
|
||||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||||
Если АнализируемыйФайл.Существует() И ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
@ -54,18 +54,6 @@
|
|||||||
|
|
||||||
КонецФункции // ОбработатьФайл()
|
КонецФункции // ОбработатьФайл()
|
||||||
|
|
||||||
Функция ЭтоФайлОписанияКонфигурации(Файл)
|
|
||||||
|
|
||||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
|
||||||
|
|
||||||
Возврат Ложь;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат СтрСравнить(Файл.Имя, "Configuration.xml") = 0;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Функция СинхронизироватьМетаданныеиФайлы(Знач ИмяФайла, УдаленныеФайлы)
|
Функция СинхронизироватьМетаданныеиФайлы(Знач ИмяФайла, УдаленныеФайлы)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
|
@ -36,7 +36,9 @@
|
|||||||
|
|
||||||
Лог = ДополнительныеПараметры.Лог;
|
Лог = ДополнительныеПараметры.Лог;
|
||||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||||
Если АнализируемыйФайл.Существует() И ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
Если АнализируемыйФайл.Существует() Тогда
|
||||||
|
|
||||||
|
Если ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
@ -48,24 +50,26 @@
|
|||||||
|
|
||||||
Возврат Истина;
|
Возврат Истина;
|
||||||
|
|
||||||
|
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
|
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
|
Если ОтсортироватьДеревоМетаданныхEDT(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||||
|
|
||||||
|
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ЛОЖЬ;
|
Возврат ЛОЖЬ;
|
||||||
|
|
||||||
КонецФункции // ОбработатьФайл()
|
КонецФункции // ОбработатьФайл()
|
||||||
|
|
||||||
Функция ЭтоФайлОписанияКонфигурации(Файл)
|
|
||||||
|
|
||||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
|
||||||
|
|
||||||
Возврат Ложь;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат СтрСравнить(Файл.Имя, "Configuration.xml") = 0;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Функция ОтсортироватьДеревоМетаданных(Знач ИмяФайла)
|
Функция ОтсортироватьДеревоМетаданных(Знач ИмяФайла)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
@ -142,3 +146,80 @@
|
|||||||
Возврат Истина;
|
Возврат Истина;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ОтсортироватьДеревоМетаданныхEDT(Знач ИмяФайла)
|
||||||
|
|
||||||
|
Текст = Новый ЧтениеТекста();
|
||||||
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
|
Текст.Закрыть();
|
||||||
|
|
||||||
|
Регексп = Новый РегулярноеВыражение("(<\/languages>\s*?)([\w\W]*)(<\/mdclass\:Configuration>)");
|
||||||
|
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||||
|
Регексп.Многострочный = ИСТИНА;
|
||||||
|
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||||
|
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[2].Значение;
|
||||||
|
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||||
|
РегекспМетаданные.ИгнорироватьРегистр = ИСТИНА;
|
||||||
|
РегекспМетаданные.Многострочный = Истина;
|
||||||
|
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||||
|
|
||||||
|
ОбъектыМетаданных = Новый СписокЗначений;
|
||||||
|
ПоследнийТип = "";
|
||||||
|
ОбъектыТипа = Новый СписокЗначений;
|
||||||
|
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
|
||||||
|
|
||||||
|
Если ПоследнийТип <> ОбъектМетаданных.Группы[1].Значение Тогда
|
||||||
|
|
||||||
|
Если ПоследнийТип <> "" Тогда
|
||||||
|
|
||||||
|
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||||
|
ОбъектыТипа = Новый СписокЗначений;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПоследнийТип = ОбъектМетаданных.Группы[1].Значение;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ОбъектыТипа.Добавить(ОбъектМетаданных.Группы[0].Значение, ОбъектМетаданных.Группы[2].Значение);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ОбъектыМетаданных.Добавить(ОбъектыТипа);
|
||||||
|
|
||||||
|
СтрокаЗамены = "";
|
||||||
|
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
|
||||||
|
|
||||||
|
Если НЕ СтрЗаканчиваетсяНа(ОбъектМетаданных.Значение[0].Значение, "subsystems>") Тогда
|
||||||
|
|
||||||
|
ОбъектМетаданных.Значение.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СтрокаЗамены = СтрокаЗамены + ?(ПустаяСтрока(СтрокаЗамены), "", Символы.ПС)
|
||||||
|
+ СтрСоединить(ОбъектМетаданных.Значение.ВыгрузитьЗначения(), Символы.ПС);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СокрЛП(СтрокаЗамены) + Символы.ПС + "$3");
|
||||||
|
ЗаписьТекста = Новый ЗаписьТекста;
|
||||||
|
ЗаписьТекста.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
|
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||||
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
@ -36,11 +36,25 @@
|
|||||||
|
|
||||||
Лог = ДополнительныеПараметры.Лог;
|
Лог = ДополнительныеПараметры.Лог;
|
||||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||||
Если АнализируемыйФайл.Существует() И ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
Если АнализируемыйФайл.Существует() Тогда
|
||||||
|
|
||||||
|
Если ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
Если ОтсортироватьДеревоМетаданных(АнализируемыйФайл.ПолноеИмя) Тогда
|
Если УдалитьДублиВМетаданных(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||||
|
|
||||||
|
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл) Тогда
|
||||||
|
|
||||||
|
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||||
|
|
||||||
|
Если УдалитьДублиВМетаданныхEDT(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||||
|
|
||||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||||
|
|
||||||
@ -50,23 +64,13 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ЛОЖЬ;
|
Возврат ЛОЖЬ;
|
||||||
|
|
||||||
КонецФункции // ОбработатьФайл()
|
КонецФункции // ОбработатьФайл()
|
||||||
|
|
||||||
Функция ЭтоФайлОписанияКонфигурации(Файл)
|
Функция УдалитьДублиВМетаданных(Знач ИмяФайла)
|
||||||
|
|
||||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
|
||||||
|
|
||||||
Возврат Ложь;
|
|
||||||
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат СтрСравнить(Файл.Имя, "Configuration.xml") = 0;
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
Функция ОтсортироватьДеревоМетаданных(Знач ИмяФайла)
|
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ИмяФайла, "utf-8");
|
Текст.Открыть(ИмяФайла, "utf-8");
|
||||||
@ -143,3 +147,80 @@
|
|||||||
Возврат Истина;
|
Возврат Истина;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция УдалитьДублиВМетаданныхEDT(Знач ИмяФайла)
|
||||||
|
Текст = Новый ЧтениеТекста();
|
||||||
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
|
Текст.Закрыть();
|
||||||
|
|
||||||
|
Регексп = Новый РегулярноеВыражение("(<\/languages>\s*?)([\w\W]*)(<\/mdclass\:Configuration>)");
|
||||||
|
Регексп.ИгнорироватьРегистр = Истина;
|
||||||
|
Регексп.Многострочный = Истина;
|
||||||
|
ПодчиненныеМетаданные = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||||
|
Если ПодчиненныеМетаданные.Количество() = 0 Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИсходнаяСтрока = ПодчиненныеМетаданные[0].Группы[2].Значение;
|
||||||
|
РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([a-zA-Z]+\.[а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>");
|
||||||
|
РегекспМетаданные.ИгнорироватьРегистр = Истина;
|
||||||
|
РегекспМетаданные.Многострочный = Истина;
|
||||||
|
ОбъектыМетаданныхСтроки = РегекспМетаданные.НайтиСовпадения(ИсходнаяСтрока);
|
||||||
|
|
||||||
|
ОбъектыМетаданных = Новый ТаблицаЗначений;
|
||||||
|
ОбъектыМетаданных.Колонки.Добавить("ТипМетаданных");
|
||||||
|
ОбъектыМетаданных.Колонки.Добавить("ИмяМетаданных");
|
||||||
|
ОбъектыМетаданных.Колонки.Добавить("СтрокаФайла");
|
||||||
|
ОбъектыМетаданных.Колонки.Добавить("Количество");
|
||||||
|
Для Каждого ОбъектМетаданных Из ОбъектыМетаданныхСтроки Цикл
|
||||||
|
|
||||||
|
НоваяЗапись = ОбъектыМетаданных.Добавить();
|
||||||
|
НоваяЗапись.ТипМетаданных = ОбъектМетаданных.Группы[1].Значение;
|
||||||
|
НоваяЗапись.ИмяМетаданных = ОбъектМетаданных.Группы[2].Значение;
|
||||||
|
НоваяЗапись.СтрокаФайла = ОбъектМетаданных.Группы[0].Значение;
|
||||||
|
НоваяЗапись.Количество = 1;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ОбъектыМетаданных.Свернуть("ТипМетаданных, ИмяМетаданных, СтрокаФайла", "Количество");
|
||||||
|
ОбъектыМетаданных.Сортировать("Количество УБЫВ");
|
||||||
|
|
||||||
|
СтрокаЗамены = ИсходнаяСтрока;
|
||||||
|
Пока ОбъектыМетаданных.Количество() Цикл
|
||||||
|
|
||||||
|
Если ОбъектыМетаданных[0].Количество = 1 Тогда
|
||||||
|
|
||||||
|
Прервать;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПозНачало = СтрНайти(СтрокаЗамены, ОбъектыМетаданных[0].СтрокаФайла);
|
||||||
|
СтрокаЗамены = Лев(СтрокаЗамены, ПозНачало - 1) + Сред(СтрокаЗамены, ПозНачало + СтрДлина(ОбъектыМетаданных[0].СтрокаФайла) + 1);
|
||||||
|
|
||||||
|
ОбъектыМетаданных[0].Количество = ОбъектыМетаданных[0].Количество - 1;
|
||||||
|
Если ОбъектыМетаданных[0].Количество = 1 Тогда
|
||||||
|
|
||||||
|
ОбъектыМетаданных.Удалить(0);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если СтрСравнить(ИсходнаяСтрока, СтрокаЗамены) = 0 Тогда
|
||||||
|
|
||||||
|
Возврат Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СокрЛП(СтрокаЗамены) + Символы.ПС + "$3");
|
||||||
|
ЗаписьТекста = Новый ЗаписьТекста;
|
||||||
|
ЗаписьТекста.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
|
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||||
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
Возврат Истина;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
Функция ИсправитьКонцевыеПробелы(Знач ИмяФайла)
|
Функция ИсправитьКонцевыеПробелы(Знач ИмяФайла)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ИмяФайла, "utf-8");
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
СодержимоеФайла = Текст.Прочитать();
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
|
||||||
@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Регексп = Новый РегулярноеВыражение("^([^\n\/]*;)([\t ]+?)$");
|
Регексп = Новый РегулярноеВыражение("^([^\n\/]*\S)([\t ]+?)$");
|
||||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||||
Регексп.Многострочный = ИСТИНА;
|
Регексп.Многострочный = ИСТИНА;
|
||||||
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
|
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||||
@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1");
|
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1");
|
||||||
|
|
||||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС);
|
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM,,, Символы.ПС);
|
||||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||||
ЗаписьТекста.Закрыть();
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
Функция УдалитьЛишниеПустыеСтроки(Знач ИмяФайла)
|
Функция УдалитьЛишниеПустыеСтроки(Знач ИмяФайла)
|
||||||
|
|
||||||
Текст = Новый ЧтениеТекста();
|
Текст = Новый ЧтениеТекста();
|
||||||
Текст.Открыть(ИмяФайла, "utf-8");
|
Текст.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||||
СодержимоеФайла = Текст.Прочитать();
|
СодержимоеФайла = Текст.Прочитать();
|
||||||
Текст.Закрыть();
|
Текст.Закрыть();
|
||||||
|
|
||||||
@ -73,7 +73,7 @@
|
|||||||
НовоеСодержимоеФайла = РегекспОчистка.Заменить(СодержимоеФайла, Символы.ПС);
|
НовоеСодержимоеФайла = РегекспОчистка.Заменить(СодержимоеФайла, Символы.ПС);
|
||||||
Если СтрСравнить(СодержимоеФайла, НовоеСодержимоеФайла) <> 0 Тогда
|
Если СтрСравнить(СодержимоеФайла, НовоеСодержимоеФайла) <> 0 Тогда
|
||||||
|
|
||||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, ,,, Символы.ПС);
|
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM,,, Символы.ПС);
|
||||||
ЗаписьТекста.Записать(НовоеСодержимоеФайла);
|
ЗаписьТекста.Записать(НовоеСодержимоеФайла);
|
||||||
ЗаписьТекста.Закрыть();
|
ЗаписьТекста.Закрыть();
|
||||||
Возврат Истина;
|
Возврат Истина;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user