mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-24 08:32:25 +02:00
Merge branch 'feature/ONECICD-6' into 'develop'
Feature/onecicd 6 See merge request orais/precommit1C-fork-bia!5
This commit is contained in:
commit
b31cd7f930
@ -45,6 +45,7 @@
|
||||
- `УдалениеЛишнихПустыхСтрок` - выполняет очистку модуля от лишних пустых строк (лишними считаются 2 и более идущих подряд пустых строках)
|
||||
- `ПроверкаКорректностиОбластей` - выполняет проверку на корректность скобок областей: `на парность` и `перед окончание области должно быть ее определение`
|
||||
- `ПроверкаДублейПроцедурИФункций` - выполняет поиск одинаковых названий процедур и функций в модуле.
|
||||
- `ОтключениеПолнотекстовогоПоиска` - По умолчанию отключает полнотекстовый поиск в файлах описания метаданных. Имеет настройку для исключения файлов из обработки. Для исключения необходимо указать относительный путь в репозитории до файла описания метаданного. Можно выключать из обработки отдельные реквизиты метаданного, для этого надо задать массив реквизитов в конфигурационном файле.
|
||||
|
||||
## Изменение настроек
|
||||
|
||||
|
@ -88,3 +88,44 @@
|
||||
И я создаю файл "РабочийКаталог\src\epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\Module.bsl" с текстом "текст178"
|
||||
И я выполняю команду "git" с параметрами "commit -m addFile"
|
||||
Тогда Вывод команды "git" не содержит "Module.bsl"
|
||||
|
||||
Сценарий: По умолчанию прекоммит убирает полнотекстовый поиск в исходниках конфигуратора
|
||||
Когда Я копирую файл "tests\fixtures\Документ.xml" в каталог репозитория "РабочийКаталог"
|
||||
И Файл "Документ.xml" в рабочем каталоге содержит "FullTextSearch>Use<"
|
||||
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "demo коммит"
|
||||
Тогда Файл "Документ.xml" в рабочем каталоге не содержит "FullTextSearch>Use<"
|
||||
|
||||
Сценарий: По умолчанию прекоммит убирает полнотекстовый поиск в исходниках EDT
|
||||
Когда Я копирую файл "tests\fixtures\Документ.mdo" в каталог репозитория "РабочийКаталог"
|
||||
И Файл "Документ.mdo" в рабочем каталоге содержит "fullTextSearch>Use<"
|
||||
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "demo коммит"
|
||||
Тогда Файл "Документ.mdo" в рабочем каталоге не содержит "fullTextSearch>Use<"
|
||||
|
||||
Сценарий: Отключение полнотекстового поиска игнорирует файл в исключении
|
||||
Когда Я создаю каталог "src" в рабочем каталоге
|
||||
И Я копирую файл "Документ.mdo" из каталога "tests\fixtures" проекта в подкаталог "src" рабочего каталога
|
||||
И Я копирую файл "Документ.xml" из каталога "tests\fixtures" проекта в подкаталог "src" рабочего каталога
|
||||
И Файл "src\Документ.mdo" в рабочем каталоге содержит "fullTextSearch>Use<"
|
||||
И Файл "src\Документ.xml" в рабочем каталоге содержит "FullTextSearch>Use<"
|
||||
И я создаю файл "РабочийКаталог\v8config.json" с текстом
|
||||
"""
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"ИспользоватьСценарииРепозитория": false,
|
||||
"КаталогЛокальныхСценариев": "",
|
||||
"ГлобальныеСценарии": [
|
||||
"ОтключениеПолнотекстовогоПоиска.os"
|
||||
],
|
||||
"НастройкиСценариев": {
|
||||
"ОтключениеПолнотекстовогоПоиска": {
|
||||
"МетаданныеДляИсключения": {
|
||||
"src\\Документ.mdo": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "demo коммит"
|
||||
Тогда Файл "\src\Документ.mdo" в рабочем каталоге содержит "fullTextSearch>Use<"
|
||||
И Файл "\src\Документ.xml" в рабочем каталоге не содержит "FullTextSearch>Use<"
|
@ -28,5 +28,6 @@
|
||||
Установленные настройки:
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,КорректировкаXMLФорм.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиОбластей.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
|
||||
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,КорректировкаXMLФорм.os,ОтключениеПолнотекстовогоПоиска.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиОбластей.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
|
||||
"""
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
Если НЕ ПараметрыКоманды["-global"]
|
||||
И НЕ ЗначениеЗаполнено(ПараметрыКоманды["-rep-path"]) Тогда
|
||||
|
||||
Лог.Ошибка("Для конфгурирования необходимо передать флаг -global или указать каталог репозитория параметром -rep-path");
|
||||
Лог.Ошибка("Для конфигурирования необходимо передать флаг -global или указать каталог репозитория параметром -rep-path");
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
@ -124,7 +124,7 @@
|
||||
|
||||
ГлобальныеСценарии = ПолучитьИменаСценариев(ТекущийКаталогСценариев);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
НастройкиСценариев = СформироватьНастройкиСценариев();
|
||||
НастройкиСценариев = СформироватьНастройкиСценариев(ГлобальныеСценарии, ТекущийКаталогСценариев);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\НастройкиСценариев", НастройкиСценариев);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -162,17 +162,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьНастройкиСценариев()
|
||||
Функция СформироватьНастройкиСценариев(МассивСценариев, КаталогСценариев)
|
||||
|
||||
// todo: Надо будет доработать таким образом, чтобы настройки считывались из сценария
|
||||
НастройкиСценариев = Новый Соответствие;
|
||||
Рефлектор = Новый Рефлектор;
|
||||
|
||||
// для сценария РазборОтчетовОбработокРасширений
|
||||
НастройкиСценария = Новый Соответствие;
|
||||
НастройкиСценария.Вставить("ИспользоватьНастройкиПоУмолчанию", Истина);
|
||||
НастройкиСценария.Вставить("ВерсияПлатформы", "");
|
||||
Для Каждого Сценарий Из МассивСценариев Цикл
|
||||
|
||||
ОбъектСценария = ЗагрузитьСценарий(ОбъединитьПути(КаталогСценариев, Сценарий));
|
||||
|
||||
Если Рефлектор.МетодСуществует(ОбъектСценария, "ПолучитьСтандартныеНастройкиСценария") Тогда
|
||||
|
||||
СтруктураНастроек = Рефлектор.ВызватьМетод(ОбъектСценария, "ПолучитьСтандартныеНастройкиСценария");
|
||||
НастройкиСценариев.Вставить(СтруктураНастроек.ИмяСценария, СтруктураНастроек.Настройка);
|
||||
|
||||
НастройкиСценариев = Новый Соответствие;
|
||||
НастройкиСценариев.Вставить("РазборОтчетовОбработокРасширений", НастройкиСценария);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат НастройкиСценариев;
|
||||
|
||||
@ -212,8 +218,8 @@
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\НастройкиСценариев", СформироватьНастройкиСценариев());
|
||||
НастройкиСценариев = СформироватьНастройкиСценариев(ГлобальныеСценарии, КаталогГлобальныхСценариев);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\НастройкиСценариев", );
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем ИнициализацияВыпонена; // содержит признак инициализации репозитория
|
||||
Перем ИнициализацияВыполнена; // содержит признак инициализации репозитория
|
||||
Перем НовыйКонфиг; // содержит признак нового конфига
|
||||
Перем Конфигурация; // описание конфигурации
|
||||
Перем АдресКонфигурационногоФайла; // адрес нахождения конфигурационного файла
|
||||
@ -34,31 +34,31 @@
|
||||
КонецФункции // ЭтоНовый()
|
||||
|
||||
// ГлобальныеНастройки
|
||||
// Возврает набор глобальных настроек
|
||||
// Возвращает набор глобальных настроек
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - Набор глобальных настроек при их наличии, если настроек нет то будет возвращено пустое соответствие
|
||||
//
|
||||
Функция ГлобальныеНастройки() Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
|
||||
Возврат НастройкиПриложения("GLOBAL");
|
||||
|
||||
КонецФункции // ГлобальныеНастройки() Экспорт
|
||||
|
||||
// НастройкиПриложения
|
||||
// Возврает набор настроек для приложения
|
||||
// Возвращает набор настроек для приложения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПриложения - Строка - Имя приложения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - Набор гнастроек при их наличии, если настроек нет то будет возвращено пустое соответствие
|
||||
// Соответствие - Набор настроек при их наличии, если настроек нет то будет возвращено пустое соответствие
|
||||
//
|
||||
Функция НастройкиПриложения(ИмяПриложения) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
ВызватьИсключение "Не указано имя приложения";
|
||||
@ -89,7 +89,7 @@
|
||||
//
|
||||
Функция Настройка(ИмяНастройки)Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
|
||||
РазложенноеИмяНастройки = РазобратьИмяНастройки(ИмяНастройки);
|
||||
ИскомоеПриложение = НастройкиПриложения(РазложенноеИмяНастройки.ИмяПриложения);
|
||||
@ -109,7 +109,7 @@
|
||||
//
|
||||
Процедура ЗаписатьНастройку(ИмяНастройки, Значение) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
|
||||
РазложенноеИмяНастройки = РазобратьИмяНастройки(ИмяНастройки);
|
||||
ИскомоеПриложение = НастройкиПриложения(РазложенноеИмяНастройки.ИмяПриложения);
|
||||
@ -133,7 +133,7 @@
|
||||
//
|
||||
Процедура ЗаписатьНастройкиПриложения(ИмяПриложения, Значение) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
//
|
||||
Процедура УдалитьНастройкиПриложения(ИмяПриложения) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
ПроверкаИнициализации();
|
||||
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
@ -179,15 +179,15 @@
|
||||
// Служебный функционал
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПроверкаИницализации()
|
||||
Функция ПроверкаИнициализации()
|
||||
|
||||
Если Не ИнициализацияВыпонена Тогда
|
||||
Если Не ИнициализацияВыполнена Тогда
|
||||
|
||||
ВызватьИсключение "Необходимо выполнить инициализацию"
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции // ПроверкаИницализации()
|
||||
КонецФункции // ПроверкаИнициализации()
|
||||
|
||||
Функция РазобратьИмяНастройки(Знач ИмяНастройки)
|
||||
|
||||
@ -233,7 +233,7 @@
|
||||
//
|
||||
Процедура ПриСозданииОбъекта(КаталогРепозитория, ОбновлятьКонф = ЛОЖЬ)
|
||||
|
||||
ИнициализацияВыпонена = ЛОЖЬ;
|
||||
ИнициализацияВыполнена = ЛОЖЬ;
|
||||
НовыйКонфиг = ЛОЖЬ;
|
||||
Конфигурация = Неопределено;
|
||||
АдресКонфигурационногоФайла = "";
|
||||
@ -264,6 +264,6 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИнициализацияВыпонена = ИСТИНА;
|
||||
ИнициализацияВыполнена = ИСТИНА;
|
||||
|
||||
КонецПроцедуры // ПриСозданииОбъекта()
|
@ -9,7 +9,7 @@
|
||||
// ЭтоФайлИсходников
|
||||
// Возвращает истину, если файл является файлом исходных кодов
|
||||
// Параметры:
|
||||
// Файл - Строка - Полный путь к файлу
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
@ -29,7 +29,7 @@
|
||||
// ЭтоФайлОписанияКонфигурации
|
||||
// Возвращает истину, если файл является файлом описания конфигурации
|
||||
// Параметры:
|
||||
// Файл - Строка - Полный путь к файлу
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
@ -49,7 +49,7 @@
|
||||
// ЭтоФайлОписанияКонфигурацииEDT
|
||||
// Возвращает истину, если файл является файлом описания конфигурации в формате EDT
|
||||
// Параметры:
|
||||
// Файл - Строка - Полный путь к файлу
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
@ -66,10 +66,102 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ЭтоФайлОписанияКонфигурации
|
||||
// ЭтоФайлОбычнойФормы
|
||||
// Возвращает истину, если файл является файлом обычной формы
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОбычнойФормы(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Имя, "Form.bin") = 0;
|
||||
|
||||
КонецФункции // ЭтоФайлОбычнойФормы
|
||||
|
||||
// ЭтоФайлОписанияМетаданных
|
||||
// Возвращает истину, если файл является описанием метаданных, исключая файлы описания конфигурации.
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОписанияМетаданных(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЭтоФайлОписанияМетаданныхКонфигуратора(Файл) ИЛИ ЭтоФайлОписанияМетаданныхEDT(Файл);
|
||||
|
||||
КонецФункции // ЭтоФайлОписанияМетаданных
|
||||
|
||||
// ЭтоФайлОписанияМетаданныхКонфигуратора
|
||||
// Возвращает истину, если файл является описанием метаданных конфигуратора, исключая Configuration.xml
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОписанияМетаданныхКонфигуратора(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоФайлОписанияКонфигурации(Файл) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".xml") = 0;
|
||||
|
||||
КонецФункции // ЭтоФайлОписанияМетаданныхКонфигуратора
|
||||
|
||||
// ЭтоФайлОписанияМетаданныхEDT
|
||||
// Возвращает истину, если файл является описанием метаданных конфигуратора, исключая Configuration.mdo
|
||||
// Параметры:
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
//
|
||||
Функция ЭтоФайлОписанияМетаданныхEDT(Файл) Экспорт
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоФайлОписанияКонфигурацииEDT(Файл) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".mdo") = 0;
|
||||
|
||||
КонецФункции // ЭтоФайлОписанияМетаданныхEDT
|
||||
|
||||
// ЭтоФайлОписанияФормы
|
||||
// Возвращает истину, если файл является файлом описания формы
|
||||
// Параметры:
|
||||
// Файл - Строка - Полный путь к файлу
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
@ -86,10 +178,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ЭтоФайлОписанияКонфигурации
|
||||
// ЭтоФайлОписанияФормыEDT
|
||||
// Возвращает истину, если файл является файлом описания формы в формате EDT
|
||||
// Параметры:
|
||||
// Файл - Строка - Полный путь к файлу
|
||||
// Файл - Файл - Полный путь к файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак
|
||||
@ -104,4 +196,4 @@
|
||||
|
||||
Возврат СтрСравнить(Файл.Имя, "Form.form") = 0;
|
||||
|
||||
КонецФункции
|
||||
КонецФункции
|
@ -27,7 +27,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -28,7 +28,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
274
src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os
Normal file
274
src/СценарииОбработки/ОтключениеПолнотекстовогоПоиска.os
Normal file
@ -0,0 +1,274 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов <ОтключениеПолнотекстовогоПоиска>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем ЗначениеПоиска;
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "ОтключениеПолнотекстовогоПоиска";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ПолучитьСтандартныеНастройкиСценария
|
||||
// Возвращает структуру настроек сценария
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Структура с настройками сценария
|
||||
// * ИмяСценария - Строка - Имя, с которым сохранятся настройки
|
||||
// * Настройка - Соответствие - настройки
|
||||
//
|
||||
Функция ПолучитьСтандартныеНастройкиСценария() Экспорт
|
||||
|
||||
НастройкиСценария = Новый Соответствие;
|
||||
ПутьИРеквизиты = Новый Соответствие;
|
||||
МассивРеквизитов = Новый Массив;
|
||||
МассивРеквизитов.Добавить("Номер");
|
||||
МассивРеквизитов.Добавить("ТабличнаяЧасть1.Реквизит");
|
||||
|
||||
ПутьИРеквизиты.Вставить("src\_example.xml", МассивРеквизитов);
|
||||
ПутьИРеквизиты.Вставить("src\_example2.xml", Новый Массив);
|
||||
|
||||
НастройкиСценария.Вставить("МетаданныеДляИсключения", ПутьИРеквизиты);
|
||||
|
||||
Возврат Новый Структура("ИмяСценария, Настройка", ИмяСценария(), НастройкиСценария);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлОписанияМетаданных(АнализируемыйФайл) Тогда
|
||||
|
||||
МетаданныеДляИсключения = НастройкиСценария.Получить("МетаданныеДляИсключения");
|
||||
|
||||
ОтносительныйПуть = СтрЗаменить(АнализируемыйФайл.ПолноеИмя, ДополнительныеПараметры.КаталогРепозитория, "");
|
||||
МассивРеквизитов = МетаданныеДляИсключения.Получить(ОтносительныйПуть);
|
||||
|
||||
Если МассивРеквизитов = Неопределено ИЛИ ЗначениеЗаполнено(МассивРеквизитов) Тогда
|
||||
//Неопределено - нет файла в исключении, массив не пустой - исключение только по реквизитам
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
ЭтоEDT = ТипыФайлов.ЭтоФайлОписанияМетаданныхEDT(АнализируемыйФайл);
|
||||
|
||||
Если ОтключитьПолнотекстовыйПоиск(АнализируемыйФайл.ПолноеИмя, МассивРеквизитов, ЭтоEDT) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ОтключитьПолнотекстовыйПоиск(Знач ИмяФайла, МассивРеквизитов, ЭтоEDT)
|
||||
|
||||
ТекстФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
СодержимоеФайла = ТекстФайла;
|
||||
|
||||
Если Не ЗначениеЗаполнено(СодержимоеФайла) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(МассивРеквизитов) Тогда
|
||||
|
||||
// получение текста файла до табличных частей
|
||||
Регексп = Новый РегулярноеВыражение("(<\?xml version[\w\W]+?)(<TabularSection|<\/MetaDataObject>|<\/mdclass:Document>)([\w\W]+)?");
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
Совпадения = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Если Совпадения.Количество() = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СекцияДоТаблиц = Совпадения[0].Группы[1].Значение;
|
||||
ЗакрывающаяСекция = Совпадения[0].Группы[2].Значение;
|
||||
СекцияТаблиц = Совпадения[0].Группы[3].Значение;
|
||||
|
||||
СекцияДоТаблиц = ОбработатьСтандартныеАтрибуты(СекцияДоТаблиц, МассивРеквизитов);
|
||||
СекцияДоТаблиц = ОбработатьРеквизиты(СекцияДоТаблиц, МассивРеквизитов);
|
||||
|
||||
ЕстьСекцияТаблиц = СекцияТаблиц <> "";
|
||||
|
||||
Если ЕстьСекцияТаблиц Тогда
|
||||
|
||||
ОбработатьТабличныеЧасти(СекцияТаблиц, МассивРеквизитов, ЭтоEDT);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = СекцияДоТаблиц + ?(ЕстьСекцияТаблиц, ЗакрывающаяСекция + СекцияТаблиц, ЗакрывающаяСекция);
|
||||
|
||||
Иначе // Обработается весь файл целиком
|
||||
|
||||
СодержимоеФайла = ЗаменитьПоиск(СодержимоеФайла);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрСравнить(ТекстФайла, СодержимоеФайла) = 0 Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗаменитьПоиск(СодержимоеФайла, Знач ПоискРеквизита = "")
|
||||
|
||||
ПолнотекстовыйПоиск = "(<(?:xr\:)?fullTextSearch>)(Use)(<\/(?:xr\:)?fullTextSearch>)";
|
||||
Выражение = ПоискРеквизита + ПолнотекстовыйПоиск;
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(Выражение);
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Если ГруппыИндексов.Количество() <> 0 Тогда
|
||||
|
||||
Если ЗначениеЗаполнено(ПоискРеквизита) Тогда
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1$2DontUse$4");
|
||||
|
||||
Иначе
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1DontUse$3");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СодержимоеФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьСтандартныеАтрибуты(СодержимоеФайла, Исключения)
|
||||
|
||||
СтандартныеАтрибуты = "Attribute name=""([а-яa-zA-ZА-Я0-9_]+)"">[\w\W]+?((<xr:FullTextSearch>(Use)<\/xr:FullTextSearch>)|<\/xr:StandardAttribute>)";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(СтандартныеАтрибуты);
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
КоллекцияСовпадений = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Для Каждого Совпадение Из КоллекцияСовпадений Цикл
|
||||
|
||||
Если Совпадение.Группы[4].Значение = ЗначениеПоиска.Use И Исключения.Найти(Совпадение.Группы[1].Значение) = Неопределено Тогда
|
||||
|
||||
ПоискРеквизита = СтрШаблон("(Attribute name=""%1"">[\w\W]+?)", Совпадение.Группы[1].Значение);
|
||||
СодержимоеФайла = ЗаменитьПоиск(СодержимоеФайла, ПоискРеквизита);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СодержимоеФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьРеквизиты(СодержимоеФайла, Исключения)
|
||||
|
||||
ПоискРеквизиты = "<Name>([а-яa-zA-ZА-Я0-9_]+)<\/Name>[\w\W]+?(<FullTextSearch>(Use)<\/FullTextSearch>)|<\/Properties>|<\/attributes>";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПоискРеквизиты);
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
КоллекцияСовпадений = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
|
||||
Для Каждого Совпадение Из КоллекцияСовпадений Цикл
|
||||
|
||||
Если Совпадение.Группы[3].Значение = ЗначениеПоиска.Use И Исключения.Найти(Совпадение.Группы[1].Значение) = Неопределено Тогда
|
||||
|
||||
ПоискРеквизита = СтрШаблон("(<Name>%1<\/Name>[\w\W]+?)", Совпадение.Группы[1].Значение);
|
||||
СодержимоеФайла = ЗаменитьПоиск(СодержимоеФайла, ПоискРеквизита);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СодержимоеФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьТабличныеЧасти(ТекстФайла, Исключения, ЭтоEDT)
|
||||
|
||||
Если ЭтоEDT Тогда
|
||||
|
||||
Шаблон = "<\/producedTypes>\s+<name>([а-яa-zA-ZА-Я0-9_]+)<\/name>|(<Name>)([а-яa-zA-ZА-Я0-9_]+)<\/Name>|(<FullTextSearch>)(Use)<\/FullTextSearch>";
|
||||
ШаблонЗамены = "(<\/producedTypes>\s+<name>%1<\/name>[\w\W]+?<Name>%2<\/Name>[\w\W]+?)";
|
||||
|
||||
Иначе
|
||||
|
||||
Шаблон = "TabularSection\.[\w\W]+?\.([\w\W]+?)""|(<Name>)([а-яa-zA-ZА-Я0-9_]+)<\/Name>|(<FullTextSearch>)(Use)<\/FullTextSearch>";
|
||||
ШаблонЗамены = "(TabularSection\.[\w\W]+?\.%1""[\w\W]+?<Name>%2<\/Name>[\w\W]+?)";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(Шаблон);
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
Регексп.Многострочный = Истина;
|
||||
КоллекцияСовпадений = Регексп.НайтиСовпадения(ТекстФайла);
|
||||
|
||||
Таблица = "";
|
||||
Реквизит = "";
|
||||
|
||||
Для Каждого Совпадение Из КоллекцияСовпадений Цикл
|
||||
|
||||
Таблица = ?(ЗначениеЗаполнено(Совпадение.Группы[1].Значение), Совпадение.Группы[1].Значение, Таблица);
|
||||
Реквизит = ?(ЗначениеЗаполнено(Совпадение.Группы[3].Значение), Совпадение.Группы[3].Значение, Реквизит);
|
||||
ИспользованиеПоиска = Совпадение.Группы[4].Значение;
|
||||
|
||||
Если ЗначениеЗаполнено(ИспользованиеПоиска) И Исключения.Найти(Таблица + "." + Реквизит) = Неопределено Тогда
|
||||
|
||||
ПолнотекстовыйПоиск = СтрШаблон(ШаблонЗамены, Таблица, Реквизит);
|
||||
|
||||
ТекстФайла = ЗаменитьПоиск(ТекстФайла, ПолнотекстовыйПоиск)
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ТекстФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
ЗначениеПоиска = Новый Структура ("Use, DontUse", "Use", "DontUse");
|
@ -27,7 +27,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -67,7 +67,7 @@
|
||||
|
||||
ТекстОшибки = "";
|
||||
|
||||
ШаблонПоиска = Новый РегулярноеВыражение("^\s*(?:Процедура|Функция|procedure|function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\(\)");
|
||||
ШаблонПоиска = Новый РегулярноеВыражение("^\s*(?:Процедура|Функция|procedure|function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\(");
|
||||
ШаблонПоиска.Многострочный = Истина;
|
||||
ШаблонПоиска.ИгнорироватьРегистр = Истина;
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -31,7 +31,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -42,7 +42,7 @@
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
|
||||
Если ЭтоФайлОбычнойФормы(АнализируемыйФайл) Тогда
|
||||
Если ТипыФайлов.ЭтоФайлОбычнойФормы(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
@ -78,18 +78,6 @@
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ЭтоФайлОбычнойФормы(Файл)
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Имя, "Form.bin") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПодготовитьКаталогВыгрузки(КаталогИсходныхФайлов, ОбрабатываемыйФайл, ДополнительныеПараметры)
|
||||
|
||||
ФайлУдален = НЕ ОбрабатываемыйФайл.Существует();
|
||||
|
@ -27,6 +27,24 @@
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ПолучитьСтандартныеНастройкиСценария
|
||||
// Возвращает структуру настроек сценария
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Структура с настройками сценария
|
||||
// * ИмяСценария - Строка - Имя, с которым сохранятся настройки
|
||||
// * Настройка - Соответствие - настройки
|
||||
//
|
||||
Функция ПолучитьСтандартныеНастройкиСценария() Экспорт
|
||||
|
||||
НастройкиСценария = Новый Соответствие;
|
||||
НастройкиСценария.Вставить("ИспользоватьНастройкиПоУмолчанию", Истина);
|
||||
НастройкиСценария.Вставить("ВерсияПлатформы", "");
|
||||
|
||||
Возврат Новый Структура("ИмяСценария, Настройка", ИмяСценария(), НастройкиСценария);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
@ -37,7 +55,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -133,7 +133,8 @@
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СтрокаЗамены + "$3");
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
|
||||
Возврат Истина;
|
||||
@ -208,10 +209,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1" + СокрЛП(СтрокаЗамены) + Символы.ПС + "$3");
|
||||
ЗаписьТекста = Новый ЗаписьТекста;
|
||||
ЗаписьТекста.Открыть(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||
ЗаписьТекста.Закрыть();
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -26,7 +26,7 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -17,6 +17,28 @@
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ПолучитьСтандартныеНастройкиСценария
|
||||
// Возвращает структуру настроек сценария
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Структура с настройками сценария
|
||||
// * ИмяСценария - Строка - Имя, с которым сохранятся настройки
|
||||
// * Настройка - Соответствие - настройки
|
||||
//
|
||||
Функция ПолучитьСтандартныеНастройкиСценария() Экспорт
|
||||
|
||||
ВызватьИсключение "Настройки отсутствуют";
|
||||
|
||||
НастройкиСценария = Новый Соответствие;
|
||||
НастройкиСценария.Вставить("ИспользоватьПоУмолчанию", Истина);
|
||||
НастройкиСценария.Вставить("Версия", "");
|
||||
НастройкиСценария.Вставить("КоличествоПопыток", 5);
|
||||
НастройкиСценария.Вставить("МассивПараметров", Новый Массив);
|
||||
|
||||
Возврат Новый Структура("ИмяСценария, Настройка", ИмяСценария(), НастройкиСценария);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
@ -27,8 +49,9 @@
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги / файлы которые необходимо добавить в индекс
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
@ -39,21 +62,41 @@
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
|
||||
// анализ файла без изменения его содержимого
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
ШаблоннаяОбрабткаФайла(АнализируемыйФайл);
|
||||
|
||||
ШаблоннаяОбработкаФайла(АнализируемыйФайл);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// анализ файла с изменением его содержимого
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
Если ШаблоннаяОбработкаФайлаСИзменением(АнализируемыйФайл) Тогда
|
||||
|
||||
//Добавим измененный каталог или файл в индекс, чтобы он закоммитился с изменениями
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
//Добавим измененный файл в журнал изменений без добавления в индекс, чтобы сценарии прошли снова
|
||||
ДополнительныеПараметры.ФайлыДляПостОбработки.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Процедура ШаблоннаяОбрабткаФайла(ИмяФайла);
|
||||
Процедура ШаблоннаяОбработкаФайла(ИмяФайла)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
|
||||
@ -63,6 +106,26 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла);
|
||||
Если СодержимоеФайла = СодержимоеФайла Тогда
|
||||
|
||||
ВызватьИсключение "Содержимое файла равно содержимому файла";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
КонецПроцедуры;
|
||||
Функция ШаблоннаяОбработкаФайлаСИзменением(ИмяФайла)
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
|
||||
Если Не ЗначениеЗаполнено(СодержимоеФайла) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайловыеОперации.ЗаписатьТекстФайла(ИмяФайла, СодержимоеФайла + "1");
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
105
tests/fixtures/Документ.mdo
vendored
Normal file
105
tests/fixtures/Документ.mdo
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:Document xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="385df754-ca61-4a33-891e-85a76740ce8c">
|
||||
<producedTypes>
|
||||
<objectType typeId="dfd6d675-7224-48e1-9f73-27c877f4ebe7" valueTypeId="dc7923eb-814f-4270-94e4-b90e09ba69cc"/>
|
||||
<refType typeId="514db708-6540-4aac-9572-7bc815a489cd" valueTypeId="e83fcebe-b881-4ea1-ab4f-66ac8b6a9125"/>
|
||||
<selectionType typeId="cc0398a5-fb11-4964-a2cc-660199555a1a" valueTypeId="cccce58b-d552-4b60-b68b-6d67a46b1241"/>
|
||||
<listType typeId="f48dffcb-19af-4486-ac12-06c56992a664" valueTypeId="2504943b-5617-4e14-80a4-a5da48ad3ae8"/>
|
||||
<managerType typeId="5efb0435-af92-4b42-ae5a-411d9fb5250f" valueTypeId="3843301c-ad40-42c1-9e49-1b6bd6f90d32"/>
|
||||
</producedTypes>
|
||||
<name>Документ</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Документ</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<inputByString>Document.Документ.StandardAttribute.Number</inputByString>
|
||||
<createOnInput>Use</createOnInput>
|
||||
<dataLockControlMode>Managed</dataLockControlMode>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
<numberType>String</numberType>
|
||||
<numberLength>9</numberLength>
|
||||
<numberAllowedLength>Variable</numberAllowedLength>
|
||||
<checkUnique>true</checkUnique>
|
||||
<autonumbering>true</autonumbering>
|
||||
<postInPrivilegedMode>true</postInPrivilegedMode>
|
||||
<unpostInPrivilegedMode>true</unpostInPrivilegedMode>
|
||||
<attributes uuid="01eea830-71a8-4902-b017-62a4d83a4740">
|
||||
<name>Реквизит</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Реквизит</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
</attributes>
|
||||
<tabularSections uuid="2c6232da-69cb-4df3-8edb-266590e0b802">
|
||||
<producedTypes>
|
||||
<objectType typeId="09b7654a-ee86-421d-af11-ebf35b735f4a" valueTypeId="8550bec4-2626-4a90-9ba4-157e89f19e2d"/>
|
||||
<rowType typeId="692d5e88-96ff-4bc9-bb0d-3294edbbf1bc" valueTypeId="2ae0c435-e1ea-4b69-8cfc-9bb34e8db960"/>
|
||||
</producedTypes>
|
||||
<name>ТабличнаяЧасть</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Табличная часть</value>
|
||||
</synonym>
|
||||
<attributes uuid="1ebe77fa-0796-4dfe-b378-32e7bb78452c">
|
||||
<name>Реквизит</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Реквизит</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
</attributes>
|
||||
<attributes uuid="adbb4501-d947-4486-a88d-6a02a30e5f98">
|
||||
<name>Реквизит1</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Реквизит1</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
</attributes>
|
||||
</tabularSections>
|
||||
<tabularSections uuid="bb551f9f-818a-4572-b64d-9b1b34e714a6">
|
||||
<producedTypes>
|
||||
<objectType typeId="5e9118b2-a4a0-4748-9386-763b9731c2cf" valueTypeId="75025611-4968-4d40-84e2-748123f73818"/>
|
||||
<rowType typeId="1adafac5-71fd-45a0-9814-c5de37e5f917" valueTypeId="e37fc074-f327-4900-b612-6f0510e85636"/>
|
||||
</producedTypes>
|
||||
<name>ТабличнаяЧасть1</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Табличная часть1</value>
|
||||
</synonym>
|
||||
<attributes uuid="cabdb765-3400-4065-8c71-7c355202c9da">
|
||||
<name>Реквизит</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Реквизит</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers>
|
||||
<length>10</length>
|
||||
</stringQualifiers>
|
||||
</type>
|
||||
<fullTextSearch>Use</fullTextSearch>
|
||||
</attributes>
|
||||
</tabularSections>
|
||||
</mdclass:Document>
|
376
tests/fixtures/Документ.xml
vendored
Normal file
376
tests/fixtures/Документ.xml
vendored
Normal file
@ -0,0 +1,376 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.7">
|
||||
<Document uuid="931ff8b9-d808-49bc-a47c-8e3f2faa223f">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentObject.Документ" category="Object">
|
||||
<xr:TypeId>0a63ee71-6357-4a50-b082-35f60b3be0e0</xr:TypeId>
|
||||
<xr:ValueId>10bc61a2-ef43-4627-9748-ae6089c9bde1</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentRef.Документ" category="Ref">
|
||||
<xr:TypeId>e1fe1cb5-e8cb-441e-b2e3-a72ee43a4038</xr:TypeId>
|
||||
<xr:ValueId>6e4dfc1f-8cc4-4fd9-9331-532a9b25b94a</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentSelection.Документ" category="Selection">
|
||||
<xr:TypeId>86597e09-2004-4fcc-9c8f-7b1e35aa1431</xr:TypeId>
|
||||
<xr:ValueId>0dc19544-4f64-4479-ad60-e06dda1298ee</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentList.Документ" category="List">
|
||||
<xr:TypeId>855d48d4-5dce-4629-9998-d7a693d9d8d2</xr:TypeId>
|
||||
<xr:ValueId>c74d8db3-5efd-4832-b863-6f8678445184</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentManager.Документ" category="Manager">
|
||||
<xr:TypeId>0cb5077c-9a73-4650-b93c-9d489b897d3b</xr:TypeId>
|
||||
<xr:ValueId>5d3b3e0c-fb2e-45a8-b528-d257f903e7bc</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>Документ</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Документ</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment>Документ</Comment>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Numerator/>
|
||||
<NumberType>String</NumberType>
|
||||
<NumberLength>10</NumberLength>
|
||||
<NumberAllowedLength>Fixed</NumberAllowedLength>
|
||||
<NumberPeriodicity>Year</NumberPeriodicity>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="Posted">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Ref">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="DeletionMark">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Date">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>ShowError</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Number">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:type="xs:string"> </xr:FillValue>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<Characteristics/>
|
||||
<BasedOn>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ВводНачальныхОстатков</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.РКО</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ПКО</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.АвансовыйОтчет</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ВозмещениеШтрафы</xr:Item>
|
||||
</BasedOn>
|
||||
<InputByString>
|
||||
<xr:Field>Document.РКО.StandardAttribute.Number</xr:Field>
|
||||
</InputByString>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>Use</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm>Document.РКО.Form.ФормаДокумента</DefaultObjectForm>
|
||||
<DefaultListForm>Document.РКО.Form.ФормаСписка</DefaultListForm>
|
||||
<DefaultChoiceForm>Document.РКО.Form.ФормаСписка</DefaultChoiceForm>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<Posting>Allow</Posting>
|
||||
<RealTimePosting>Deny</RealTimePosting>
|
||||
<RegisterRecordsDeletion>AutoDeleteOff</RegisterRecordsDeletion>
|
||||
<RegisterRecordsWritingOnPost>WriteModified</RegisterRecordsWritingOnPost>
|
||||
<SequenceFilling>AutoFill</SequenceFilling>
|
||||
<RegisterRecords></RegisterRecords>
|
||||
<PostInPrivilegedMode>false</PostInPrivilegedMode>
|
||||
<UnpostInPrivilegedMode>false</UnpostInPrivilegedMode>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Automatic</DataLockControlMode>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="8fa5eded-c1ec-4edc-b0fe-dc673c7486c7">
|
||||
<Properties>
|
||||
<Name>UID</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>UID</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>36</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>Index</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="d39a6a5c-73a0-4df9-a3b1-b62fb0c2041a">
|
||||
<Properties>
|
||||
<Name>Автор</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Автор</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>Index</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Form>ФормаДокумента</Form>
|
||||
<Form>ФормаСписка</Form>
|
||||
<TabularSection uuid="95245065-867e-4d1f-a8f9-ebed62cd0489">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentTabularSection.РКО.ТабличнаяЧасть1" category="TabularSection">
|
||||
<xr:TypeId>80865b81-ba79-4e7f-bbb6-c9817e08f4dd</xr:TypeId>
|
||||
<xr:ValueId>3608b01d-e050-453f-ae0a-93e3eea243c3</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentTabularSectionRow.РКО.ТабличнаяЧасть1" category="TabularSectionRow">
|
||||
<xr:TypeId>7720174e-1f6c-4639-98d8-9a488f6488a5</xr:TypeId>
|
||||
<xr:ValueId>73fe98f8-8875-49ef-ac49-37806daf575b</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТабличнаяЧасть1</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>ТабличнаяЧасть1</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment>ТабличнаяЧасть1</Comment>
|
||||
<ToolTip/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="b04234e4-d0ca-4a9c-9735-794e9e798f7c">
|
||||
<Properties>
|
||||
<Name>Субконто</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Субконто</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.ВидыОпераций</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Сотрудники</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.СтатьиЗатрат</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Контрагенты</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.ЕдиницыИзмерения</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.БанковскиеСчета</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Номенклатура</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Кассы</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Машины</v8:Type>
|
||||
<v8:Type>cfg:CatalogRef.Подразделения</v8:Type>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>Index</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</TabularSection>
|
||||
</ChildObjects>
|
||||
</Document>
|
||||
</MetaDataObject>
|
16
tests/fixtures/ПроверкаДублейПроцедурСПараметрами.bsl
vendored
Normal file
16
tests/fixtures/ПроверкаДублейПроцедурСПараметрами.bsl
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
Процедура РадномныеВычисления (парам1)
|
||||
КонецПроцедуры;
|
||||
|
||||
Функция РадномныеВычисления() Экспорт
|
||||
КонецФункции
|
||||
|
||||
Процедура Изменить(Парам1, Парам2)
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Изменить(Парам 1 = Неопределено)
|
||||
КонецФункции
|
||||
|
||||
Функция _Функ1()
|
||||
КонецФункции
|
||||
|
@ -8,15 +8,19 @@
|
||||
|
||||
// Основная точка входа
|
||||
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
|
||||
|
||||
юТест = ЮнитТестирование;
|
||||
|
||||
ВсеТесты = Новый Массив;
|
||||
|
||||
|
||||
юТест = ЮнитТестирование;
|
||||
|
||||
ВсеТесты = Новый Массив;
|
||||
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНеИсходник");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаИмеетМетодПолученияНастроек");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийИмеетМетодПолученияНастроек");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаВозвращаетНастройки");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийВозвращаетНастройки");
|
||||
|
||||
Возврат ВсеТесты;
|
||||
|
||||
@ -28,7 +32,7 @@
|
||||
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
|
||||
|
||||
ВключитьПоказОтладки();
|
||||
|
||||
|
||||
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -37,46 +41,81 @@
|
||||
|
||||
МенеджерВременныхФайлов.Удалить();
|
||||
МенеджерВременныхФайлов = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаИмеетМетодПолученияНастроек() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("ОтключениеПолнотекстовогоПоиска.os");
|
||||
|
||||
СценарийИмеетМетод(ОбъектСценария, НазваниеМетодаНастроек());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийИмеетМетодПолученияНастроек() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("РазборОтчетовОбработокРасширений.os");
|
||||
|
||||
СценарийИмеетМетод(ОбъектСценария, НазваниеМетодаНастроек());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийОтключенияПолнотекстовогоПоискаВозвращаетНастройки() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("ОтключениеПолнотекстовогоПоиска.os");
|
||||
|
||||
СценарийВозвращаетНастройки(ОбъектСценария, "ОтключениеПолнотекстовогоПоиска");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийРазбораОтчетовОбработокРасширенийВозвращаетНастройки() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарий("РазборОтчетовОбработокРасширений.os");
|
||||
|
||||
СценарийВозвращаетНастройки(ОбъектСценария, "РазборОтчетовОбработокРасширений");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
ОбъектСценария = ПолучитьСценарий("ПроверкаДублейПроцедурИФункций.os");
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "ПроверкаДублейПроцедурНегативныйТест.bsl"));
|
||||
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "обнаружены неуникальные имена методов");
|
||||
СПараметрами = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "ПроверкаДублейПроцедурСПараметрами.bsl"));
|
||||
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "обнаружены неуникальные имена методов");
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, СПараметрами, "обнаружены неуникальные имена методов");
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл() Экспорт
|
||||
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "ПроверкаДублейПроцедурПоложительныйТест.bsl"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
ОбъектСценария = ПолучитьСценарий("ПроверкаДублейПроцедурИФункций.os");
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл() Экспорт
|
||||
|
||||
Файл = Новый Файл(ПолучитьИмяВременногоФайла("bsl"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
ОбъектСценария = ПолучитьСценарий("ПроверкаДублейПроцедурИФункций.os");
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоЛожь();
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНеИсходник() Экспорт
|
||||
|
||||
Файл = Новый Файл(МенеджерВременныхФайлов.СоздатьФайл("xml"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
ОбъектСценария = ПолучитьСценарий("ПроверкаДублейПроцедурИФункций.os");
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоЛожь();
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, ТекстИсключения)
|
||||
@ -87,20 +126,39 @@
|
||||
ПараметрыМетода.Добавить(Файл);
|
||||
ПараметрыМетода.Добавить(Файл.Путь);
|
||||
ПараметрыМетода.Добавить(ДополнительныеНастройки);
|
||||
|
||||
|
||||
Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение(ТекстИсключения);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций()
|
||||
Процедура СценарийИмеетМетод(ОбъектСценария, ИмяМетода)
|
||||
|
||||
Сценарий = ОбъединитьПути(КаталогИсходников(), "src", "СценарииОбработки", "ПроверкаДублейПроцедурИФункций.os");
|
||||
Рефлектор = Новый Рефлектор;
|
||||
ЕстьМетод = Рефлектор.МетодСуществует(ОбъектСценария, ИмяМетода);
|
||||
|
||||
Ожидаем.Что(ЕстьМетод, Истина).ЭтоИстина();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьСценарий(ИмяСценария)
|
||||
|
||||
Сценарий = ОбъединитьПути(КаталогИсходников(), "src", "СценарииОбработки", ИмяСценария);
|
||||
ОбъектСценария = ЗагрузитьСценарий(Сценарий);
|
||||
|
||||
Возврат ОбъектСценария;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СценарийВозвращаетНастройки(ОбъектСценария, ИмяНастройки)
|
||||
|
||||
Рефлектор = Новый Рефлектор;
|
||||
СтруктураНастроек = Рефлектор.ВызватьМетод(ОбъектСценария, НазваниеМетодаНастроек());
|
||||
|
||||
Утверждения.ПроверитьРавенство(СтруктураНастроек.ИмяСценария, ИмяНастройки);
|
||||
Утверждения.ПроверитьРавенство(ТипЗнч(СтруктураНастроек.Настройка), Тип("Соответствие"));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВключитьПоказОтладки()
|
||||
Лог.УстановитьУровень(УровниЛога.Отладка);
|
||||
КонецПроцедуры
|
||||
@ -117,11 +175,17 @@
|
||||
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
|
||||
КонецФункции
|
||||
|
||||
Функция НазваниеМетодаНастроек()
|
||||
|
||||
Возврат "ПолучитьСтандартныеНастройкиСценария";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьДополнительныеНастройки()
|
||||
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(ТекущийКаталог());
|
||||
ДополнительныеНастройки = Новый Структура("Лог, УправлениеНастройками", Лог, УправлениеНастройками);
|
||||
|
||||
Возврат ДополнительныеНастройки;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
@ -6,6 +6,7 @@
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"ЗапретИспользованияПерейти.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"ОтключениеПолнотекстовогоПоиска.os",
|
||||
"ПроверкаДублейПроцедурИФункций.os",
|
||||
"ПроверкаКорректностиОбластей.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
@ -17,6 +18,14 @@
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
],
|
||||
"НастройкиСценариев": {
|
||||
"ОтключениеПолнотекстовогоПоиска": {
|
||||
"МетаданныеДляИсключения": {
|
||||
"src\\_example.xml": [
|
||||
"Номер"
|
||||
],
|
||||
"src\\_example2.xml": []
|
||||
}
|
||||
},
|
||||
"РазборОтчетовОбработокРасширений": {
|
||||
"ИспользоватьНастройкиПоУмолчанию": true,
|
||||
"ВерсияПлатформы": ""
|
||||
|
Loading…
Reference in New Issue
Block a user