mirror of
https://github.com/bia-technologies/diff3cf.git
synced 2024-11-30 08:16:58 +02:00
Начальная инициализация
This commit is contained in:
parent
df1c2b5759
commit
f85c883c4c
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
bdd-log.xml
|
||||
*.ospx
|
||||
|
||||
/exec.log
|
||||
|
||||
*.orig
|
||||
|
||||
/tests.xml
|
22
LICENSE
Normal file
22
LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Andrei Ovsiankin
|
||||
Copyright (c) 2019 BIA Technologies, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
43
README.md
Normal file
43
README.md
Normal file
@ -0,0 +1,43 @@
|
||||
# Утилита для автоматического сравнения переопределенных в расширении модулей измененных в новом релизе поставки основной конфигурации
|
||||
|
||||
## Особенности данного решения
|
||||
- скрипт автоматически сравнивает конфигурации и расширение, выгруженные в формате XML (выгрузка из конфигуратора)
|
||||
- расширение также должно быть выгружено в формате XML
|
||||
- помимо стандартных модулей реализована возможность сравнивать обработки заполнения вынесенные из форм документов в обработки
|
||||
- результат сравнения сохраняется в файл отчет в формате HTML
|
||||
|
||||
## Установка
|
||||
|
||||
Установка на компьютер стандартна
|
||||
|
||||
- склонировать репозиторий или
|
||||
- распаковать в нужный каталог архив репозитория или
|
||||
- для Windows запустить [installlocalhost.bat](/installlocalhost.bat)
|
||||
|
||||
## Использование
|
||||
Приложение позволяет сравнивать переопределенные в расширении методы, а также изменение структуры метаданных. Для каждого из этих режимов реализованы соответствующие команды.
|
||||
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
diff - Выполняет сравнение расширения с основной конфигурацией и новой поставкой
|
||||
objects - Выполняет анализ изменения объектов из основной конфигурации в новой поставке
|
||||
|
||||
diff - Выполняет сравнение расширения с основной конфигурацией и новой поставкой
|
||||
Параметры:
|
||||
<КаталогОсновнойКонфигурации> - Каталог основной конфигурации
|
||||
<КаталогПоставки> - Каталог поставки
|
||||
<КаталогРасширения> - Каталог расширения
|
||||
<ФайлРезультат> - Файл-отчет, результат сравнения конфигураций
|
||||
|
||||
Перед использованием необходимо выгрузить релиз поставки в формате XML в произвольный каталог
|
||||
|
||||
- для сравнения обработок заполнения в свойствах обработки в поле комментарий необходимо указать переопределенный модуль в формате:
|
||||
"Adopted.Documents\<Имя документа>\<Путь к модулю>\<ИмяМодуля.bsl>"
|
||||
Например: Adopted.Documents\Отгул\Forms\ФормаДокумента\Ext\Form\Module.bsl
|
||||
|
||||
- пример вызова для получения анализа переопределенных методов:
|
||||
diff3cf diff <каталог основной конфигурации> <каталог с релизом поставки> <каталог с расширением> <файл результат>.html
|
||||
|
||||
- пример вызова для получения анализа изменения структуры метаданных:
|
||||
diff3cf objects <каталог основной конфигурации> <каталог с релизом поставки> <каталог с расширением> <файл результат>.txt
|
17
features/opm-build.feature
Normal file
17
features/opm-build.feature
Normal file
@ -0,0 +1,17 @@
|
||||
# language: ru
|
||||
|
||||
Функционал: Проверка сборки продукта
|
||||
Как Пользователь
|
||||
Я хочу автоматически проверять сборку моего продукта
|
||||
Чтобы гарантировать возможность установку моего продукта у пользователей
|
||||
|
||||
Контекст: Отключение отладки в логах
|
||||
Допустим Я выключаю отладку лога с именем "oscript.lib.commands"
|
||||
И Я очищаю параметры команды "opm" в контексте
|
||||
|
||||
Сценарий: Выполнение команды без параметров
|
||||
Когда Я добавляю параметр "build ." для команды "opm"
|
||||
И Я выполняю команду "opm"
|
||||
Тогда Вывод команды "opm" содержит "Сборка пакета завершена"
|
||||
И Вывод команды "opm" не содержит "Внешнее исключение"
|
||||
И Код возврата команды "opm" равен 0
|
43
features/step_definitions/diff3cf_feature.os
Normal file
43
features/step_definitions/diff3cf_feature.os
Normal file
@ -0,0 +1,43 @@
|
||||
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
|
||||
|
||||
#Использовать gitrunner
|
||||
#Использовать tempfiles
|
||||
#Использовать asserts
|
||||
|
||||
Перем БДД;
|
||||
|
||||
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
|
||||
|
||||
БДД = КонтекстФреймворкаBDD;
|
||||
|
||||
ВсеШаги = Новый Массив;
|
||||
ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИЗапоминаюЕгоКак");
|
||||
ВсеШаги.Добавить("ЯПереключаюсьВоВременныйКаталог");
|
||||
|
||||
Возврат ВсеШаги;
|
||||
КонецФункции
|
||||
|
||||
// я создаю временный каталог и запоминаю его как "Алиас"
|
||||
Процедура ЯСоздаюВременныйКаталогИЗапоминаюЕгоКак(Алиас) Экспорт
|
||||
|
||||
НовыйВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
|
||||
СоздатьКаталог(НовыйВременныйКаталог);
|
||||
|
||||
БДД.СохранитьВКонтекст(Алиас, НовыйВременныйКаталог);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// я переключаюсь во временный каталог "АлиасКаталога"
|
||||
Процедура ЯПереключаюсьВоВременныйКаталог(АлиасКаталога)Экспорт
|
||||
|
||||
КаталогСкрипта = БДД.ПолучитьИзКонтекста("КаталогПроекта");
|
||||
Если НЕ ЗначениеЗаполнено(КаталогСкрипта) Тогда
|
||||
|
||||
БДД.СохранитьВКонтекст("КаталогПроекта", ТекущийКаталог());
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога);
|
||||
УстановитьТекущийКаталог(КаталогРепозиториев);
|
||||
|
||||
КонецПроцедуры
|
30
features/ВыполнениеСравнения.feature
Normal file
30
features/ВыполнениеСравнения.feature
Normal file
@ -0,0 +1,30 @@
|
||||
# language: ru
|
||||
|
||||
Функциональность: Выполнение прекоммита
|
||||
|
||||
Как разработчик
|
||||
Я хочу быть уверенным, что diff3cf корректно сравнивает две конфигурации и расширение
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я включаю отладку лога с именем "oscript.app.diff3cf"
|
||||
И я создаю временный каталог и запоминаю его как "КаталогРезультат"
|
||||
И я переключаюсь во временный каталог "КаталогРезультат"
|
||||
|
||||
Сценарий: Сравнение основной конфигурации конфигурации поставки и расширения
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os diff <КаталогПроекта>/tests/fixtures/configuration <КаталогПроекта>/tests/fixtures/release <КаталогПроекта>/tests/fixtures/exts/ADDTST report.html"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "Сохранение отчета..."
|
||||
И Вывод команды "oscript" не содержит "Ошибка"
|
||||
|
||||
Сценарий: Справнение с неполным набором параметров (без файла отчета)
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os diff <КаталогПроекта>/tests/fixtures/configuration <КаталогПроекта>/tests/fixtures/release <КаталогПроекта>/tests/fixtures/exts/ADDTST"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "Сохранение отчета..."
|
||||
И Вывод команды "oscript" содержит "ОШИБКА - Не удалось сохранить результат в"
|
||||
|
||||
Сценарий: Сравнение основной конфигурации и конфигурации поставки
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os objects <КаталогПроекта>/tests/fixtures/configuration <КаталогПроекта>/tests/fixtures/release report.txt"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "Сохраняем результат сравнения"
|
||||
И Вывод команды "oscript" не содержит "Ошибка"
|
43
features/ПростыеКоманды.feature
Normal file
43
features/ПростыеКоманды.feature
Normal file
@ -0,0 +1,43 @@
|
||||
# language: ru
|
||||
|
||||
Функциональность: Выполнение команды продукта
|
||||
|
||||
Как разработчик
|
||||
Я хочу иметь возможность выполнять команды продукта
|
||||
Чтобы выполнять коллективную разработку приложения для OneScript
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я включаю отладку лога с именем "oscript.app.diff3cf"
|
||||
# И я включаю отладку лога с именем "bdd"
|
||||
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "1.0.2"
|
||||
И Вывод команды "oscript" не содержит "diff3cf v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
Сценарий: Получение помощи продукта
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
diff3cf v1.0.2
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
diff - Выполняет сравнение расширения с основной конфигурацией и новой поставкой
|
||||
"""
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
Сценарий: Вызов исполняемого файла без параметров
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
diff3cf v1.0.2
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
diff - Выполняет сравнение расширения с основной конфигурацией и новой поставкой
|
||||
"""
|
||||
И Код возврата команды "oscript" равен 5
|
12
installlocalhost.bat
Normal file
12
installlocalhost.bat
Normal file
@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
call del "*.ospx"
|
||||
|
||||
for /f %%i in ('"oscript -version"') do set result=%%i
|
||||
|
||||
if %result%==1.0.19.105 (
|
||||
call opm build . -mf ./packagedef -out .
|
||||
) else (
|
||||
call opm build -m ./packagedef -o .
|
||||
)
|
||||
|
||||
call opm install -f *.ospx
|
14
packagedef
Normal file
14
packagedef
Normal file
@ -0,0 +1,14 @@
|
||||
ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "ПараметрыПриложения.os");
|
||||
ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров);
|
||||
|
||||
ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПродукта());
|
||||
|
||||
Описание.Имя(ИмяПродукта)
|
||||
.ВерсияСреды("1.0.21")
|
||||
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
|
||||
.ЗависитОт("logos", "1.2.0")
|
||||
.ЗависитОт("cmdline", "1.0.0")
|
||||
.ВключитьФайл("src")
|
||||
.ВключитьФайл("LICENSE")
|
||||
.ВключитьФайл("README.md")
|
||||
.ИсполняемыйФайл("src/main.os", ИмяПродукта);
|
23
src/main.os
Normal file
23
src/main.os
Normal file
@ -0,0 +1,23 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Приложение генерации отчета об измененных объектах, переопределенных в расширении
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать "."
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Приложение = МенеджерПриложения.Инициализировать(ПараметрыПриложения);
|
||||
|
||||
Попытка
|
||||
|
||||
Приложение.ЗавершитьРаботуПриложения(Приложение.ЗапуститьВыполнение());
|
||||
|
||||
Исключение
|
||||
|
||||
Приложение.ЗавершитьРаботуПриложенияСОшибкой(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
|
||||
КонецПопытки;
|
73
src/Классы/ГенераторОтчета.os
Normal file
73
src/Классы/ГенераторОтчета.os
Normal file
@ -0,0 +1,73 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы <ГенераторОтчета>
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Сохраняет результат сравнения
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатСравнения - Структура - Результат сравнения конфигураций и расширения
|
||||
// ИмяФайлаРезультата - Строка - Полное имя файла, в который будет записан результат сравнения
|
||||
// Лог - log-manager - Экземпляр класса логирования
|
||||
// ФорматРезультата - Строка - Необязательный, пока реализован только "HTML" формат
|
||||
//
|
||||
Процедура СохранитьРезультат(РезультатСравнения, ИмяФайлаРезультата, Лог, ФорматРезультата = "HTML") Экспорт
|
||||
|
||||
Если ФорматРезультата = "HTML" Тогда
|
||||
|
||||
Попытка
|
||||
ГенераторОтчетаHTML.СохранитьРезультат(РезультатСравнения, ИмяФайлаРезультата, Лог);
|
||||
Исключение
|
||||
ОбработкаИсключенияЗаписи(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяФайлаРезультата, Лог);
|
||||
КонецПопытки;
|
||||
|
||||
ИначеЕсли ФорматРезультата = "TXT" Тогда
|
||||
|
||||
ТекстРезультат = Новый ТекстовыйДокумент();
|
||||
ТекстРезультат.ДобавитьСтроку(СтрШаблон("Результат сравнения изменений в структуре объектов:
|
||||
|%1
|
||||
|%2
|
||||
|
|
||||
|", РезультатСравнения.РодительПуть, РезультатСравнения.ПоставкаПуть));
|
||||
|
||||
Для каждого ЭлементПроекта Из РезультатСравнения.Типы Цикл
|
||||
|
||||
ТекстРезультат.ДобавитьСтроку(ЭлементПроекта);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяФайлаРезультата) Тогда
|
||||
|
||||
Попытка
|
||||
ТекстРезультат.Записать(ИмяФайлаРезультата, КодировкаТекста.UTF8NoBOM);
|
||||
Исключение
|
||||
ОбработкаИсключенияЗаписи(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяФайлаРезультата, Лог);
|
||||
КонецПопытки;
|
||||
|
||||
Иначе
|
||||
|
||||
Лог.Информация(ТекстРезультат.ПолучитьТекст());
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Лог.Ошибка("Неверный формат результата");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработкаИсключенияЗаписи(ПредставлениеОшибки, ИмяФайлаРезультата, Лог)
|
||||
|
||||
ТекстОшибки = СтрШаблон("Не удалось сохранить результат в '%1' по причине:
|
||||
|%3", ИмяФайлаРезультата, ПредставлениеОшибки);
|
||||
|
||||
Лог.Ошибка(ТекстОшибки);
|
||||
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецПроцедуры
|
33
src/Классы/КомандаVersion.os
Normal file
33
src/Классы/КомандаVersion.os
Normal file
@ -0,0 +1,33 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы команды version
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// настрока команды
|
||||
//
|
||||
// Параметры:
|
||||
// Команда - ОписаниеКоманды - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
|
||||
Сообщить(Приложение.ВерсияПродукта());
|
||||
|
||||
Лог.Отладка("Вывод версии приложения");
|
||||
|
||||
Возврат Приложение.РезультатыКоманд().Успех;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
79
src/Классы/КомандаАнализОбъектов.os
Normal file
79
src/Классы/КомандаАнализОбъектов.os
Normal file
@ -0,0 +1,79 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы команды <objects>
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем РодительПуть;
|
||||
Перем ПоставкаПуть;
|
||||
|
||||
Перем ФайлРезультатИмя;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// настрока команды
|
||||
//
|
||||
// Параметры:
|
||||
// Команда - ОписаниеКоманды - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
// Добавление параметров команды
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогОсновнойКонфигурации", "Каталог основной конфигурации");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогПоставки", "Каталог поставки");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ФайлРезультат",
|
||||
"Файл-отчет, результат сравнения конфигураций в формате 'txt'.
|
||||
|Необязательный, если не указан результат выводится в консоли.");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
|
||||
РодительПуть = ПараметрыКоманды["КаталогОсновнойКонфигурации"];
|
||||
ПоставкаПуть = ПараметрыКоманды["КаталогПоставки"];
|
||||
ФайлРезультатИмя = ПараметрыКоманды["ФайлРезультат"];
|
||||
|
||||
Если Не ПроверитьКаталог(РодительПуть, "Каталог основной конфигурации", Лог)
|
||||
ИЛИ Не ПроверитьКаталог(ПоставкаПуть, "Каталог поставки", Лог) Тогда
|
||||
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Лог.Информация("Получаем результат сравнения");
|
||||
РезультатСравнения = АнализаторОбъектов.ВыполнитьСравнениеОбъектов(РодительПуть, ПоставкаПуть, Лог);
|
||||
|
||||
Лог.Информация("Сохраняем результат сравнения: %1", ФайлРезультатИмя);
|
||||
Генератор = Новый ГенераторОтчета;
|
||||
Генератор.СохранитьРезультат(РезультатСравнения, ФайлРезультатИмя, Лог, "TXT");
|
||||
|
||||
// При успешном выполнении возвращает код успеха
|
||||
Возврат Приложение.РезультатыКоманд().Успех;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПроверитьКаталог(КаталогПроверки, НазначениеКаталога, Лог)
|
||||
|
||||
ФайлКаталогПроверки = Новый Файл(КаталогПроверки);
|
||||
|
||||
Если НЕ ФайлКаталогПроверки.Существует() ИЛИ ФайлКаталогПроверки.ЭтоФайл() Тогда
|
||||
Лог.Ошибка("%1 '%2' не существует или это файл", НазначениеКаталога, РодительПуть);
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
47
src/Классы/КомандаСправкаПоПараметрам.os
Normal file
47
src/Классы/КомандаСправкаПоПараметрам.os
Normal file
@ -0,0 +1,47 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы команды help
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// настрока команды
|
||||
//
|
||||
// Параметры:
|
||||
// Команда - ОписаниеКоманды - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Команда");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
|
||||
КомандаДляСправки = ПараметрыКоманды["Команда"];
|
||||
|
||||
Если КомандаДляСправки = Неопределено Тогда
|
||||
|
||||
Приложение.ВывестиСправкуПоКомандам();
|
||||
|
||||
Лог.Отладка("Вывод справки по командам");
|
||||
|
||||
Иначе
|
||||
|
||||
Приложение.ВывестиСправкуПоКоманде(КомандаДляСправки);
|
||||
|
||||
Лог.Отладка(СтрШаблон("Вывод справки по команде %1", КомандаДляСправки));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Приложение.РезультатыКоманд().Успех;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
90
src/Классы/КомандаСравнение.os
Normal file
90
src/Классы/КомандаСравнение.os
Normal file
@ -0,0 +1,90 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы команды <diff>
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем РодительПуть;
|
||||
Перем ПоставкаПуть;
|
||||
Перем РасширениеПуть;
|
||||
|
||||
Перем ФайлРезультатИмя;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// настрока команды
|
||||
//
|
||||
// Параметры:
|
||||
// Команда - ОписаниеКоманды - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
// Добавление параметров команды
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогОсновнойКонфигурации", "Каталог основной конфигурации");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогПоставки", "Каталог поставки");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРасширения", "Каталог расширения");
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ФайлРезультат", "Файл-отчет, результат сравнения конфигураций");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
|
||||
РодительПуть = ПараметрыКоманды["КаталогОсновнойКонфигурации"];
|
||||
ПоставкаПуть = ПараметрыКоманды["КаталогПоставки"];
|
||||
РасширениеПуть = ПараметрыКоманды["КаталогРасширения"];
|
||||
|
||||
Если Не ПроверитьКаталог(РодительПуть, "Каталог основной конфигурации", Лог)
|
||||
ИЛИ Не ПроверитьКаталог(ПоставкаПуть, "Каталог поставки", Лог)
|
||||
ИЛИ Не ПроверитьКаталог(РасширениеПуть, "Каталог расширения", Лог) Тогда
|
||||
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
РаздлительПути = ПолучитьРазделительПути();
|
||||
РасширениеПуть = ?(СтрЗаканчиваетсяНа(РасширениеПуть, РаздлительПути),
|
||||
РасширениеПуть, РасширениеПуть + РаздлительПути);
|
||||
|
||||
ФайлРезультатИмя = ПараметрыКоманды["ФайлРезультат"];
|
||||
|
||||
Лог.Информация("Получаем результат сравнения");
|
||||
РезультатСравнения = РезультатСравненияРасширения.ПолучитьРезультатСравнения(
|
||||
РодительПуть,
|
||||
ПоставкаПуть,
|
||||
РасширениеПуть,
|
||||
Лог);
|
||||
|
||||
Лог.Информация("Сохраняем результат сравнения: %1", ФайлРезультатИмя);
|
||||
Генератор = Новый ГенераторОтчета;
|
||||
Генератор.СохранитьРезультат(РезультатСравнения, ФайлРезультатИмя, Лог, "HTML");
|
||||
|
||||
// При успешном выполнении возвращает код успеха
|
||||
Возврат Приложение.РезультатыКоманд().Успех;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПроверитьКаталог(КаталогПроверки, НазначениеКаталога, Лог)
|
||||
|
||||
ФайлКаталогПроверки = Новый Файл(КаталогПроверки);
|
||||
|
||||
Если НЕ ФайлКаталогПроверки.Существует() ИЛИ ФайлКаталогПроверки.ЭтоФайл() Тогда
|
||||
Лог.Ошибка("%1 '%2' не существует или это файл", НазначениеКаталога, РодительПуть);
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
345
src/Классы/ПарсерМодулейРасширения.os
Normal file
345
src/Классы/ПарсерМодулейРасширения.os
Normal file
@ -0,0 +1,345 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Модуль разбора файлов конфигурации
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем РасширениеПуть;
|
||||
|
||||
// Функция возвращает префикс расширения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяФайлаКонфигурации - Строка - Полное имя файла configuration.xml расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - префикс расширения
|
||||
//
|
||||
Функция ПрочитатьПрефиксРасширения(ИмяФайлаКонфигурации) Экспорт
|
||||
|
||||
Результат = "";
|
||||
|
||||
ФайлОписания = Новый ТекстовыйДокумент;
|
||||
ФайлОписания.Прочитать(ИмяФайлаКонфигурации, КодировкаТекста.UTF8NoBOM);
|
||||
ТекстОписания = ФайлОписания.ПолучитьТекст();
|
||||
|
||||
ПаттернПрефикса = "<NamePrefix>([\w\W]*?)<\/NamePrefix>";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПаттернПрефикса);
|
||||
Регексп.Многострочный = Истина;
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
Результат = НайденнаяСтрока.Группы[1].Значение;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// возвращает массив описаний методов файла bsl
|
||||
//
|
||||
// Параметры:
|
||||
// ФайлМодуля - Файл - Файл BSL, методы которого нужно получить
|
||||
// Префикс - Строка - Префикс используемого расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - массив структур, результат разбора метода на модули
|
||||
//
|
||||
Функция ПрочитатьМетодыМодуля(ФайлМодуля, Префикс = "") Экспорт
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
ФайлОписания = Новый ТекстовыйДокумент;
|
||||
ФайлОписания.Прочитать(ФайлМодуля.ПолноеИмя, КодировкаТекста.UTF8NoBOM);
|
||||
ТекстОписания = ФайлОписания.ПолучитьТекст();
|
||||
|
||||
ПаттернМетода = "^[\s]*?(Процедура|Функция)[\s]*([\w\W]*?[\(])[\w\W]*?(КонецПроцедуры|КонецФункции)";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПаттернМетода);
|
||||
Регексп.Многострочный = Истина;
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
Директивы = ПолучитьДирективыМетодов(ФайлМодуля);
|
||||
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
ТипМетода = НайденнаяСтрока.Группы[1].Значение;
|
||||
ИмяМетода = СокрЛП(СтрЗаменить(НайденнаяСтрока.Группы[2].Значение, "(", ""));
|
||||
|
||||
ДирективаМетода = Директивы[ИмяМетода];
|
||||
Директива = "";
|
||||
ИмяМетодаБезПрефикса = ИмяМетода;
|
||||
ДлинаПередПосле = 5; // длина слов 'Перед' и 'После'
|
||||
ДлинаВместо = 6; // длина слова 'Вместо'
|
||||
|
||||
Если ДирективаМетода <> Неопределено Тогда
|
||||
ИмяМетодаБезПрефикса = ДирективаМетода.ИмяМетода;
|
||||
Директива = ДирективаМетода.Директива;
|
||||
ИначеЕсли Не ПустаяСтрока(Префикс) Тогда
|
||||
ИмяМетодаБезПрефикса = ?(СтрНачинаетсяС(ИмяМетода, Префикс), Сред(ИмяМетода, СтрДлина(Префикс) + 1), ИмяМетода);
|
||||
Если СтрЗаканчиваетсяНа(ВРег(ИмяМетодаБезПрефикса), ВРег("Перед"))
|
||||
ИЛИ СтрЗаканчиваетсяНа(ВРег(ИмяМетодаБезПрефикса), ВРег("После")) Тогда
|
||||
Директива = Прав(ИмяМетодаБезПрефикса, ДлинаПередПосле);
|
||||
ИмяМетодаБезПрефикса = Лев(ИмяМетодаБезПрефикса, СтрДлина(ИмяМетодаБезПрефикса) - ДлинаПередПосле);
|
||||
ИначеЕсли СтрЗаканчиваетсяНа(ВРег(ИмяМетодаБезПрефикса), ВРег("Вместо")) Тогда
|
||||
Директива = Прав(ИмяМетодаБезПрефикса, ДлинаВместо);
|
||||
ИмяМетодаБезПрефикса = Лев(ИмяМетодаБезПрефикса, СтрДлина(ИмяМетодаБезПрефикса) - ДлинаВместо);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ТелоМетода = ?(Директива = "", "", "&" + Директива + Символы.ПС) +
|
||||
СокрЛП(НайденнаяСтрока.Группы[0].Значение);
|
||||
|
||||
Результат.Добавить(СтандартнаяСтруктураРезультата(ТипМетода, ИмяМетода, ИмяМетодаБезПрефикса, ТелоМетода));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтандартнаяСтруктураРезультата(ТипМетода, ИмяМетода, ИмяМетодаБезПрефикса, ТелоМетода)
|
||||
|
||||
Результат = Новый Структура();
|
||||
Результат.Вставить("ТипМетода", ТипМетода);
|
||||
Результат.Вставить("ИмяМетода", ИмяМетода);
|
||||
Результат.Вставить("ИмяМетодаБезПрефикса", ИмяМетодаБезПрефикса);
|
||||
Результат.Вставить("ТелоМетода", ТелоМетода);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьДирективыМетодов(ФайлМодуля)
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
|
||||
ФайлОписания = Новый ТекстовыйДокумент;
|
||||
ФайлОписания.Прочитать(ФайлМодуля.ПолноеИмя, КодировкаТекста.UTF8NoBOM);
|
||||
ТекстОписания = ФайлОписания.ПолучитьТекст();
|
||||
|
||||
ПаттернМетода = "^[\s]*?\&(Перед|Вместо|После)[\s]*\(\""([\w\W]*?)\""\)*\s(?:Процедура|Функция)[\s]*([\w\W]*?)[\(]";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПаттернМетода);
|
||||
Регексп.Многострочный = Истина;
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
Результат.Вставить(
|
||||
НайденнаяСтрока.Группы[3].Значение,
|
||||
Новый Структура("Директива, ИмяМетода",
|
||||
НайденнаяСтрока.Группы[1].Значение,
|
||||
НайденнаяСтрока.Группы[2].Значение
|
||||
)
|
||||
);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает массив структур с описанием переопределенных объектов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - массив структур с описанием предопределенных объектов
|
||||
//
|
||||
Функция ПолучитьПереопределенныеОбъекты() Экспорт
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ТипОбъектов Из ТипыОбъектов.ОбъектыКонфигурации Цикл
|
||||
|
||||
ФайлыОбъектов = ПолучитьФайлыОбъектов(ТипОбъектов);
|
||||
|
||||
РезультатОбъекты = Новый Массив();
|
||||
|
||||
Для Каждого ФайлОбъекта Из ФайлыОбъектов Цикл
|
||||
|
||||
ДобавитьПереопределенныйОбъект(ТипОбъектов, ФайлОбъекта, РезультатОбъекты);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Результат.Добавить(Новый Структура("Тип, Объекты", ТипОбъектов, РезультатОбъекты));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получает методы конфигурации и сопоставляет с методами расширения для переопределенных объектов
|
||||
//
|
||||
// Параметры:
|
||||
// ФайлМодуляРасширения - Файл - Файл модуля расширения
|
||||
// ФайлМодуля - Структура - Свойства файла модуля, включая его методы, сюда добавляется сопостовление методов
|
||||
// ОсновнаяКонфигурацияПуть - Строка - Расположение основной конфигурации
|
||||
// ИмяКонфигурации - Строка - Имя (роль) конфигурации (например: "Родитель" или "Поставка")
|
||||
//
|
||||
Процедура ПрочитатьМетодыОсновнойКонфигурации(
|
||||
ФайлМодуляРасширения,
|
||||
ФайлМодуля,
|
||||
ОсновнаяКонфигурацияПуть,
|
||||
ИмяКонфигурации) Экспорт
|
||||
|
||||
ИмяФайлаМодуляКонфигурации = "";
|
||||
Если ФайлМодуля.Свойство("ИмяПереопределяемого", ИмяФайлаМодуляКонфигурации) Тогда
|
||||
ИмяФайлаМодуляКонфигурации = ОбъединитьПути(ОсновнаяКонфигурацияПуть, ИмяФайлаМодуляКонфигурации);
|
||||
Иначе
|
||||
ИмяФайлаМодуляКонфигурации = ОбъединитьПути(
|
||||
ОсновнаяКонфигурацияПуть,
|
||||
Сред(ФайлМодуляРасширения.ПолноеИмя, СтрДлина(РасширениеПуть) + 1)
|
||||
);
|
||||
КонецЕсли;
|
||||
|
||||
ФайлМодуляКонфигурации = Новый Файл(ИмяФайлаМодуляКонфигурации);
|
||||
|
||||
ФайлМодуля.Вставить(ИмяКонфигурации, ФайлМодуляКонфигурации.Существует());
|
||||
|
||||
Если ФайлМодуля[ИмяКонфигурации] Тогда
|
||||
|
||||
СопоставитьМетодыРасширенияИКонфигурации(ПрочитатьМетодыМодуля(ФайлМодуляКонфигурации), ФайлМодуля, ИмяКонфигурации);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Устанавливает значение переменной "РасширениеПуть"
|
||||
//
|
||||
Процедура УстановитьПуть(Путь) Экспорт
|
||||
|
||||
РасширениеПуть = Путь;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Получает файлы объектов расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - массив файлов XML
|
||||
//
|
||||
Функция ПолучитьФайлыОбъектов(ТипОбъектов) Экспорт
|
||||
|
||||
КаталогОбъектов = ОбъединитьПути(РасширениеПуть, ТипОбъектов);
|
||||
Файлы = НайтиФайлы(КаталогОбъектов, "*.xml");
|
||||
|
||||
Возврат Файлы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получает файлы модулей расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив - массив файлов BSL
|
||||
//
|
||||
Функция ПолучитьФайлыМодулей(ТипОбъектов, ИмяОбъекта) Экспорт
|
||||
|
||||
КаталогОбъектов = ОбъединитьПути(РасширениеПуть, ТипОбъектов, ИмяОбъекта);
|
||||
Файлы = НайтиФайлы(КаталогОбъектов, "*.bsl", Истина);
|
||||
|
||||
Возврат Файлы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПрочитатьНаследованиеОбъекта(ФайлОбъекта)
|
||||
|
||||
Результат = Новый Структура("Наследование, Значение", Ложь, "");
|
||||
|
||||
ФайлОписания = Новый ТекстовыйДокумент;
|
||||
ФайлОписания.Прочитать(ФайлОбъекта.ПолноеИмя, КодировкаТекста.UTF8NoBOM);
|
||||
ТекстОписания = ФайлОписания.ПолучитьТекст();
|
||||
|
||||
ПаттернНаследование = "(?:<ObjectBelonging>Adopted<\/ObjectBelonging>|<Comment>Adopted.([\w\W]*?)<\/Comment>)";
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПаттернНаследование);
|
||||
Регексп.Многострочный = Истина;
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
Результат.Наследование = Истина;
|
||||
Результат.Значение = НайденнаяСтрока.Группы[1].Значение;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СопоставитьМетодыРасширенияИКонфигурации(МетодыМодуляКонфигурации, ФайлМодуля, ИмяКонфигурации)
|
||||
|
||||
Для каждого Метод Из МетодыМодуляКонфигурации Цикл // обход найденных методов
|
||||
|
||||
Для каждого МетодРасширения Из ФайлМодуля.Методы Цикл // обход существующих переопределенных методов
|
||||
|
||||
Если Метод.ИмяМетодаБезПрефикса = МетодРасширения.ИмяМетодаБезПрефикса Тогда
|
||||
|
||||
МетодРасширения.Вставить(ИмяКонфигурации, Метод.ТелоМетода);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Добавлят в массив объект конфигурации, если он переопределен. Объект может состоять из нескольких файлов.
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъектов - Строка - Тип объекта конфиурации (Catalogs, Documents и т.д.)
|
||||
// ФайлОбъекта - Файл - XML файл объекта конфигурации
|
||||
// РезультатОбъекты - Массив - в массив добавляются структуры с описанием файлов объекта
|
||||
//
|
||||
Процедура ДобавитьПереопределенныйОбъект(ТипОбъектов, ФайлОбъекта, РезультатОбъекты)
|
||||
|
||||
Переопределение = ПрочитатьНаследованиеОбъекта(ФайлОбъекта);
|
||||
Если Переопределение.Наследование Тогда
|
||||
|
||||
ДобОбъект = Новый Структура("Тип, Имя", ТипОбъектов, ФайлОбъекта.ИмяБезРасширения);
|
||||
|
||||
ФайлыМодулей = ПолучитьФайлыМодулей(ДобОбъект.Тип, ДобОбъект.Имя);
|
||||
Если ФайлыМодулей.Количество() Тогда
|
||||
|
||||
МассивФайлов = Новый Массив;
|
||||
Для Каждого ФайлМодуля Из ФайлыМодулей Цикл
|
||||
|
||||
ФайлСтруктура = Новый Структура("ФайлМодуля", ФайлМодуля);
|
||||
Если Не ПустаяСтрока(Переопределение.Значение) И ФайлМодуля.Имя = "ObjectModule.bsl" Тогда
|
||||
ФайлСтруктура.Вставить("ИмяПереопределяемого", Переопределение.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
МассивФайлов.Добавить(ФайлСтруктура);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ДобОбъект.Вставить("Модули", МассивФайлов);
|
||||
РезультатОбъекты.Добавить(ДобОбъект);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура ПриСозданииОбъекта(Путь = Неопределено)
|
||||
|
||||
УстановитьПуть(Путь);
|
||||
|
||||
КонецПроцедуры
|
265
src/Модули/АнализаторОбъектов.os
Normal file
265
src/Модули/АнализаторОбъектов.os
Normal file
@ -0,0 +1,265 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль получения результата сравнения объектов основной конфы и поставки
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Сравнивает три конфигурации - Родитель, Поставка и Расширение
|
||||
//
|
||||
// Параметры:
|
||||
// РодительПуть - Строка - Каталог конфигурации Родитель
|
||||
// ПоставкаПуть - Строка - Каталог конфигурации Поставка
|
||||
// Лог - log-manager - Экземпляр класса логирования
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - результат сравнения
|
||||
//
|
||||
Функция ВыполнитьСравнениеОбъектов(РодительПуть, ПоставкаПуть, Лог) Экспорт
|
||||
|
||||
РезультатОписание = Новый Структура();
|
||||
|
||||
РезультатОписание.Вставить("РодительПуть", РодительПуть);
|
||||
РезультатОписание.Вставить("ПоставкаПуть", ПоставкаПуть);
|
||||
|
||||
РезультатОписание.Вставить("Типы", АнализГруппОбъектов(
|
||||
"AccountingRegisters
|
||||
|AccumulationRegisters
|
||||
|CalculationRegisters
|
||||
|Catalogs
|
||||
|ChartsOfCalculationTypes
|
||||
|ChartsOfCharacteristicTypes
|
||||
|Documents
|
||||
|InformationRegisters", РезультатОписание));
|
||||
|
||||
Возврат РезультатОписание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция АнализГруппОбъектов(ГруппыОбъектов, Описание)
|
||||
|
||||
МассивРезультат = Новый Массив();
|
||||
МассивГрупп = СтрРазделить(ГруппыОбъектов, Символы.ПС);
|
||||
|
||||
Для Каждого ГруппаОбъектов Из МассивГрупп Цикл
|
||||
|
||||
АнализОбъектов(СокрЛП(ГруппаОбъектов), МассивРезультат, Описание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура АнализОбъектов(ГруппаОбъектов, МассивРезультат, Описание)
|
||||
|
||||
Файлы = ПолучитьФайлыОбъектов(ГруппаОбъектов, Описание);
|
||||
|
||||
Для Каждого Файл Из Файлы Цикл
|
||||
|
||||
ДанныеОбъектаПроекта = АнализФайлаОМД(Файл, Описание.РодительПуть);
|
||||
ДанныеОбъектаПоставки = Неопределено;
|
||||
|
||||
ИмяФайлаПоставки = ОбъединитьПути(Описание.ПоставкаПуть, ДанныеОбъектаПроекта.ОтносительныйПуть);
|
||||
ФайлЧтение = Новый Файл(ИмяФайлаПоставки);
|
||||
Если ФайлЧтение.Существует() Тогда
|
||||
|
||||
ДанныеОбъектаПоставки = АнализФайлаОМД(ФайлЧтение, Описание.ПоставкаПуть);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// Сравнение
|
||||
Для Каждого ПолеПроекта Из ДанныеОбъектаПроекта.Поля Цикл
|
||||
|
||||
Если ДанныеОбъектаПоставки <> Неопределено Тогда
|
||||
|
||||
// поиск в поставке
|
||||
ПолеЕсть = ПоискВПоставке(ПолеПроекта, ДанныеОбъектаПоставки.Поля, МассивРезультат, ДанныеОбъектаПроекта);
|
||||
|
||||
Если Не ПолеЕсть Тогда
|
||||
МассивРезультат.Добавить(
|
||||
ДанныеОбъектаПроекта.ОтносительныйПуть + " : " +
|
||||
ПолеПроекта.ИмяПоля +
|
||||
" : Удалено");
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
МассивРезультат.Добавить(
|
||||
ДанныеОбъектаПроекта.ОтносительныйПуть + " : " +
|
||||
" : Удалено в поставке");
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПоискВПоставке(ПолеПроекта, ПоляПоставки, МассивРезультат, ДанныеОбъектаПроекта)
|
||||
Результат = Ложь;
|
||||
Для Каждого ПолеПоставки Из ПоляПоставки Цикл
|
||||
|
||||
Если ПолеПроекта.ИмяПоля = ПолеПоставки.ИмяПоля Тогда
|
||||
|
||||
Если ПолеПроекта.Тип <> ПолеПоставки.Тип Тогда
|
||||
|
||||
МассивРезультат.Добавить(
|
||||
ДанныеОбъектаПроекта.ОтносительныйПуть + " : " +
|
||||
ПолеПроекта.ИмяПоля +
|
||||
" : Изменен тип");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Истина;
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция АнализФайлаОМД(ФайлОбъекта, ПутьПроекта)
|
||||
|
||||
//////////////////////////////////////////
|
||||
ОписаниеОбъекта = Новый Структура;
|
||||
ОписаниеОбъекта.Вставить("ПолноеИмя", ФайлОбъекта.ПолноеИмя);
|
||||
ОписаниеОбъекта.Вставить("ИмяОбъекта", ФайлОбъекта.ИмяБезРасширения);
|
||||
ОписаниеОбъекта.Вставить("ОтносительныйПуть", ПолучитьОтносительныйПуть(ПутьПроекта, ФайлОбъекта.ПолноеИмя));
|
||||
//////////////////////////////////////////
|
||||
|
||||
ТекстОписания = МенеджерПриложения.ПрочитатьФайл(ФайлОбъекта);
|
||||
|
||||
ПаттернОсновной = "<MetaDataObject[\w\W]*?<Name>([\w\W]*?)<\/Name>[\w\W]*?(?:<TabularSection|<\/MetaDataObject>)";
|
||||
|
||||
ПаттернТЧ = "<TabularSection[\w\W]*?<Name>([\w\W]*?)<\/Name>[\w\W]*?<\/TabularSection>";
|
||||
|
||||
АнализОписанияОбъекта(ТекстОписания, ПаттернОсновной, "", ОписаниеОбъекта);
|
||||
АнализОписанияОбъекта(ТекстОписания, ПаттернТЧ, "ТабличнаяЧасть.", ОписаниеОбъекта);
|
||||
|
||||
Возврат ОписаниеОбъекта;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура АнализОписанияОбъекта(ТекстОписания, Паттерн, Префикс, ОписаниеОбъекта)
|
||||
|
||||
Регексп = МенеджерПриложения.ПолучитьРегексп(Паттерн);
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
АнализРеквизитов(
|
||||
НайденнаяСтрока.Группы[0].Значение,
|
||||
ОписаниеОбъекта,
|
||||
?(Префикс = "", "", Префикс + НайденнаяСтрока.Группы[1].Значение + "."));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура АнализРеквизитов(ТекстОписания, ОписаниеОбъекта, ПрефиксПоля = "")
|
||||
|
||||
СтрокаВидыПолей = "Dimension;Resource;Attribute";
|
||||
|
||||
ВидыПолей = СтрРазделить(СтрокаВидыПолей, ";");
|
||||
|
||||
ПаттернПоля = "<%1[\w\W]*?<Name>([\w\W]*?)<\/Name>[\w\W]*?<\/%1>";
|
||||
|
||||
ИндексОбъекта = 0;
|
||||
|
||||
Если Не ОписаниеОбъекта.Свойство("Поля") Тогда
|
||||
ОписаниеОбъекта.Вставить("Поля", Новый Массив());
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ВидПоля Из ВидыПолей Цикл
|
||||
|
||||
Регексп = МенеджерПриложения.ПолучитьРегексп(СтрШаблон(ПаттернПоля, ВидПоля));
|
||||
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ТекстОписания);
|
||||
|
||||
// цикл по измерениям/ресурсам/реквизитам
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
ОписаниеПоля = Новый Структура;
|
||||
ОписаниеПоля.Вставить("ВидПоля", ВидПоля);
|
||||
ОписаниеПоля.Вставить("ИмяПоля", ПрефиксПоля + НайденнаяСтрока.Группы[1].Значение);
|
||||
ОписаниеПоля.Вставить("ТекстОписание", НайденнаяСтрока.Группы[0].Значение);
|
||||
ОписаниеПоля.Вставить("Тип", АнализТипаПоля(ОписаниеОбъекта, ОписаниеПоля));
|
||||
|
||||
ОписаниеОбъекта.Поля.Добавить(ОписаниеПоля);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция АнализТипаПоля(ОписаниеОбъекта, ОписаниеПоля)
|
||||
|
||||
Результат = 0;
|
||||
|
||||
ПаттернТипа =
|
||||
"<Properties>" +
|
||||
"[\w\W]*?<Type>([\w\W]*?)<\/Type>" +
|
||||
"[\w\W]*?<\/Properties>";
|
||||
ПаттернСоставаТипа =
|
||||
"(?:<v8:Type>|<v8:TypeSet>)([\w\W]*?)<\/v8:Type";
|
||||
|
||||
Регексп = МенеджерПриложения.ПолучитьРегексп(ПаттернТипа);
|
||||
НайденныеСтроки = Регексп.НайтиСовпадения(ОписаниеПоля.ТекстОписание);
|
||||
|
||||
ОписаниеТипа = "";
|
||||
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
|
||||
|
||||
РегекспТипа = МенеджерПриложения.ПолучитьРегексп(ПаттернСоставаТипа);
|
||||
|
||||
СтрокиСоставаТипа = РегекспТипа.НайтиСовпадения(НайденнаяСтрока.Группы[1].Значение);
|
||||
|
||||
Для Каждого СтрокаСоставаТипа Из СтрокиСоставаТипа Цикл
|
||||
|
||||
//////////////////////////////////////////
|
||||
ОписаниеТипа = ОписаниеТипа +
|
||||
?(ОписаниеТипа = "", "", Символы.ПС) +
|
||||
СтрокаСоставаТипа.Группы[1].Значение;
|
||||
//////////////////////////////////////////
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ОписаниеТипа;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьФайлыОбъектов(ТипОбъектов, Описание)
|
||||
|
||||
КаталогОбъектов = ОбъединитьПути(Описание.РодительПуть, ТипОбъектов);
|
||||
|
||||
Возврат НайтиФайлы(КаталогОбъектов, "*.xml");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОтносительныйПуть(РасположениеПроекта, ПолноеИмяФайла)
|
||||
|
||||
СоставРП = СтрРазделить(РасположениеПроекта, ПолучитьРазделительПути(), Ложь);
|
||||
СоставПуть = СтрРазделить(ПолноеИмяФайла, ПолучитьРазделительПути(), Ложь);
|
||||
|
||||
Результат = "";
|
||||
|
||||
Для Сч = СоставРП.Количество() По СоставПуть.ВГраница() Цикл
|
||||
|
||||
Результат = ОбъединитьПути(Результат, СоставПуть[Сч]);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
390
src/Модули/ГенераторОтчетаHTML.os
Normal file
390
src/Модули/ГенераторОтчетаHTML.os
Normal file
@ -0,0 +1,390 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Модуль генератора отчета в формате HTML
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем РасширениеПуть;
|
||||
Перем РодительПуть;
|
||||
Перем ПоставкаПуть;
|
||||
|
||||
Перем Лог;
|
||||
|
||||
// Сохраняет результат в формате HTML
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатСравнения - Структура - Результат сравнения конфигураций и расширения
|
||||
// ИмяФайлаРезультата - Строка - Полное имя файла, в который будет записан результат сравнения
|
||||
// Лог - log-manager - Экземпляр класса логирования
|
||||
//
|
||||
Процедура СохранитьРезультат(РезультатСравнения, ИмяФайлаРезультата, ПараметрЛог) Экспорт
|
||||
|
||||
РодительПуть = РезультатСравнения.РодительПуть;
|
||||
ПоставкаПуть = РезультатСравнения.ПоставкаПуть;
|
||||
РасширениеПуть = РезультатСравнения.РасширениеПуть;
|
||||
|
||||
Лог = ПараметрЛог;
|
||||
|
||||
СоответствиеШаблонов = Новый Соответствие();
|
||||
СоответствиеШаблонов.Вставить("Шаблон", ТекстШаблон());
|
||||
СоответствиеШаблонов.Вставить("Блок", ТекстБлок());
|
||||
СоответствиеШаблонов.Вставить("Таблица", ТекстТаблица());
|
||||
|
||||
НаследованиеБлоков = Новый Соответствие();
|
||||
НаследованиеБлоков.Вставить("Корень", Новый Структура("Блок, Объекты", "Тип", "Объекты"));
|
||||
НаследованиеБлоков.Вставить("Тип", Новый Структура("Блок, Объекты", "Объект", "Модули"));
|
||||
НаследованиеБлоков.Вставить("Объект", Новый Структура("Блок, Объекты", "Модуль", "Методы"));
|
||||
|
||||
Лог.Информация("Начало формирования отчета...");
|
||||
|
||||
Попытка
|
||||
ТекстРезультат = ВывестиБлок(РезультатСравнения.Типы, "Корень", СоответствиеШаблонов, НаследованиеБлоков);
|
||||
Исключение
|
||||
Лог.Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
Лог.Информация("Сохранение отчета...");
|
||||
ФайлРезультат = Новый ТекстовыйДокумент;
|
||||
ФайлРезультат.УстановитьТекст(ТекстРезультат);
|
||||
ФайлРезультат.Записать(ИмяФайлаРезультата, КодировкаТекста.UTF8NoBOM);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ВывестиБлок(ВходящиеДанные, ИмяБлока, СоответствиеШаблонов, НаследованиеБлоков)
|
||||
|
||||
// ИмяБлока
|
||||
// - Корень (справочники, документы и т.д.)
|
||||
// - Тип - объекты одного типа (Спр1, Док1, ...)
|
||||
// - Объект - модули
|
||||
// - Модуль
|
||||
// - Метод
|
||||
|
||||
ТекстРезультат = "";
|
||||
ТекстОтчет = "";
|
||||
|
||||
Если СтрНайти("Корень;Тип;Объект", ИмяБлока) Тогда
|
||||
|
||||
Для каждого ОбъектСравнения Из ВходящиеДанные Цикл
|
||||
|
||||
ТекстОбъекты = ВывестиБлок(ОбъектСравнения[НаследованиеБлоков[ИмяБлока].Объекты],
|
||||
НаследованиеБлоков[ИмяБлока].Блок, СоответствиеШаблонов, НаследованиеБлоков);
|
||||
|
||||
Если Не ПустаяСтрока(ТекстОбъекты) Тогда
|
||||
ТекстОтчет = ТекстОтчет + СтрШаблон(СоответствиеШаблонов["Блок"],
|
||||
ПредставлениеОбъекта(ИмяБлока, ОбъектСравнения), ТекстОбъекты);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстРезультат = ?(ИмяБлока = "Корень",
|
||||
СтрШаблон(СоответствиеШаблонов["Шаблон"], ТекстCSS(), ТекстПодпись(), ТекстОтчет),
|
||||
ТекстОтчет);
|
||||
|
||||
ИначеЕсли ИмяБлока = "Модуль" Тогда
|
||||
|
||||
Для каждого Метод Из ВходящиеДанные Цикл
|
||||
|
||||
ТелоРодителя = "";
|
||||
Метод.Свойство("Родитель", ТелоРодителя);
|
||||
ТелоПоставки = "";
|
||||
Метод.Свойство("Поставка", ТелоПоставки);
|
||||
ТелоРасширения = Метод.ТелоМетода;
|
||||
|
||||
// Если Не ПустаяСтрока(ТелоРодителя) И Не ПустаяСтрока(ТелоПоставки) Тогда // вставка для отладки
|
||||
Если ТелоРодителя <> ТелоПоставки Тогда
|
||||
|
||||
СравнитьДваТекста(ТелоРодителя, ТелоПоставки);
|
||||
|
||||
ТекстОтчет = ТекстОтчет +
|
||||
СтрШаблон(СоответствиеШаблонов["Блок"], Метод.ТипМетода + " <b>" + Метод.ИмяМетодаБезПрефикса + "</b>",
|
||||
СтрШаблон(СоответствиеШаблонов["Таблица"], ТелоРодителя, ТелоПоставки, ТелоРасширения));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстРезультат = ТекстОтчет;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПредставлениеОбъекта(ИмяБлока, ОбъектСравнения)
|
||||
|
||||
Если ИмяБлока = "Корень" Тогда
|
||||
|
||||
ТекстРезультат = СтрШаблон("<b><span style=""color: DarkSlateGray;"">%1</span></b>", ОбъектСравнения.Тип);
|
||||
|
||||
ИначеЕсли ИмяБлока = "Тип" Тогда
|
||||
|
||||
ТекстРезультат = СтрШаблон("<span style=""color: SteelBlue;"">%1</span>", ОбъектСравнения.Имя);
|
||||
|
||||
ИначеЕсли ИмяБлока = "Объект" Тогда
|
||||
|
||||
ТекстРезультат = СтрЗаменить(ОбъектСравнения.ФайлМодуля.ПолноеИмя, РасширениеПуть, "");
|
||||
Если ОбъектСравнения.Свойство("ИмяПереопределяемого") Тогда
|
||||
ТекстРезультат = ТекстРезультат + СтрШаблон(
|
||||
" (<span style=""color: SeaGreen;"">%1</span>)",
|
||||
ОбъектСравнения.ИмяПереопределяемого);
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстРезультат = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ТекстПодпись()
|
||||
|
||||
Возврат "Основная конфигурация: " + РодительПуть + "
|
||||
|Поставка конфигурации: " + ПоставкаПуть + "
|
||||
|Расширение: " + РасширениеПуть + "
|
||||
|Дата формирования: " + ТекущаяДата();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстШаблон()
|
||||
|
||||
Возврат
|
||||
"<!DOCTYPE HTML>
|
||||
|<HTML>
|
||||
| <HEAD>
|
||||
| <META content=""text/html; charset=utf-8"" http-equiv=Content-Type text html;>
|
||||
| %1
|
||||
| </HEAD>
|
||||
| <BODY>
|
||||
| <h3><b>Анализ расширения</b></h3>
|
||||
| <pre>%2</pre>
|
||||
| <P></P>
|
||||
| <div class=""treeHTML"">
|
||||
| %3
|
||||
| </div>
|
||||
| <P> </P>
|
||||
| </BODY>
|
||||
|</HTML>";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстCSS()
|
||||
|
||||
Возврат "
|
||||
|<STYLE>
|
||||
| TABLE {
|
||||
| BORDER: black 1px solid;
|
||||
| PADDING: 0px;
|
||||
| border-collapse: collapse;
|
||||
| width: 100%;
|
||||
| table-layout: fixed;
|
||||
| }
|
||||
|
||||
| TH {
|
||||
| TEXT-ALIGN: center;
|
||||
| BORDER: black 1px solid;
|
||||
| font-family: 'Courier New', Courier, monospace;
|
||||
| }
|
||||
|
||||
| TD {
|
||||
| /* width: 33%; */
|
||||
| vertical-align: top;
|
||||
| BORDER: black 1px solid;
|
||||
| }
|
||||
|
||||
| PRE {
|
||||
| font-family: 'Courier New', Courier, monospace;
|
||||
| font-size: smaller;
|
||||
| }
|
||||
|
||||
| .treeHTML {
|
||||
| line-height: normal;
|
||||
| }
|
||||
|
||||
| .treeHTML details {
|
||||
| display: block;
|
||||
| }
|
||||
|
||||
| .treeHTML div {
|
||||
| font-size: 3;
|
||||
| position: relative;
|
||||
| margin: 0 0 0 .5em;
|
||||
| padding: 0 0 0 1.2em;
|
||||
| }
|
||||
|
||||
| .treeHTML div:not(:last-child) {
|
||||
| border-left: 1px solid #ccc;
|
||||
| }
|
||||
|
||||
| .treeHTML div:before {
|
||||
| position: absolute;
|
||||
| top: 0;
|
||||
| left: 0;
|
||||
| width: 1.1em;
|
||||
| height: .5em;
|
||||
| border-bottom: 1px solid #ccc;
|
||||
| }
|
||||
|
||||
| .treeHTML div:last-child:before {
|
||||
| border-left: 1px solid #ccc;
|
||||
| }
|
||||
|
||||
| .treeHTML DIV.DELPARENT:before {
|
||||
| content: ""-"";
|
||||
| position: static;
|
||||
| content: none;
|
||||
| width: 0;
|
||||
| height: 0;
|
||||
| border-bottom: none;
|
||||
| }
|
||||
|
||||
| .treeHTML DIV.method {
|
||||
| width: 100%;
|
||||
| height: 500px;
|
||||
| font-family: 'Courier New', Courier, monospace;
|
||||
| font-size: small;
|
||||
| overflow: auto;
|
||||
| margin: 0;
|
||||
| padding: 0;
|
||||
| white-space: pre;
|
||||
| }
|
||||
|
||||
| .treeHTML DIV.method:before {
|
||||
| /* position: static; */
|
||||
| content: none;
|
||||
| width: 0;
|
||||
| height: 0;
|
||||
| border-bottom: none;
|
||||
| }
|
||||
|
||||
| .treeHTML DIV.DELPARENT {
|
||||
| background: RosyBrown;
|
||||
| }
|
||||
|
||||
| .treeHTML summary {
|
||||
| font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||
| top: 0;
|
||||
| left: 0;
|
||||
| cursor: pointer;
|
||||
| }
|
||||
|
||||
| .treeHTML details[open] summary {
|
||||
| outline: none;
|
||||
| }
|
||||
|</STYLE>
|
||||
|";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстБлок()
|
||||
|
||||
Возврат "
|
||||
| <details>
|
||||
| <summary>%1</summary>
|
||||
| <div>
|
||||
| %2
|
||||
| </div>
|
||||
| </details>
|
||||
|";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТекстТаблица()
|
||||
|
||||
Возврат "
|
||||
|<table>
|
||||
| <tbody>
|
||||
| <tr>
|
||||
| <th>Основная конфигурация</th>
|
||||
| <th>Поставка</th>
|
||||
| <th>Расширение</th>
|
||||
| </tr>
|
||||
| <tr>
|
||||
| <td>
|
||||
| <div class=""method"" contenteditable=""true"" readonly=""readonly"">%1</div>
|
||||
| </td>
|
||||
| <td>
|
||||
| <div class=""method"" contenteditable=""true"" readonly=""readonly"">%2</div>
|
||||
| </td>
|
||||
| <td>
|
||||
| <div class=""method"" contenteditable=""true"" readonly=""readonly"">%3</div>
|
||||
| </td>
|
||||
| </tr>
|
||||
| </tbody>
|
||||
|</table>
|
||||
|";
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция НайтиСтрокуДалее(СтрокаПоиска, Масс, Знач Старт)
|
||||
|
||||
Пока Старт < Масс.Количество() Цикл
|
||||
|
||||
Если СокрЛП(СтрокаПоиска) = СокрЛП(Масс[Старт]) Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Старт = Старт + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СравнитьДваТекста(Текст1, Текст2)
|
||||
|
||||
Масс1 = СтрРазделить(Текст1, Символы.ПС);
|
||||
Масс2 = СтрРазделить(Текст2, Символы.ПС);
|
||||
|
||||
Сч = 0;
|
||||
|
||||
Пока Сч < Макс(Масс1.Количество(), Масс2.Количество()) Цикл
|
||||
|
||||
Если Сч > Масс1.ВГраница() Тогда // В родительском массиве кончились строки
|
||||
Масс2[Сч] = ДобавитьТегСтрокаДобавлена(Масс2[Сч]);
|
||||
ИначеЕсли Сч > Масс2.ВГраница() Тогда // В массиве наследнике кончились строки
|
||||
Масс1[Сч] = ДобавитьТегСтрокаУдалена(Масс1[Сч]);
|
||||
ИначеЕсли СокрЛП(Масс1[Сч]) <> СокрЛП(Масс2[Сч]) Тогда // строки не равны
|
||||
|
||||
Если НайтиСтрокуДалее(Масс2[Сч], Масс1, Сч) Тогда // ищем в первом массиве строку второго
|
||||
Масс2.Вставить(Сч, "");
|
||||
Масс1[Сч] = ДобавитьТегСтрокаУдалена(Масс1[Сч]);
|
||||
Иначе
|
||||
Масс1.Вставить(Сч, "");
|
||||
Масс2[Сч] = ДобавитьТегСтрокаДобавлена(Масс2[Сч]);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Сч = Сч + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Текст1 = СтрСоединить(Масс1, Символы.ПС);
|
||||
Текст2 = СтрСоединить(Масс2, Символы.ПС);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ДобавитьТегСтрокаУдалена(СтрокаТекста)
|
||||
|
||||
Возврат СтрШаблон("<span style=""background:LightPink"">%1</span>", СтрокаТекста);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьТегСтрокаДобавлена(СтрокаТекста)
|
||||
|
||||
Возврат СтрШаблон("<span style=""background:PaleGreen"">%1</span>", СтрокаТекста);
|
||||
|
||||
КонецФункции
|
310
src/Модули/МенеджерПриложения.os
Normal file
310
src/Модули/МенеджерПриложения.os
Normal file
@ -0,0 +1,310 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с набором методов работы с командами приложения
|
||||
//
|
||||
// В большинстве проектов изменять данный модуль не требуется
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать logos
|
||||
#Использовать cmdline
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем Лог;
|
||||
|
||||
Перем ПарсерКоманд;
|
||||
Перем ИсполнителиКоманд;
|
||||
Перем ОбъектНастроек;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ОТКРЫТЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Инициализирует и настраивает приложение
|
||||
//
|
||||
// Параметры:
|
||||
// Настройка - Модуль - Модуль, в котором определены настройки приложения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция Инициализировать(Знач МенеджерНастроек) Экспорт
|
||||
|
||||
// Служебные переменные
|
||||
ПарсерКоманд = Новый ПарсерАргументовКоманднойСтроки();
|
||||
ИсполнителиКоманд = Новый Соответствие;
|
||||
ОбъектНастроек = МенеджерНастроек;
|
||||
|
||||
// Логирование
|
||||
Лог = Логирование.ПолучитьЛог(ОбъектНастроек.ИмяЛогаСистемы());
|
||||
Лог.УстановитьРаскладку(ОбъектНастроек);
|
||||
|
||||
// Инициализация команд
|
||||
ОбъектНастроек.НастроитьКомандыПриложения(ЭтотОбъект);
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет команду в приложение
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяКоманды - Строка - Имя команды
|
||||
// КлассРеализации - Строка - Имя файла класса, в котором реализована команда
|
||||
// Описаниекоманды - Строка - краткое описание назначения команды
|
||||
//
|
||||
Процедура ДобавитьКоманду(Знач ИмяКоманды, Знач КлассРеализации, Знач ОписаниеКоманды) Экспорт
|
||||
|
||||
Попытка
|
||||
РеализацияКоманды = Новый(КлассРеализации);
|
||||
|
||||
Команда = ПарсерКоманд.ОписаниеКоманды(ИмяКоманды, ОписаниеКоманды);
|
||||
ПарсерКоманд.ДобавитьКоманду(Команда);
|
||||
|
||||
РеализацияКоманды.НастроитьКоманду(Команда, ПарсерКоманд);
|
||||
|
||||
ИсполнителиКоманд.Вставить(ИмяКоманды, РеализацияКоманды);
|
||||
Исключение
|
||||
ЗавершитьРаботуПриложенияСОшибкой(СтрШаблон("Не удалось инициализировать команду '%1' для класса '%2' по причине:
|
||||
|%3", ИмяКоманды, КлассРеализации, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Аварийно завершает работу приложения с ошибкой
|
||||
//
|
||||
// Параметры:
|
||||
// Сообщение - Строка - Сообщение, которое будет выведено пользователю перед завершением
|
||||
// КодВозврата (не обязательный) - Число - Код возврата с которым будет закрыто приложение
|
||||
// Значение по умолчанию: "ОшибкаВремениВыполнения" -- 1
|
||||
//
|
||||
Процедура ЗавершитьРаботуПриложенияСОшибкой(Знач Сообщение, Знач КодВозврата = Неопределено) Экспорт
|
||||
|
||||
Если КодВозврата = Неопределено Тогда
|
||||
КодВозврата = РезультатыКоманд().ОшибкаВремениВыполнения;
|
||||
КонецЕсли;
|
||||
|
||||
Лог.КритичнаяОшибка(Сообщение);
|
||||
|
||||
ЗавершитьРаботу(КодВозврата);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Завершает работу приложения
|
||||
//
|
||||
// Параметры:
|
||||
// КодВозврата (не обязательный) - Число - Код возврата с которым будет закрыто приложение
|
||||
// Значение по умолчанию: "Успех" -- 0
|
||||
//
|
||||
Процедура ЗавершитьРаботуПриложения(Знач КодВозврата = Неопределено) Экспорт
|
||||
|
||||
Если КодВозврата = Неопределено Тогда
|
||||
КодВозврата = РезультатыКоманд().Успех;
|
||||
КонецЕсли;
|
||||
|
||||
ЗавершитьРаботу(КодВозврата);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Осуществляет запуск приложения на выполнение
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Число - Код возврата выполнения команды приложения
|
||||
//
|
||||
Функция ЗапуститьВыполнение() Экспорт
|
||||
|
||||
Попытка
|
||||
ПараметрыЗапуска = ПарсерКоманд.Разобрать(АргументыКоманднойСтроки);
|
||||
Исключение
|
||||
Лог.Отладка(ОписаниеОшибки());
|
||||
|
||||
Лог.Ошибка("Не удалось определить требуемое действие.");
|
||||
ВывестиСправкуПоКомандам();
|
||||
|
||||
Возврат РезультатыКоманд().НеверныеПараметры;
|
||||
КонецПопытки;
|
||||
|
||||
Команда = "";
|
||||
ЗначенияПараметров = Неопределено;
|
||||
|
||||
Если ПараметрыЗапуска = Неопределено ИЛИ ПараметрыЗапуска.Количество() = 0 Тогда
|
||||
|
||||
ВывестиВерсию();
|
||||
ВывестиСправкуПоКомандам();
|
||||
|
||||
Возврат РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
ИначеЕсли ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда
|
||||
|
||||
// это команда
|
||||
Команда = ПараметрыЗапуска.Команда;
|
||||
ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров;
|
||||
Лог.Отладка("Выполняю команду продукта %1", Команда);
|
||||
|
||||
ИначеЕсли ЗначениеЗаполнено(ОбъектНастроек.ИмяКомандыПоУмолчанию()) Тогда
|
||||
|
||||
// это команда по-умолчанию
|
||||
Команда = ОбъектНастроек.ИмяКомандыПоУмолчанию();
|
||||
ЗначенияПараметров = ПараметрыЗапуска;
|
||||
Лог.Отладка("Выполняю команду продукта по умолчанию %1", Команда);
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат НекорректныеПараметры();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Команда <> ОбъектНастроек.ИмяКомандыВерсия() Тогда
|
||||
|
||||
ВывестиВерсию();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ВыполнитьКоманду(Команда, ЗначенияПараметров);
|
||||
|
||||
КонецФункции // ЗапуститьВыполнение()
|
||||
|
||||
// Осуществляет запуск на выполнение указанной команды приложения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяКоманды - Строка - Имя команды, которую необходимо запустить
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыКоманды) Экспорт
|
||||
|
||||
Команда = ПолучитьКоманду(ИмяКоманды);
|
||||
КодВозврата = Команда.ВыполнитьКоманду(ПараметрыКоманды, ЭтотОбъект);
|
||||
|
||||
Если КодВозврата = Неопределено Тогда
|
||||
КодВозврата = РезультатыКоманд().Успех;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КодВозврата;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Возвращает лог приложения
|
||||
Функция ПолучитьЛог() Экспорт
|
||||
|
||||
Возврат Лог;
|
||||
|
||||
КонецФункции // ПолучитьЛог
|
||||
|
||||
// Возвращает версию продукта
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ВерсияПродукта();
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
// Возвращает имя продукта
|
||||
Функция ИмяПродукта() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ИмяПродукта();
|
||||
|
||||
КонецФункции // ИмяПродукта
|
||||
|
||||
// Возвращает путь к исполняемому файлу
|
||||
Функция ПутьКИсполняемомуФайлу() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ПутьКИсполняемомуФайлу();
|
||||
|
||||
КонецФункции // ПутьКИсполняемомуФайлу
|
||||
|
||||
// Возвращает путь к каталогу основного скрипта
|
||||
Функция ПутьКРодительскомуКаталогу() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ПутьКРодительскомуКаталогу();
|
||||
|
||||
КонецФункции // ПутьКРодительскомуКаталогу
|
||||
|
||||
// Выводит справку по всем командам приложения
|
||||
Процедура ВывестиСправкуПоКомандам() Экспорт
|
||||
|
||||
ПарсерКоманд.ВывестиСправкуПоКомандам();
|
||||
|
||||
КонецПроцедуры // ВывестиСправкуПоКомандам
|
||||
|
||||
// Выводит справку по указанной команде приложения.
|
||||
Процедура ВывестиСправкуПоКоманде(Знач ИмяКоманды) Экспорт
|
||||
|
||||
ПарсерКоманд.ВывестиСправкуПоКоманде(ИмяКоманды);
|
||||
|
||||
КонецПроцедуры // ВывестиСправкуПоКоманде
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПЕРЕЧИСЛЕНИЯ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Возвращает стандартные коды возврата приложения
|
||||
Функция РезультатыКоманд() Экспорт
|
||||
|
||||
РезультатыКоманд = Новый Структура;
|
||||
РезультатыКоманд.Вставить("Успех", 0);
|
||||
РезультатыКоманд.Вставить("НеверныеПараметры", 5);
|
||||
РезультатыКоманд.Вставить("ОшибкаВремениВыполнения", 1);
|
||||
|
||||
Возврат РезультатыКоманд;
|
||||
|
||||
КонецФункции // РезультатыКоманд
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Получает объект класса с реализацией указанной команды
|
||||
Функция ПолучитьКоманду(Знач ИмяКоманды)
|
||||
|
||||
КлассРеализации = ИсполнителиКоманд[ИмяКоманды];
|
||||
Если КлассРеализации = Неопределено Тогда
|
||||
|
||||
ВызватьИсключение СтрШаблон("Неверная операция. Команда '%1' не предусмотрена.", ИмяКоманды);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат КлассРеализации;
|
||||
|
||||
КонецФункции // ПолучитьКоманду
|
||||
|
||||
// Осуществляет вывод полной версии продукта
|
||||
Процедура ВывестиВерсию()
|
||||
|
||||
Сообщить(СтрШаблон("%1 v%2", ИмяПродукта(), ВерсияПродукта()));
|
||||
|
||||
КонецПроцедуры // ВывестиВерсию
|
||||
|
||||
// Вывод ошибки и справки по параметрам
|
||||
Функция НекорректныеПараметры()
|
||||
|
||||
Лог.Ошибка("Некорректные аргументы командной строки");
|
||||
ВывестиСправкуПоКомандам();
|
||||
|
||||
Возврат РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецФункции // НекорректныеПараметры()
|
||||
|
||||
Функция ПолучитьРегексп(Паттерн) Экспорт
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(Паттерн);
|
||||
Регексп.Многострочный = Истина;
|
||||
Регексп.ИгнорироватьРегистр = Истина;
|
||||
|
||||
Возврат Регексп;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПрочитатьФайл(ФайлОбъекта) Экспорт
|
||||
|
||||
ФайлЧтение = Новый ТекстовыйДокумент;
|
||||
ПутьФайла = ?(ТипЗнч(ФайлОбъекта) = Тип("Строка"), ФайлОбъекта, ФайлОбъекта.ПолноеИмя);
|
||||
|
||||
ФайлЧтение.Прочитать(ПутьФайла, КодировкаТекста.UTF8NoBOM);
|
||||
|
||||
Возврат ФайлЧтение.ПолучитьТекст();
|
||||
|
||||
КонецФункции
|
144
src/Модули/ПараметрыПриложения.os
Normal file
144
src/Модули/ПараметрыПриложения.os
Normal file
@ -0,0 +1,144 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с набором служебных параметров приложения
|
||||
//
|
||||
// При создании нового приложения обязательно внести изменение
|
||||
// в ф-ии ИмяПродукта, указав имя вашего приложения.
|
||||
//
|
||||
// При выпуске новой версии обязательно изменить ее значение
|
||||
// в ф-ии ВерсияПродукта
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СВОЙСТВА ПРОДУКТА
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ВерсияПродукта
|
||||
// Возвращает текущую версию продукта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Значение текущей версии продукта
|
||||
//
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат "1.0.2";
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
// ИмяПродукта
|
||||
// Возвращает имя продукта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Значение имени продукта
|
||||
//
|
||||
Функция ИмяПродукта() Экспорт
|
||||
|
||||
Возврат "diff3cf";
|
||||
|
||||
КонецФункции // ИмяПродукта
|
||||
|
||||
// ПутьКИсполняемомуФайлу
|
||||
// Возвращает путь к исполняемому файлу
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Путь к исполняемому файлу скрипта
|
||||
//
|
||||
Функция ПутьКИсполняемомуФайлу() Экспорт
|
||||
|
||||
Возврат ОбъединитьПути(ПутьКРодительскомуКаталогу(), "src", "main.os");
|
||||
|
||||
КонецФункции // ПутьКИсполняемомуФайлу
|
||||
|
||||
// ПутьКРодительскомуКаталогу
|
||||
// Возвращает путь к каталогу основного скрипта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Путь к каталогу основного скрипта
|
||||
//
|
||||
Функция ПутьКРодительскомуКаталогу() Экспорт
|
||||
|
||||
Файл = Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."));
|
||||
Возврат Файл.ПолноеИмя;
|
||||
|
||||
КонецФункции // ПутьКРодительскомуКаталогу
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ЛОГИРОВАНИЕ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Форматирование логов
|
||||
// См. описание метода "УстановитьРаскладку" библиотеки logos
|
||||
//
|
||||
Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт
|
||||
|
||||
Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ИмяЛогаСистемы
|
||||
// Возвращает идентификатор лога приложения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Значение идентификатора лога приложения
|
||||
//
|
||||
Функция ИмяЛогаСистемы() Экспорт
|
||||
|
||||
Возврат "oscript.app." + ИмяПродукта();
|
||||
|
||||
КонецФункции // ИмяЛогаСистемы
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// НАСТРОЙКА КОМАНД
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Возвращает имя команды "version" (ключ командной строки)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - имя команды
|
||||
//
|
||||
Функция ИмяКомандыВерсия() Экспорт
|
||||
|
||||
Возврат "version";
|
||||
|
||||
КонецФункции // ИмяКомандыВерсия
|
||||
|
||||
// Возвращает имя команды "help" (ключ командной строки)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - имя команды
|
||||
//
|
||||
Функция ИмяКомандыПомощь() Экспорт
|
||||
|
||||
Возврат "help";
|
||||
|
||||
КонецФункции // ИмяКомандыПомощь()
|
||||
|
||||
// ИмяКомандыПоУмолчанию
|
||||
// Одна из команд может вызываться неявно, без указания команды.
|
||||
// Иными словами, здесь указывается какой обработчик надо вызывать, если приложение запущено без какой-либо команды
|
||||
// myapp /home/user/somefile.txt будет аналогично myapp default-action /home/user/somefile.txt
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - имя команды по умолчанию
|
||||
Функция ИмяКомандыПоУмолчанию() Экспорт
|
||||
|
||||
Возврат "help";
|
||||
|
||||
КонецФункции // ИмяКомандыПоУмолчанию
|
||||
|
||||
// НастроитьКомандыПриложения
|
||||
// Регистрирует классы обрабатывающие команды прилоложения
|
||||
//
|
||||
// Параметры:
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
Процедура НастроитьКомандыПриложения(Знач Приложение) Экспорт
|
||||
|
||||
Приложение.ДобавитьКоманду(ИмяКомандыПомощь(), "КомандаСправкаПоПараметрам", "Выводит справку по командам");
|
||||
Приложение.ДобавитьКоманду(ИмяКомандыВерсия(), "КомандаVersion", "Выводит версию приложения");
|
||||
Приложение.ДобавитьКоманду("diff", "КомандаСравнение",
|
||||
"Выполняет сравнение расширения с основной конфигурацией и новой поставкой");
|
||||
Приложение.ДобавитьКоманду("objects", "КомандаАнализОбъектов",
|
||||
"Выполняет анализ изменения объектов из основной конфигурации в новой поставке");
|
||||
|
||||
КонецПроцедуры // ПриРегистрацииКомандПриложения
|
60
src/Модули/РезультатСравненияРасширения.os
Normal file
60
src/Модули/РезультатСравненияРасширения.os
Normal file
@ -0,0 +1,60 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль получения результата сравнения расширения, основной конфы и поставки
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Сравнивает три конфигурации - Родитель, Поставка и Расширение
|
||||
//
|
||||
// Параметры:
|
||||
// РодительПуть - Строка - Каталог конфигурации Родитель
|
||||
// ПоставкаПуть - Строка - Каталог конфигурации Поставка
|
||||
// РасширениеПуть - Строка - Каталог конфигурации Расширение
|
||||
// Лог - log-manager - Экземпляр класса логирования
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - результат сравнения
|
||||
//
|
||||
Функция ПолучитьРезультатСравнения(РодительПуть, ПоставкаПуть, РасширениеПуть, Лог) Экспорт
|
||||
|
||||
РасширениеОписание = Новый Структура("Префикс, Типы");
|
||||
|
||||
РасширениеОписание.Вставить("РодительПуть", РодительПуть);
|
||||
РасширениеОписание.Вставить("ПоставкаПуть", ПоставкаПуть);
|
||||
РасширениеОписание.Вставить("РасширениеПуть", РасширениеПуть);
|
||||
|
||||
Парсер = Новый ПарсерМодулейРасширения(РасширениеПуть);
|
||||
|
||||
ФайлКонфигурации = ОбъединитьПути(РасширениеПуть, "Configuration.xml");
|
||||
РасширениеОписание.Префикс = Парсер.ПрочитатьПрефиксРасширения(ФайлКонфигурации);
|
||||
|
||||
// Получить переопределенные объекты (файлы xml и bsl)
|
||||
РасширениеОписание.Типы = Парсер.ПолучитьПереопределенныеОбъекты();
|
||||
Для каждого ТипРасширения Из РасширениеОписание.Типы Цикл
|
||||
|
||||
Для каждого ОбъектРасширения Из ТипРасширения.Объекты Цикл
|
||||
|
||||
Лог.Информация(ОбъектРасширения.Тип + " - " + ОбъектРасширения.Имя);
|
||||
Для каждого ФайлМодуля Из ОбъектРасширения.Модули Цикл
|
||||
|
||||
МодульОбъекта = ФайлМодуля.ФайлМодуля;
|
||||
|
||||
ФайлМодуля.Вставить("Методы", Парсер.ПрочитатьМетодыМодуля(МодульОбъекта, РасширениеОписание.Префикс));
|
||||
|
||||
// читаем и раскладываем модуль родителя
|
||||
Парсер.ПрочитатьМетодыОсновнойКонфигурации(МодульОбъекта, ФайлМодуля, РодительПуть, "Родитель");
|
||||
|
||||
// читаем и раскладываем модуль поставки
|
||||
Парсер.ПрочитатьМетодыОсновнойКонфигурации(МодульОбъекта, ФайлМодуля, ПоставкаПуть, "Поставка");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат РасширениеОписание;
|
||||
|
||||
КонецФункции
|
29
src/Модули/ТипыОбъектов.os
Normal file
29
src/Модули/ТипыОбъектов.os
Normal file
@ -0,0 +1,29 @@
|
||||
Перем ОбъектыКонфигурации Экспорт;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
ОбъектыКонфигурации = Новый Массив();
|
||||
ОбъектыКонфигурации.Добавить("AccountingRegisters");
|
||||
ОбъектыКонфигурации.Добавить("AccumulationRegisters");
|
||||
ОбъектыКонфигурации.Добавить("BusinessProcesses");
|
||||
ОбъектыКонфигурации.Добавить("CalculationRegisters");
|
||||
ОбъектыКонфигурации.Добавить("Catalogs");
|
||||
ОбъектыКонфигурации.Добавить("ChartsOfAccounts");
|
||||
ОбъектыКонфигурации.Добавить("ChartsOfCalculationTypes");
|
||||
ОбъектыКонфигурации.Добавить("ChartsOfCharacteristicTypes");
|
||||
ОбъектыКонфигурации.Добавить("CommonCommands");
|
||||
ОбъектыКонфигурации.Добавить("CommonForms");
|
||||
ОбъектыКонфигурации.Добавить("CommonModules");
|
||||
ОбъектыКонфигурации.Добавить("Constants");
|
||||
ОбъектыКонфигурации.Добавить("DataProcessors");
|
||||
ОбъектыКонфигурации.Добавить("DocumentJournals");
|
||||
ОбъектыКонфигурации.Добавить("Documents");
|
||||
ОбъектыКонфигурации.Добавить("Enums");
|
||||
ОбъектыКонфигурации.Добавить("ExchangePlans");
|
||||
ОбъектыКонфигурации.Добавить("Ext");
|
||||
ОбъектыКонфигурации.Добавить("FilterCriteria");
|
||||
ОбъектыКонфигурации.Добавить("HTTPServices");
|
||||
ОбъектыКонфигурации.Добавить("InformationRegisters");
|
||||
ОбъектыКонфигурации.Добавить("Reports");
|
||||
ОбъектыКонфигурации.Добавить("SettingsStorages");
|
||||
ОбъектыКонфигурации.Добавить("Tasks");
|
||||
ОбъектыКонфигурации.Добавить("WebServices");
|
18
tasks/test-feature.os
Normal file
18
tasks/test-feature.os
Normal file
@ -0,0 +1,18 @@
|
||||
#Использовать ".."
|
||||
#Использовать 1bdd
|
||||
|
||||
КаталогФич = ОбъединитьПути(".", "features");
|
||||
ПутьФичи = ОбъединитьПути(".", "features", АргументыКоманднойСтроки[0]);
|
||||
Файл_КаталогФич = Новый Файл(КаталогФич);
|
||||
ФайлФичи = Новый Файл(ПутьФичи);
|
||||
|
||||
ИсполнительБДД = Новый ИсполнительБДД;
|
||||
РезультатВыполнения = ИсполнительБДД.ВыполнитьФичу(ФайлФичи, Файл_КаталогФич);
|
||||
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатВыполнения);
|
||||
|
||||
Сообщить(ИтоговыйРезультатВыполнения);
|
||||
Если ИтоговыйРезультатВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался Тогда
|
||||
|
||||
ВызватьИсключение 1;
|
||||
|
||||
КонецЕсли;
|
82
tasks/test.os
Normal file
82
tasks/test.os
Normal file
@ -0,0 +1,82 @@
|
||||
#Использовать "../src"
|
||||
#Использовать 1bdd
|
||||
#Использовать 1testrunner
|
||||
|
||||
Функция ПрогнатьТесты()
|
||||
|
||||
Тестер = Новый Тестер;
|
||||
|
||||
ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
|
||||
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
|
||||
|
||||
КаталогТестов = Новый Файл(ПутьКТестам);
|
||||
Если Не КаталогТестов.Существует() Тогда
|
||||
Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам));
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатТестирования = Тестер.ТестироватьКаталог(
|
||||
КаталогТестов,
|
||||
Новый Файл(ПутьКОтчетуJUnit)
|
||||
);
|
||||
|
||||
Успешно = РезультатТестирования = 0;
|
||||
|
||||
Возврат Успешно;
|
||||
КонецФункции // ПрогнатьТесты()
|
||||
|
||||
Функция ПрогнатьФичи()
|
||||
|
||||
ПутьОтчетаJUnit = "./bdd-log.xml";
|
||||
|
||||
КаталогФич = ОбъединитьПути(".", "features");
|
||||
|
||||
Файл_КаталогФич = Новый Файл(КаталогФич);
|
||||
Если Не Файл_КаталогФич.Существует() Тогда
|
||||
Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич));
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ИсполнительБДД = Новый ИсполнительБДД;
|
||||
РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
|
||||
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
|
||||
|
||||
СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
|
||||
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда
|
||||
|
||||
СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
|
||||
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);
|
||||
|
||||
Сообщить(СтрШаблон("Результат прогона фич <%1>
|
||||
|", ИтоговыйРезультатВыполнения));
|
||||
|
||||
Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
|
||||
КонецФункции // ПрогнатьФичи()
|
||||
|
||||
Попытка
|
||||
ТестыПрошли = ПрогнатьТесты();
|
||||
|
||||
Исключение
|
||||
ТестыПрошли = Ложь;
|
||||
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
|
||||
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
|
||||
КонецПопытки;
|
||||
|
||||
Попытка
|
||||
ФичиПрошли = ПрогнатьФичи();
|
||||
Исключение
|
||||
ФичиПрошли = Ложь;
|
||||
Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
|
||||
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ТестыПрошли Или Не ФичиПрошли Тогда
|
||||
ВызватьИсключение "Тестирование завершилось неудачно!";
|
||||
Иначе
|
||||
Сообщить(СтрШаблон("Результат прогона тестов <%1>
|
||||
|", ТестыПрошли));
|
||||
КонецЕсли;
|
84
tests/fixtures/configuration/Catalogs/Справочник1.xml
vendored
Normal file
84
tests/fixtures/configuration/Catalogs/Справочник1.xml
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
<?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">
|
||||
<Catalog uuid="c5ac80e6-b951-4a64-b272-68ecfc378eaf">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogObject.Справочник1" category="Object">
|
||||
<xr:TypeId>54640876-c2e6-475b-835e-a755b661df98</xr:TypeId>
|
||||
<xr:ValueId>d4b2fd69-7010-475e-95d3-5b31d3abff26</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogRef.Справочник1" category="Ref">
|
||||
<xr:TypeId>cd29b0ab-168f-46ea-bcb9-13ec622af7d7</xr:TypeId>
|
||||
<xr:ValueId>5eb3b617-0c7e-4319-b890-097c56a166aa</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogSelection.Справочник1" category="Selection">
|
||||
<xr:TypeId>b8a806e9-eba1-414c-84a8-724dcd6b82ee</xr:TypeId>
|
||||
<xr:ValueId>130f6ad5-d7be-4d32-bffd-faa976836a81</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogList.Справочник1" category="List">
|
||||
<xr:TypeId>cd4a0f54-030f-4c02-84db-67752c4107da</xr:TypeId>
|
||||
<xr:ValueId>863afb5a-afed-43a0-9792-c0f39e3c7241</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogManager.Справочник1" category="Manager">
|
||||
<xr:TypeId>d8ec89b5-d4fa-42e2-a9e7-620c903dca0a</xr:TypeId>
|
||||
<xr:ValueId>6330ba24-5beb-4a5c-bcb3-62a58101d88e</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>Справочник1</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Hierarchical>false</Hierarchical>
|
||||
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
|
||||
<LimitLevelCount>false</LimitLevelCount>
|
||||
<LevelCount>2</LevelCount>
|
||||
<FoldersOnTop>true</FoldersOnTop>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Owners/>
|
||||
<SubordinationUse>ToItems</SubordinationUse>
|
||||
<CodeLength>9</CodeLength>
|
||||
<DescriptionLength>25</DescriptionLength>
|
||||
<CodeType>String</CodeType>
|
||||
<CodeAllowedLength>Variable</CodeAllowedLength>
|
||||
<CodeSeries>WholeCatalog</CodeSeries>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<DefaultPresentation>AsDescription</DefaultPresentation>
|
||||
<Characteristics/>
|
||||
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
||||
<EditType>InDialog</EditType>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
<InputByString>
|
||||
<xr:Field>Catalog.Справочник1.StandardAttribute.Description</xr:Field>
|
||||
<xr:Field>Catalog.Справочник1.StandardAttribute.Code</xr:Field>
|
||||
</InputByString>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm/>
|
||||
<DefaultFolderForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<DefaultFolderChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryFolderForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<AuxiliaryFolderChoiceForm/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</Catalog>
|
||||
</MetaDataObject>
|
23
tests/fixtures/configuration/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
23
tests/fixtures/configuration/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
<?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">
|
||||
<CommonModule uuid="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc">
|
||||
<Properties>
|
||||
<Name>ОбщийМодульТест</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Общий модуль тест</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>false</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
5
tests/fixtures/configuration/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
5
tests/fixtures/configuration/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
Процедура ТестПроцедуры()
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций";
|
||||
|
||||
КонецПроцедуры
|
24
tests/fixtures/configuration/ConfigDumpInfo.xml
vendored
Normal file
24
tests/fixtures/configuration/ConfigDumpInfo.xml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.7">
|
||||
<ConfigVersions>
|
||||
<Metadata name="Catalog.Справочник1" id="c5ac80e6-b951-4a64-b272-68ecfc378eaf" configVersion="54c58831a6045b468a9bee8da1d87db500000000"/>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест" id="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc" configVersion="5c0c09f98be1294cae5c406c898c168800000000"/>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест.Module" id="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc.0" configVersion="f84e46277e660c498f103cfc4b9bedc600000000"/>
|
||||
<Metadata name="Configuration.ТестированиеСравнения" id="b8f2bed8-62af-456a-bd48-48af2633fe61" configVersion="49badb7a768e9b4db6a62bedd3a3f2d300000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент" id="166ae4b2-4689-4202-b76c-1ca63e305b16" configVersion="d252ac6ccf4fd849af4ddcff57df155100000000">
|
||||
<Metadata name="Document.ТестовыйДокумент.TabularSection.ТабличнаяЧасть1" id="1a9690a8-f078-40ac-965c-b5ae42a40da6"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.TabularSection.ТабличнаяЧасть1.Attribute.Реквизит1" id="25228916-a86f-4c9f-adcb-caf22243c2ad"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.TabularSection.ТабличнаяЧасть1.Attribute.Реквизит3" id="5aa085e7-1aed-4dd3-a673-52c6183d9631"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Attribute.Реквизит2" id="7c781ffa-00ec-45d7-928b-379028d8d41e"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Attribute.Реквизит1" id="d99abaf2-eae9-4b87-9290-9602869abb06"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.TabularSection.ТабличнаяЧасть1.Attribute.Реквизит2" id="ff3484e3-c880-4504-a4be-7f7fc9d94b95"/>
|
||||
</Metadata>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента" id="5823fee4-aac1-4768-b623-c55ff0970b60" configVersion="8455e4dc1e3dd7498642a1a08d90ea2d00000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента.Form" id="5823fee4-aac1-4768-b623-c55ff0970b60.0" configVersion="dc5d5c78a28c0f4f8b8c229d2d69e48c00000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.ObjectModule" id="166ae4b2-4689-4202-b76c-1ca63e305b16.0" configVersion="2299082c6e6611438f56234994edc8f200000000"/>
|
||||
<Metadata name="Language.Русский" id="401e926f-d313-440b-9a97-3d176c2859b9" configVersion="5079916dd21594449e3788ee8c87259c00000000"/>
|
||||
<Metadata name="Role.Администратор" id="f92f420d-e323-431c-94b4-151d5175a4e0" configVersion="2df0e39547974842a29a1af1bfd6cf5900000000"/>
|
||||
<Metadata name="Role.Администратор.Rights" id="f92f420d-e323-431c-94b4-151d5175a4e0.0" configVersion="04407c27da65854caac89ad5a1410e8b00000000"/>
|
||||
<Metadata name="Subsystem.ПодсистемаТест" id="b99a2492-b58f-414e-8279-1db48fc7f54c" configVersion="1ed89ab27d723343a2b9baae3d51f17000000000"/>
|
||||
</ConfigVersions>
|
||||
</ConfigDumpInfo>
|
148
tests/fixtures/configuration/Configuration.xml
vendored
Normal file
148
tests/fixtures/configuration/Configuration.xml
vendored
Normal file
@ -0,0 +1,148 @@
|
||||
<?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">
|
||||
<Configuration uuid="b8f2bed8-62af-456a-bd48-48af2633fe61">
|
||||
<InternalInfo>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
|
||||
<xr:ObjectId>804c66e4-c30d-409b-8591-7ee38de6cf58</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
|
||||
<xr:ObjectId>46aa5b38-d653-4c7b-976e-d50ab79964e4</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
|
||||
<xr:ObjectId>8d0e858b-89e5-4d0d-a61c-dd7dc2207f3f</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
|
||||
<xr:ObjectId>e3a6ca97-02b1-428c-acd6-d52cad356652</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
|
||||
<xr:ObjectId>568f0d16-cbfa-4b11-8f18-6ce8014fc83f</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
|
||||
<xr:ObjectId>2ac838b4-c5db-4ad6-9cc5-8d480c868fcf</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТестированиеСравнения</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Тестирование сравнения</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<NamePrefix/>
|
||||
<ConfigurationExtensionCompatibilityMode>Version8_3_13</ConfigurationExtensionCompatibilityMode>
|
||||
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
<ScriptVariant>Russian</ScriptVariant>
|
||||
<DefaultRoles/>
|
||||
<Vendor/>
|
||||
<Version/>
|
||||
<UpdateCatalogAddress/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
||||
<UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication>
|
||||
<AdditionalFullTextSearchDictionaries/>
|
||||
<CommonSettingsStorage/>
|
||||
<ReportsUserSettingsStorage/>
|
||||
<ReportsVariantsStorage/>
|
||||
<FormDataSettingsStorage/>
|
||||
<DynamicListsUserSettingsStorage/>
|
||||
<Content/>
|
||||
<DefaultReportForm/>
|
||||
<DefaultReportVariantForm/>
|
||||
<DefaultReportSettingsForm/>
|
||||
<DefaultDynamicListSettingsForm/>
|
||||
<DefaultSearchForm/>
|
||||
<DefaultDataHistoryChangeHistoryForm/>
|
||||
<DefaultDataHistoryVersionDataForm/>
|
||||
<DefaultDataHistoryVersionDifferencesForm/>
|
||||
<RequiredMobileApplicationPermissions>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Multimedia</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Location</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Contacts</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Calendars</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Telephony</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">PushNotification</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">LocalNotification</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Print</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">InAppPurchases</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Ads</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">BackgroundLocation</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">BackgroundAudioPlayback</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">FileExchangeWithPersonalComputer</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
</RequiredMobileApplicationPermissions>
|
||||
<MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode>
|
||||
<DefaultInterface/>
|
||||
<DefaultStyle/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
<BriefInformation/>
|
||||
<DetailedInformation/>
|
||||
<Copyright/>
|
||||
<VendorInformationAddress/>
|
||||
<ConfigurationInformationAddress/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<InterfaceCompatibilityMode>Taxi</InterfaceCompatibilityMode>
|
||||
<CompatibilityMode>Version8_3_10</CompatibilityMode>
|
||||
<DefaultConstantsForm/>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Language>Русский</Language>
|
||||
<Subsystem>ПодсистемаТест</Subsystem>
|
||||
<Role>Администратор</Role>
|
||||
<CommonModule>ОбщийМодульТест</CommonModule>
|
||||
<Catalog>Справочник1</Catalog>
|
||||
<Document>ТестовыйДокумент</Document>
|
||||
</ChildObjects>
|
||||
</Configuration>
|
||||
</MetaDataObject>
|
271
tests/fixtures/configuration/Documents/ТестовыйДокумент.xml
vendored
Normal file
271
tests/fixtures/configuration/Documents/ТестовыйДокумент.xml
vendored
Normal file
@ -0,0 +1,271 @@
|
||||
<?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="166ae4b2-4689-4202-b76c-1ca63e305b16">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentObject.ТестовыйДокумент" category="Object">
|
||||
<xr:TypeId>12cd8645-67e4-4f52-97b6-33eb80c8cb3d</xr:TypeId>
|
||||
<xr:ValueId>288ab939-f6f2-4f00-afe7-a1689e74c4cf</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentRef.ТестовыйДокумент" category="Ref">
|
||||
<xr:TypeId>e6cfb2e1-7b41-4bbc-8e3a-63f11d2b29b9</xr:TypeId>
|
||||
<xr:ValueId>c6b945c6-982e-4fed-964a-e9d8ce291c0c</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentSelection.ТестовыйДокумент" category="Selection">
|
||||
<xr:TypeId>9c776a75-b90b-4f98-a717-e9f379102896</xr:TypeId>
|
||||
<xr:ValueId>c22d1558-1e4f-4a52-8753-4c6f48c97b1f</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentList.ТестовыйДокумент" category="List">
|
||||
<xr:TypeId>1728ad7b-98d0-4123-b7fb-75ee6af22e95</xr:TypeId>
|
||||
<xr:ValueId>15d6ea31-fc29-4a88-af02-6c9eebc3aa15</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentManager.ТестовыйДокумент" category="Manager">
|
||||
<xr:TypeId>e9cb002d-a63c-46a2-97b7-60385633b767</xr:TypeId>
|
||||
<xr:ValueId>f19e8590-3b64-40d9-ba90-dd73efce2628</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТестовыйДокумент</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Тестовый документ</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Numerator/>
|
||||
<NumberType>String</NumberType>
|
||||
<NumberLength>9</NumberLength>
|
||||
<NumberAllowedLength>Variable</NumberAllowedLength>
|
||||
<NumberPeriodicity>Nonperiodical</NumberPeriodicity>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<Characteristics/>
|
||||
<BasedOn/>
|
||||
<InputByString>
|
||||
<xr:Field>Document.ТестовыйДокумент.StandardAttribute.Number</xr:Field>
|
||||
</InputByString>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm>Document.ТестовыйДокумент.Form.ФормаДокумента</DefaultObjectForm>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<Posting>Allow</Posting>
|
||||
<RealTimePosting>Allow</RealTimePosting>
|
||||
<RegisterRecordsDeletion>AutoDeleteOnUnpost</RegisterRecordsDeletion>
|
||||
<RegisterRecordsWritingOnPost>WriteSelected</RegisterRecordsWritingOnPost>
|
||||
<SequenceFilling>AutoFill</SequenceFilling>
|
||||
<RegisterRecords/>
|
||||
<PostInPrivilegedMode>true</PostInPrivilegedMode>
|
||||
<UnpostInPrivilegedMode>true</UnpostInPrivilegedMode>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="d99abaf2-eae9-4b87-9290-9602869abb06">
|
||||
<Properties>
|
||||
<Name>Реквизит1</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>10</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:type="xs:string"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="7c781ffa-00ec-45d7-928b-379028d8d41e">
|
||||
<Properties>
|
||||
<Name>Реквизит2</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.Справочник1</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>DontIndex</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Form>ФормаДокумента</Form>
|
||||
<TabularSection uuid="1a9690a8-f078-40ac-965c-b5ae42a40da6">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentTabularSection.ТестовыйДокумент.ТабличнаяЧасть1" category="TabularSection">
|
||||
<xr:TypeId>d632e036-d75c-4ff8-8b2c-46006e419dd3</xr:TypeId>
|
||||
<xr:ValueId>a02e60cc-699d-47ac-bc5b-b5f1cab00e7f</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentTabularSectionRow.ТестовыйДокумент.ТабличнаяЧасть1" category="TabularSectionRow">
|
||||
<xr:TypeId>7bf838d8-2d5a-429c-a3cd-954154d18d51</xr:TypeId>
|
||||
<xr:ValueId>ebc3195f-7749-4ff0-9ce5-e0b7c4aca343</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТабличнаяЧасть1</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<ToolTip/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="25228916-a86f-4c9f-adcb-caf22243c2ad">
|
||||
<Properties>
|
||||
<Name>Реквизит1</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>v8:ValueStorage</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>DontIndex</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="ff3484e3-c880-4504-a4be-7f7fc9d94b95">
|
||||
<Properties>
|
||||
<Name>Реквизит2</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.Справочник1</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>DontIndex</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="5aa085e7-1aed-4dd3-a673-52c6183d9631">
|
||||
<Properties>
|
||||
<Name>Реквизит3</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:boolean</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>DontIndex</Indexing>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</TabularSection>
|
||||
</ChildObjects>
|
||||
</Document>
|
||||
</MetaDataObject>
|
6
tests/fixtures/configuration/Documents/ТестовыйДокумент/Ext/ObjectModule.bsl
vendored
Normal file
6
tests/fixtures/configuration/Documents/ТестовыйДокумент/Ext/ObjectModule.bsl
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций в модуле документа";
|
||||
|
||||
КонецПроцедуры
|
21
tests/fixtures/configuration/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
21
tests/fixtures/configuration/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
<?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">
|
||||
<Form uuid="5823fee4-aac1-4768-b623-c55ff0970b60">
|
||||
<Properties>
|
||||
<Name>ФормаДокумента</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма документа</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
36
tests/fixtures/configuration/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
36
tests/fixtures/configuration/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" 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: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">
|
||||
<AutoTime>CurrentOrLast</AutoTime>
|
||||
<UsePostingMode>Auto</UsePostingMode>
|
||||
<RepostOnWrite>true</RepostOnWrite>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<InputField name="Номер" id="7">
|
||||
<DataPath>Объект.Number</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="НомерКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="НомерРасширеннаяПодсказка" id="3"/>
|
||||
</InputField>
|
||||
<InputField name="Дата" id="4">
|
||||
<DataPath>Объект.Date</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DocumentObject.ТестовыйДокумент</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<SavedData>true</SavedData>
|
||||
<UseAlways>
|
||||
<Field>Объект.RegisterRecords</Field>
|
||||
</UseAlways>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Form>
|
@ -0,0 +1,7 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций в форме документа";
|
||||
|
||||
КонецПроцедуры
|
16
tests/fixtures/configuration/Languages/Русский.xml
vendored
Normal file
16
tests/fixtures/configuration/Languages/Русский.xml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?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">
|
||||
<Language uuid="401e926f-d313-440b-9a97-3d176c2859b9">
|
||||
<Properties>
|
||||
<Name>Русский</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Русский</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<LanguageCode>ru</LanguageCode>
|
||||
</Properties>
|
||||
</Language>
|
||||
</MetaDataObject>
|
15
tests/fixtures/configuration/Roles/Администратор.xml
vendored
Normal file
15
tests/fixtures/configuration/Roles/Администратор.xml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<?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">
|
||||
<Role uuid="f92f420d-e323-431c-94b4-151d5175a4e0">
|
||||
<Properties>
|
||||
<Name>Администратор</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Администратор</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</Role>
|
||||
</MetaDataObject>
|
24
tests/fixtures/configuration/Roles/Администратор/Ext/Rights.xml
vendored
Normal file
24
tests/fixtures/configuration/Roles/Администратор/Ext/Rights.xml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.7">
|
||||
<setForNewObjects>true</setForNewObjects>
|
||||
<setForAttributesByDefault>true</setForAttributesByDefault>
|
||||
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
||||
<object>
|
||||
<name>Document.ТестовыйДокумент</name>
|
||||
<right>
|
||||
<name>InteractiveDelete</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
<right>
|
||||
<name>InteractiveDeleteMarked</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
</object>
|
||||
<object>
|
||||
<name>Subsystem.ПодсистемаТест</name>
|
||||
<right>
|
||||
<name>View</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
</object>
|
||||
</Rights>
|
25
tests/fixtures/configuration/Subsystems/ПодсистемаТест.xml
vendored
Normal file
25
tests/fixtures/configuration/Subsystems/ПодсистемаТест.xml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
<?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">
|
||||
<Subsystem uuid="b99a2492-b58f-414e-8279-1db48fc7f54c">
|
||||
<Properties>
|
||||
<Name>ПодсистемаТест</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Подсистема тест</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<IncludeInCommandInterface>true</IncludeInCommandInterface>
|
||||
<Explanation/>
|
||||
<Picture/>
|
||||
<Content>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.ОбщийМодульТест</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ТестовыйДокумент</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.Справочник1</xr:Item>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
15
tests/fixtures/exts/ADDTST/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
15
tests/fixtures/exts/ADDTST/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<?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.4">
|
||||
<CommonModule uuid="2410127c-df4a-4db7-90de-6be3de96a2f0">
|
||||
<Properties>
|
||||
<Name>ОбщийМодульТест</Name>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>false</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
8
tests/fixtures/exts/ADDTST/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
8
tests/fixtures/exts/ADDTST/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
&Вместо("ТестПроцедуры")
|
||||
Процедура ADDTSTТестПроцедуры()
|
||||
// Вставить содержимое метода.
|
||||
|
||||
Тест = "Переопределение в расширении";
|
||||
|
||||
КонецПроцедуры
|
12
tests/fixtures/exts/ADDTST/ConfigDumpInfo.xml
vendored
Normal file
12
tests/fixtures/exts/ADDTST/ConfigDumpInfo.xml
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.4">
|
||||
<ConfigVersions>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест" id="2410127c-df4a-4db7-90de-6be3de96a2f0" configVersion="bf76832ec1eeb433a642d8a800a6f05e187543a2"/>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест.Module" id="2410127c-df4a-4db7-90de-6be3de96a2f0.0" configVersion="aca107f0b8858444cd07ebbffceddbd3c85002e5"/>
|
||||
<Metadata name="Configuration.РасширениеТест" id="fe67f727-4b7c-413d-b0b9-2ba3af7cbd9e" configVersion="c77c7beecf90c2b8abd97018df42914b73852798"/>
|
||||
<Metadata name="Document.ТестовыйДокумент" id="901aca2a-0992-47a0-a18d-d4757682a071" configVersion="65fd12ed01de51a0945f6a15f1e13d073c9010f2"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента" id="c0762482-4839-447f-9633-ed3a4b7727fb" configVersion="9c6d85a889487c1abbb9544cb54380b0534f2835"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента.Form" id="c0762482-4839-447f-9633-ed3a4b7727fb.0" configVersion="49194a1807c477ca2ea6378c9ec03c7ee2c7660f"/>
|
||||
<Metadata name="Language.Русский" id="7db28f26-4f45-4c4f-9757-05fddaee40c1" configVersion="7a7736fa48fddaed3baab0fbbe0d39300f2c06cf"/>
|
||||
</ConfigVersions>
|
||||
</ConfigDumpInfo>
|
60
tests/fixtures/exts/ADDTST/Configuration.xml
vendored
Normal file
60
tests/fixtures/exts/ADDTST/Configuration.xml
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
<?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.4">
|
||||
<Configuration uuid="fe67f727-4b7c-413d-b0b9-2ba3af7cbd9e">
|
||||
<InternalInfo>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
|
||||
<xr:ObjectId>e796b40b-c503-4c5e-945f-871874d5a84f</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
|
||||
<xr:ObjectId>1ef6003e-749f-46c4-b7ba-87ea0964089b</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
|
||||
<xr:ObjectId>80e30f82-f35b-4b40-a0c0-c2e4c16640e2</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
|
||||
<xr:ObjectId>cbb79db0-2948-456b-8161-b0e5feeb7174</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
|
||||
<xr:ObjectId>bcefdba1-6272-4706-9f9b-82600a9a5f0d</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
|
||||
<xr:ObjectId>8e8463e0-5cfe-4881-976e-dee313dc22bb</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>РасширениеТест</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Расширение тест</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<ConfigurationExtensionPurpose>AddOn</ConfigurationExtensionPurpose>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<NamePrefix>ADDTST</NamePrefix>
|
||||
<ConfigurationExtensionCompatibilityMode>Version8_3_10</ConfigurationExtensionCompatibilityMode>
|
||||
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PersonalComputer</v8:Value>
|
||||
</UsePurposes>
|
||||
<ScriptVariant>Russian</ScriptVariant>
|
||||
<Vendor/>
|
||||
<Version/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
<InterfaceCompatibilityMode>Taxi</InterfaceCompatibilityMode>
|
||||
<CompatibilityMode>Version8_3_10</CompatibilityMode>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Language>Русский</Language>
|
||||
<CommonModule>ОбщийМодульТест</CommonModule>
|
||||
<Document>ТестовыйДокумент</Document>
|
||||
</ChildObjects>
|
||||
</Configuration>
|
||||
</MetaDataObject>
|
37
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент.xml
vendored
Normal file
37
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент.xml
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
<?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.4">
|
||||
<Document uuid="901aca2a-0992-47a0-a18d-d4757682a071">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentObject.ТестовыйДокумент" category="Object">
|
||||
<xr:TypeId>c9de9adf-490d-4f67-a092-4cdfc2e5eae2</xr:TypeId>
|
||||
<xr:ValueId>8e0c32a8-db8d-4563-a13c-01ae7e7d054b</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentRef.ТестовыйДокумент" category="Ref">
|
||||
<xr:TypeId>f245c3fe-8458-4cfa-bb80-57eacad6a01f</xr:TypeId>
|
||||
<xr:ValueId>e1e76c79-5718-401c-846d-7d181b57c5a1</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentSelection.ТестовыйДокумент" category="Selection">
|
||||
<xr:TypeId>8c5eee5b-ebad-411a-b117-b8a3a7ddb446</xr:TypeId>
|
||||
<xr:ValueId>cb26fff0-c762-4a2e-a3d1-01a28f2423ad</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentList.ТестовыйДокумент" category="List">
|
||||
<xr:TypeId>dc6f6f7f-5ed9-4281-acd7-f7baee3e0bd7</xr:TypeId>
|
||||
<xr:ValueId>97b5bc52-7f3d-422c-a62c-d085abb77ac6</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentManager.ТестовыйДокумент" category="Manager">
|
||||
<xr:TypeId>1519094e-2d28-4e8c-8d1d-bb010d6b6899</xr:TypeId>
|
||||
<xr:ValueId>86199801-900d-49ea-8779-33987d4c59a6</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТестовыйДокумент</Name>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<NumberType>String</NumberType>
|
||||
<NumberLength>9</NumberLength>
|
||||
<NumberAllowedLength>Variable</NumberAllowedLength>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Form>ФормаДокумента</Form>
|
||||
</ChildObjects>
|
||||
</Document>
|
||||
</MetaDataObject>
|
10
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
10
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<?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.4">
|
||||
<Form uuid="c0762482-4839-447f-9633-ed3a4b7727fb">
|
||||
<Properties>
|
||||
<Name>ФормаДокумента</Name>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<FormType>Managed</FormType>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
68
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
68
tests/fixtures/exts/ADDTST/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" 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: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.4">
|
||||
<AutoTime>CurrentOrLast</AutoTime>
|
||||
<UsePostingMode>Auto</UsePostingMode>
|
||||
<RepostOnWrite>true</RepostOnWrite>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="15"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer" callType="Override">ADDTSTПриСозданииНаСервереВместо</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<InputField name="Номер" id="7">
|
||||
<DataPath>Объект.Number</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="НомерКонтекстноеМеню" id="14"/>
|
||||
<ExtendedTooltip name="НомерРасширеннаяПодсказка" id="13"/>
|
||||
</InputField>
|
||||
<InputField name="Дата" id="12">
|
||||
<DataPath>Объект.Date</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="11"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="10"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="8">
|
||||
<Type>
|
||||
<v8:Type>cfg:DocumentObject.ТестовыйДокумент</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<SavedData>true</SavedData>
|
||||
<UseAlways>
|
||||
<Field>Объект.RegisterRecords</Field>
|
||||
</UseAlways>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
<BaseForm version="2.4">
|
||||
<AutoTime>CurrentOrLast</AutoTime>
|
||||
<UsePostingMode>Auto</UsePostingMode>
|
||||
<RepostOnWrite>true</RepostOnWrite>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<ChildItems>
|
||||
<InputField name="Номер" id="9">
|
||||
<DataPath>Объект.Number</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="НомерКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="НомерРасширеннаяПодсказка" id="3"/>
|
||||
</InputField>
|
||||
<InputField name="Дата" id="4">
|
||||
<DataPath>Объект.Date</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DocumentObject.ТестовыйДокумент</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<SavedData>true</SavedData>
|
||||
<UseAlways>
|
||||
<Field>Объект.RegisterRecords</Field>
|
||||
</UseAlways>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</BaseForm>
|
||||
</Form>
|
@ -0,0 +1,7 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ADDTSTПриСозданииНаСервереВместо(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Тест = "Это переопределение обработчика в форме документа";
|
||||
|
||||
КонецПроцедуры
|
10
tests/fixtures/exts/ADDTST/Languages/Русский.xml
vendored
Normal file
10
tests/fixtures/exts/ADDTST/Languages/Русский.xml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<?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.4">
|
||||
<Language uuid="7db28f26-4f45-4c4f-9757-05fddaee40c1">
|
||||
<Properties>
|
||||
<Name>Русский</Name>
|
||||
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||
<LanguageCode>ru</LanguageCode>
|
||||
</Properties>
|
||||
</Language>
|
||||
</MetaDataObject>
|
23
tests/fixtures/release/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
23
tests/fixtures/release/CommonModules/ОбщийМодульТест.xml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
<?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.4">
|
||||
<CommonModule uuid="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc">
|
||||
<Properties>
|
||||
<Name>ОбщийМодульТест</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Общий модуль тест</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>false</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>false</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>false</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
7
tests/fixtures/release/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
7
tests/fixtures/release/CommonModules/ОбщийМодульТест/Ext/Module.bsl
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
Процедура ТестПроцедуры()
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций";
|
||||
|
||||
Тест = Тест + " дополнен в обновлении...";
|
||||
|
||||
КонецПроцедуры
|
16
tests/fixtures/release/ConfigDumpInfo.xml
vendored
Normal file
16
tests/fixtures/release/ConfigDumpInfo.xml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.4">
|
||||
<ConfigVersions>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест" id="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc" configVersion="9b8b58499e2d104cbe3b082c4bf6454100000000"/>
|
||||
<Metadata name="CommonModule.ОбщийМодульТест.Module" id="a44a75b2-7156-4865-8baf-2c6cc8dbc3bc.0" configVersion="98d78c02f6379c47a8de7ab76de25c9800000000"/>
|
||||
<Metadata name="Configuration.ТестированиеСравнения" id="b8f2bed8-62af-456a-bd48-48af2633fe61" configVersion="07c1fa90cc5a6d45b4b44eb29956c97900000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент" id="166ae4b2-4689-4202-b76c-1ca63e305b16" configVersion="1f77c4c1b4479745a804b9ae897c5e8100000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента" id="5823fee4-aac1-4768-b623-c55ff0970b60" configVersion="6b34d0f8322abd4a82fe23ba928fb51400000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.Form.ФормаДокумента.Form" id="5823fee4-aac1-4768-b623-c55ff0970b60.0" configVersion="375f44bf66f57b48bed7eec2b9f0027d00000000"/>
|
||||
<Metadata name="Document.ТестовыйДокумент.ObjectModule" id="166ae4b2-4689-4202-b76c-1ca63e305b16.0" configVersion="1cbabf8c5b076d47aa6a1a708774de2400000000"/>
|
||||
<Metadata name="Language.Русский" id="401e926f-d313-440b-9a97-3d176c2859b9" configVersion="f0540697e27c7447b04da8c857bc521b00000000"/>
|
||||
<Metadata name="Role.Администратор" id="f92f420d-e323-431c-94b4-151d5175a4e0" configVersion="b713287664fd864783e5c92a8d3df41700000000"/>
|
||||
<Metadata name="Role.Администратор.Rights" id="f92f420d-e323-431c-94b4-151d5175a4e0.0" configVersion="4068a1b3e6e4e84d88261b8d2066214800000000"/>
|
||||
<Metadata name="Subsystem.ПодсистемаТест" id="b99a2492-b58f-414e-8279-1db48fc7f54c" configVersion="efe785ec8f5ec14aa45ccc0218d0b50300000000"/>
|
||||
</ConfigVersions>
|
||||
</ConfigDumpInfo>
|
132
tests/fixtures/release/Configuration.xml
vendored
Normal file
132
tests/fixtures/release/Configuration.xml
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
<?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.4">
|
||||
<Configuration uuid="b8f2bed8-62af-456a-bd48-48af2633fe61">
|
||||
<InternalInfo>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
|
||||
<xr:ObjectId>804c66e4-c30d-409b-8591-7ee38de6cf58</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
|
||||
<xr:ObjectId>46aa5b38-d653-4c7b-976e-d50ab79964e4</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
|
||||
<xr:ObjectId>8d0e858b-89e5-4d0d-a61c-dd7dc2207f3f</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
|
||||
<xr:ObjectId>e3a6ca97-02b1-428c-acd6-d52cad356652</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
|
||||
<xr:ObjectId>568f0d16-cbfa-4b11-8f18-6ce8014fc83f</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
<xr:ContainedObject>
|
||||
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
|
||||
<xr:ObjectId>2ac838b4-c5db-4ad6-9cc5-8d480c868fcf</xr:ObjectId>
|
||||
</xr:ContainedObject>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТестированиеСравнения</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Тестирование сравнения</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<NamePrefix/>
|
||||
<ConfigurationExtensionCompatibilityMode>Version8_3_10</ConfigurationExtensionCompatibilityMode>
|
||||
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PersonalComputer</v8:Value>
|
||||
</UsePurposes>
|
||||
<ScriptVariant>Russian</ScriptVariant>
|
||||
<DefaultRoles/>
|
||||
<Vendor/>
|
||||
<Version/>
|
||||
<UpdateCatalogAddress/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
||||
<UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication>
|
||||
<AdditionalFullTextSearchDictionaries/>
|
||||
<CommonSettingsStorage/>
|
||||
<ReportsUserSettingsStorage/>
|
||||
<ReportsVariantsStorage/>
|
||||
<FormDataSettingsStorage/>
|
||||
<DynamicListsUserSettingsStorage/>
|
||||
<Content/>
|
||||
<DefaultReportForm/>
|
||||
<DefaultReportVariantForm/>
|
||||
<DefaultReportSettingsForm/>
|
||||
<DefaultDynamicListSettingsForm/>
|
||||
<DefaultSearchForm/>
|
||||
<RequiredMobileApplicationPermissions>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Multimedia</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Location</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Contacts</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Calendars</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Telephony</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">PushNotification</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">LocalNotification</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Print</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">InAppPurchases</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
<v8:pair>
|
||||
<v8:Key xsi:type="app:RequiredMobileApplicationPermissions">Ads</v8:Key>
|
||||
<v8:Value xsi:type="xs:boolean">false</v8:Value>
|
||||
</v8:pair>
|
||||
</RequiredMobileApplicationPermissions>
|
||||
<MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode>
|
||||
<DefaultInterface/>
|
||||
<DefaultStyle/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
<BriefInformation/>
|
||||
<DetailedInformation/>
|
||||
<Copyright/>
|
||||
<VendorInformationAddress/>
|
||||
<ConfigurationInformationAddress/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
||||
<InterfaceCompatibilityMode>Taxi</InterfaceCompatibilityMode>
|
||||
<CompatibilityMode>Version8_3_10</CompatibilityMode>
|
||||
<DefaultConstantsForm/>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Language>Русский</Language>
|
||||
<Subsystem>ПодсистемаТест</Subsystem>
|
||||
<Role>Администратор</Role>
|
||||
<CommonModule>ОбщийМодульТест</CommonModule>
|
||||
<Document>ТестовыйДокумент</Document>
|
||||
</ChildObjects>
|
||||
</Configuration>
|
||||
</MetaDataObject>
|
81
tests/fixtures/release/Documents/ТестовыйДокумент.xml
vendored
Normal file
81
tests/fixtures/release/Documents/ТестовыйДокумент.xml
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
<?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.4">
|
||||
<Document uuid="166ae4b2-4689-4202-b76c-1ca63e305b16">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="DocumentObject.ТестовыйДокумент" category="Object">
|
||||
<xr:TypeId>12cd8645-67e4-4f52-97b6-33eb80c8cb3d</xr:TypeId>
|
||||
<xr:ValueId>288ab939-f6f2-4f00-afe7-a1689e74c4cf</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentRef.ТестовыйДокумент" category="Ref">
|
||||
<xr:TypeId>e6cfb2e1-7b41-4bbc-8e3a-63f11d2b29b9</xr:TypeId>
|
||||
<xr:ValueId>c6b945c6-982e-4fed-964a-e9d8ce291c0c</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentSelection.ТестовыйДокумент" category="Selection">
|
||||
<xr:TypeId>9c776a75-b90b-4f98-a717-e9f379102896</xr:TypeId>
|
||||
<xr:ValueId>c22d1558-1e4f-4a52-8753-4c6f48c97b1f</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentList.ТестовыйДокумент" category="List">
|
||||
<xr:TypeId>1728ad7b-98d0-4123-b7fb-75ee6af22e95</xr:TypeId>
|
||||
<xr:ValueId>15d6ea31-fc29-4a88-af02-6c9eebc3aa15</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="DocumentManager.ТестовыйДокумент" category="Manager">
|
||||
<xr:TypeId>e9cb002d-a63c-46a2-97b7-60385633b767</xr:TypeId>
|
||||
<xr:ValueId>f19e8590-3b64-40d9-ba90-dd73efce2628</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ТестовыйДокумент</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Тестовый документ</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Numerator/>
|
||||
<NumberType>String</NumberType>
|
||||
<NumberLength>9</NumberLength>
|
||||
<NumberAllowedLength>Variable</NumberAllowedLength>
|
||||
<NumberPeriodicity>Nonperiodical</NumberPeriodicity>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<Characteristics/>
|
||||
<BasedOn/>
|
||||
<InputByString>
|
||||
<xr:Field>Document.ТестовыйДокумент.StandardAttribute.Number</xr:Field>
|
||||
</InputByString>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm>Document.ТестовыйДокумент.Form.ФормаДокумента</DefaultObjectForm>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<Posting>Allow</Posting>
|
||||
<RealTimePosting>Allow</RealTimePosting>
|
||||
<RegisterRecordsDeletion>AutoDeleteOnUnpost</RegisterRecordsDeletion>
|
||||
<RegisterRecordsWritingOnPost>WriteSelected</RegisterRecordsWritingOnPost>
|
||||
<SequenceFilling>AutoFill</SequenceFilling>
|
||||
<RegisterRecords/>
|
||||
<PostInPrivilegedMode>true</PostInPrivilegedMode>
|
||||
<UnpostInPrivilegedMode>true</UnpostInPrivilegedMode>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>DontUse</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Form>ФормаДокумента</Form>
|
||||
</ChildObjects>
|
||||
</Document>
|
||||
</MetaDataObject>
|
6
tests/fixtures/release/Documents/ТестовыйДокумент/Ext/ObjectModule.bsl
vendored
Normal file
6
tests/fixtures/release/Documents/ТестовыйДокумент/Ext/ObjectModule.bsl
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций в модуле документа";
|
||||
|
||||
КонецПроцедуры
|
21
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
21
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента.xml
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
<?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.4">
|
||||
<Form uuid="5823fee4-aac1-4768-b623-c55ff0970b60">
|
||||
<Properties>
|
||||
<Name>ФормаДокумента</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма документа</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PersonalComputer</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobileDevice</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
36
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
36
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form.xml
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" 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: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.4">
|
||||
<AutoTime>CurrentOrLast</AutoTime>
|
||||
<UsePostingMode>Auto</UsePostingMode>
|
||||
<RepostOnWrite>true</RepostOnWrite>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<InputField name="Номер" id="7">
|
||||
<DataPath>Объект.Number</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="НомерКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="НомерРасширеннаяПодсказка" id="3"/>
|
||||
</InputField>
|
||||
<InputField name="Дата" id="4">
|
||||
<DataPath>Объект.Date</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DocumentObject.ТестовыйДокумент</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<SavedData>true</SavedData>
|
||||
<UseAlways>
|
||||
<Field>Объект.RegisterRecords</Field>
|
||||
</UseAlways>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Form>
|
9
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form/Module.bsl
vendored
Normal file
9
tests/fixtures/release/Documents/ТестовыйДокумент/Forms/ФормаДокумента/Ext/Form/Module.bsl
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Тест = "Это просто тестирование сравнения конфигураций в форме документа";
|
||||
|
||||
Тест = Тест + " дополнен в обновлении...";
|
||||
|
||||
КонецПроцедуры
|
16
tests/fixtures/release/Languages/Русский.xml
vendored
Normal file
16
tests/fixtures/release/Languages/Русский.xml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?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.4">
|
||||
<Language uuid="401e926f-d313-440b-9a97-3d176c2859b9">
|
||||
<Properties>
|
||||
<Name>Русский</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Русский</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<LanguageCode>ru</LanguageCode>
|
||||
</Properties>
|
||||
</Language>
|
||||
</MetaDataObject>
|
15
tests/fixtures/release/Roles/Администратор.xml
vendored
Normal file
15
tests/fixtures/release/Roles/Администратор.xml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<?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.4">
|
||||
<Role uuid="f92f420d-e323-431c-94b4-151d5175a4e0">
|
||||
<Properties>
|
||||
<Name>Администратор</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Администратор</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</Role>
|
||||
</MetaDataObject>
|
24
tests/fixtures/release/Roles/Администратор/Ext/Rights.xml
vendored
Normal file
24
tests/fixtures/release/Roles/Администратор/Ext/Rights.xml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.4">
|
||||
<setForNewObjects>true</setForNewObjects>
|
||||
<setForAttributesByDefault>true</setForAttributesByDefault>
|
||||
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
||||
<object>
|
||||
<name>Document.ТестовыйДокумент</name>
|
||||
<right>
|
||||
<name>InteractiveDelete</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
<right>
|
||||
<name>InteractiveDeleteMarked</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
</object>
|
||||
<object>
|
||||
<name>Subsystem.ПодсистемаТест</name>
|
||||
<right>
|
||||
<name>View</name>
|
||||
<value>false</value>
|
||||
</right>
|
||||
</object>
|
||||
</Rights>
|
24
tests/fixtures/release/Subsystems/ПодсистемаТест.xml
vendored
Normal file
24
tests/fixtures/release/Subsystems/ПодсистемаТест.xml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
<?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.4">
|
||||
<Subsystem uuid="b99a2492-b58f-414e-8279-1db48fc7f54c">
|
||||
<Properties>
|
||||
<Name>ПодсистемаТест</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Подсистема тест</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<IncludeHelpInContents>true</IncludeHelpInContents>
|
||||
<IncludeInCommandInterface>true</IncludeInCommandInterface>
|
||||
<Explanation/>
|
||||
<Picture/>
|
||||
<Content>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.ОбщийМодульТест</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ТестовыйДокумент</xr:Item>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</Subsystem>
|
||||
</MetaDataObject>
|
181
tests/test-app.os
Normal file
181
tests/test-app.os
Normal file
@ -0,0 +1,181 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Тестирование основной функциональности пакета
|
||||
// Проверка на соответствие выгрузки эталону
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать logos
|
||||
#Использовать asserts
|
||||
#Использовать tempfiles
|
||||
#Использовать 1commands
|
||||
#Использовать ".."
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем Лог;
|
||||
Перем МенеджерВременныхФайлов;
|
||||
Перем РасширениеПуть;
|
||||
Перем РодительПуть;
|
||||
Перем ПоставкаПуть;
|
||||
Перем Парсер;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Программный интерфейс
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПолучитьСписокТестов(Знач ЮнитТестирование) Экспорт
|
||||
|
||||
МассивТестов = Новый Массив;
|
||||
МассивТестов.Добавить("ТестПарсера_ПолучитьПрефиксРасширения");
|
||||
МассивТестов.Добавить("ТестПарсера_ВыполнитьЧтениеМетодовМодуля");
|
||||
МассивТестов.Добавить("ТестПарсера_ПолучитьПереопределенныеОбъекты");
|
||||
МассивТестов.Добавить("ТестПарсера_ПрочитатьМетодыОсновнойКонфигурации");
|
||||
МассивТестов.Добавить("ТестПриложения_ПолучитьРезультатСравнения");
|
||||
МассивТестов.Добавить("ТестПриложения_СохранитьРезультатСравнения");
|
||||
|
||||
МассивТестов.Добавить("ТестПриложения_ПолучитьРезультатСравненияОбъектов");
|
||||
|
||||
Возврат МассивТестов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПередЗапускомТеста() Экспорт
|
||||
|
||||
// служебные переменные
|
||||
РасширениеПуть = ОбъединитьПути("tests", "fixtures", "exts", "ADDTST");
|
||||
РодительПуть = ОбъединитьПути("tests", "fixtures", "configuration");
|
||||
ПоставкаПуть = ОбъединитьПути("tests", "fixtures", "release");
|
||||
|
||||
ОбъектНастроек = ПараметрыПриложения;
|
||||
|
||||
// Логирование
|
||||
Лог = Логирование.ПолучитьЛог(ОбъектНастроек.ИмяЛогаСистемы());
|
||||
Лог.УстановитьРаскладку(ОбъектНастроек);
|
||||
|
||||
Парсер = Новый ПарсерМодулейРасширения(РасширениеПуть);
|
||||
|
||||
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеЗапускаТеста() Экспорт
|
||||
|
||||
МенеджерВременныхФайлов.Удалить();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Шаги
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура ТестПарсера_ПолучитьПрефиксРасширения() Экспорт
|
||||
|
||||
ФайлКонфигурации = ОбъединитьПути(РасширениеПуть, "Configuration.xml");
|
||||
Префикс = Парсер.ПрочитатьПрефиксРасширения(ФайлКонфигурации);
|
||||
|
||||
Утверждения.ПроверитьРавенство("ADDTST", Префикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестПарсера_ВыполнитьЧтениеМетодовМодуля() Экспорт
|
||||
|
||||
ФайлКонфигурации = ОбъединитьПути(РасширениеПуть, "Configuration.xml");
|
||||
Префикс = Парсер.ПрочитатьПрефиксРасширения(ФайлКонфигурации);
|
||||
|
||||
ТипОбъектов = "Documents";
|
||||
|
||||
Объекты = Парсер.ПолучитьФайлыОбъектов(ТипОбъектов); // Получаем документы
|
||||
Модули = Парсер.ПолучитьФайлыМодулей(ТипОбъектов, Объекты[0].ИмяБезРасширения); // Получаем модули
|
||||
|
||||
Методы = Парсер.ПрочитатьМетодыМодуля(Модули[0], Префикс);
|
||||
|
||||
Утверждения.ПроверитьБольше(Методы.Количество(), 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестПарсера_ПолучитьПереопределенныеОбъекты() Экспорт
|
||||
|
||||
Объекты = Парсер.ПолучитьПереопределенныеОбъекты();
|
||||
|
||||
Утверждения.ПроверитьБольше(Объекты.Количество(), 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестПарсера_ПрочитатьМетодыОсновнойКонфигурации() Экспорт
|
||||
|
||||
ФайлКонфигурации = ОбъединитьПути(РасширениеПуть, "Configuration.xml");
|
||||
Префикс = Парсер.ПрочитатьПрефиксРасширения(ФайлКонфигурации);
|
||||
|
||||
ТипыКонфигурации = Парсер.ПолучитьПереопределенныеОбъекты();
|
||||
|
||||
ОбъектыЕсть = Ложь;
|
||||
Для каждого ТипРасширения Из ТипыКонфигурации Цикл
|
||||
Если ТипРасширения.Объекты.Количество() Тогда
|
||||
|
||||
ОбъектыЕсть = Истина;
|
||||
|
||||
ОбъектРасширения = ТипРасширения.Объекты[0];
|
||||
ФайлМодуля = ОбъектРасширения.Модули[0]; // и первый модуль
|
||||
МодульОбъекта = ФайлМодуля.ФайлМодуля;
|
||||
ФайлМодуля.Вставить("Методы", Парсер.ПрочитатьМетодыМодуля(МодульОбъекта, Префикс)); // заполняем методы
|
||||
|
||||
Парсер.ПрочитатьМетодыОсновнойКонфигурации(МодульОбъекта, ФайлМодуля, РодительПуть, "Родитель"); // сопоставляем с родительской конфигурацией
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Утверждения.ПроверитьИстину(ОбъектыЕсть, "методы не обнаружены");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестПриложения_ПолучитьРезультатСравнения() Экспорт
|
||||
|
||||
РезультатСравнения = РезультатСравненияРасширения.ПолучитьРезультатСравнения(
|
||||
РодительПуть,
|
||||
ПоставкаПуть,
|
||||
РасширениеПуть,
|
||||
Лог);
|
||||
|
||||
Утверждения.ПроверитьБольше(РезультатСравнения.Типы.Количество(), 0, "нет типов в результате сравнения");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестПриложения_СохранитьРезультатСравнения() Экспорт
|
||||
|
||||
ФайлРезультатИмя = МенеджерВременныхФайлов.СоздатьФайл("HTML");
|
||||
|
||||
РезультатСравнения = РезультатСравненияРасширения.ПолучитьРезультатСравнения(
|
||||
РодительПуть,
|
||||
ПоставкаПуть,
|
||||
РасширениеПуть,
|
||||
Лог);
|
||||
|
||||
Генератор = Новый ГенераторОтчета;
|
||||
Генератор.СохранитьРезультат(РезультатСравнения, ФайлРезультатИмя, Лог, "HTML");
|
||||
|
||||
ТекстРезультат = Новый ТекстовыйДокумент();
|
||||
ТекстРезультат.Прочитать(ФайлРезультатИмя, КодировкаТекста.UTF8NoBOM);
|
||||
|
||||
Утверждения.ПроверитьВхождение(ТекстРезультат.ПолучитьТекст(), "<!DOCTYPE HTML>", "текст не соответствует шаблону");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура ТестПриложения_ПолучитьРезультатСравненияОбъектов() Экспорт
|
||||
|
||||
РезультатСравнения = АнализаторОбъектов.ВыполнитьСравнениеОбъектов(РодительПуть, ПоставкаПуть, Лог);
|
||||
|
||||
Утверждения.ПроверитьБольше(РезультатСравнения.Типы.Количество(), 0, "нет типов в результате сравнения");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Служебный функционал
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user