1
0
mirror of https://github.com/bia-technologies/bsl-parser.git synced 2024-11-24 08:12:17 +02:00

#ONECICD-148

Описания, тесты, исправления ошибок
This commit is contained in:
aleksey.koryakin 2019-06-11 10:57:14 +03:00
parent f3eece6f97
commit c96528dba6
17 changed files with 516 additions and 258 deletions

View File

@ -1,96 +0,0 @@
///////////////////////////////////////////////////////////////////////////////
//
// Описание модуля
//
///////////////////////////////////////////////////////////////////////////////
Перем Генератор Экспорт;
Перем ПараметрыГенерации Экспорт;
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Создает и инициализирует поток записи описаний корневого объекта
//
// Параметры:
// Описание - Структура - Описание объекта, наименование синоним и прочее
// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...)
// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные
//
Функция СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла) Экспорт
Запись = Генератор.СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла, ПараметрыГенерации);
ПараметрыГенерации.Вставить("ЗаписьConfiguration", Запись);
Возврат Запись;
КонецФункции
// Сохраняет и закрывает поток записи описаний корневого объекта
//
Процедура ЗафиксироватьОписаниеКорневогоОбъекта() Экспорт
ОбработкаXML.ЗакрытьЗапись(ПараметрыГенерации.ЗаписьConfiguration);
ПараметрыГенерации.ЗаписьConfiguration = Неопределено;
КонецПроцедуры
// Регистрирует объект в списке объектов конфигурации
//
// Параметры:
// ОбъектКонфигурации - Произвольный - Объект содержащий реквизиты - Тип и Наименование
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации) Экспорт
Генератор.ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации);
КонецПроцедуры
// Создает поток и инициализирует поток записи описания объекта
//
// Параметры:
// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...)
// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные
//
// Возвращаемое значение:
// ЗаписьXML - Поток записи данных
//
Функция СоздатьЗапись(ТипОбъекта, ИмяФайла) Экспорт
Возврат Генератор.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла);
КонецФункции
// Записывает служебную информацию об уидах платформенных типов
//
// Параметры:
// Запись - ЗаписьXML - Поток записи
// ИмяОбъекта - Строка - Имя объекта конфигурации
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
//
Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт
Генератор.ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта);
КонецПроцедуры
Процедура ПриСозданииОбъекта(ФорматВыгрузки, ГенерацияРасширения) Экспорт
Если ФорматВыгрузки = ФорматыВыгрузки.EDT Тогда
Генератор = ГенераторОписанийEDT;
Иначе
Генератор = ГенераторОписанийКонфигуратор;
КонецЕсли;
ПараметрыГенерации = Генератор.СоздатьПараметрыГенерации("8.3.10", ГенерацияРасширения);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////

View File

@ -48,13 +48,13 @@
//
Функция СоздатьОписаниеКорневогоОбъекта(ОписаниеРасширения, ТипОбъекта, ИмяФайла, ПараметрыГенерации) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
НормТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации, ИмяФайла);
ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, ТипОбъекта, ЭтотОбъект);
ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, НормТипОбъекта, ЭтотОбъект);
Если ТипыОбъектовКонфигурации.ИмяТипаРасширения() = ТипОбъекта Тогда
Если ТипыОбъектовКонфигурации.ИмяТипаРасширения() = НормТипОбъекта Тогда
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("extension");
ЗаписьConfiguration.ЗаписатьАтрибут("xsi:type", "mdclassExtension:ConfigurationExtension");
@ -94,15 +94,15 @@
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
// ЗаписьConfiguration - ЗаписьXML - Поток записи описания
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации) Экспорт
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ЗаписьConfiguration) Экспорт
ИмяТипа = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ОбъектКонфигурации.Тип).НаименованиеКоллекцииEng;
ИмяТипа = НРег(Лев(ИмяТипа, 1)) + Сред(ИмяТипа, 2);
ИмяОбъекта = СтрШаблон("%1.%2", ОбъектКонфигурации.Тип, ОбъектКонфигурации.Наименование);
ОбработкаXML.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ИмяТипа, ИмяОбъекта);
ОбработкаXML.ЗаписатьЗначениеXML(ЗаписьConfiguration, ИмяТипа, ИмяОбъекта);
КонецПроцедуры

View File

@ -15,7 +15,7 @@
// ГенерацияРасширения - Булево - Флаг создания расширения
//
// Возвращаемое значение:
// Структура - Служебные параметры генератора
// ФиксированнаяСтруктура - Служебные параметры генератора
//
Функция СоздатьПараметрыГенерации(ВерсияПлатформы, ГенерацияРасширения) Экспорт
@ -34,7 +34,7 @@
ПараметрыГенерации.Вставить("ВерсияВыгрузки", ВерсияВыгрузки);
ПараметрыГенерации.Вставить("ГенерацияРасширения", ГенерацияРасширения = Истина);
Возврат ПараметрыГенерации;
Возврат Новый ФиксированнаяСтруктура(ПараметрыГенерации);
КонецФункции
@ -42,7 +42,7 @@
//
// Параметры:
// ОписаниеРасширения - Структура - Описание расширения, наименование синоним и прочее
// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
@ -92,12 +92,12 @@
// Проверок на существование объекта нет
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
// ЗаписьConfiguration - ЗаписьXML - Поток записи описания
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации) Экспорт
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ЗаписьConfiguration) Экспорт
ОбработкаXML.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ОбъектКонфигурации.Тип, ОбъектКонфигурации.Наименование);
ОбработкаXML.ЗаписатьЗначениеXML(ЗаписьConfiguration, ОбъектКонфигурации.Тип, ОбъектКонфигурации.Наименование);
КонецПроцедуры

View File

@ -6,10 +6,6 @@
Перем Рефлектор;
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////

View File

@ -1,46 +1,78 @@
// Создает набор параметров необходимый для записи описаний объектов
//
// Параметры:
// Конфигурация - Конфигурация, Расширение - Объект для, которого необходима запись
// ТипКорневогоЭлемента - Строка - Имя типа корневого элемента объекта
//
// Возвращаемое значение:
// Структура- Набор параметров записи
//
Функция СоздатьПараметрыЗаписи(Конфигурация, ТипКорневогоЭлемента) Экспорт
ГенерацияРасширения = ТипКорневогоЭлемента = ТипыОбъектовКонфигурации.ИмяТипаРасширения();
ПараметрыЗаписи = Новый Структура();
ПараметрыЗаписи.Вставить("ОписаниеКонфигурации", Конфигурация.ОписаниеКонфигурации());
ПараметрыЗаписи.Вставить("СтруктураКаталогов", Конфигурация.СтруктураКаталогов());
ПараметрыЗаписи.Вставить("ТипКорневогоЭлемента", ТипКорневогоЭлемента);
ПараметрыЗаписи.Вставить("ФорматВыгрузки", ПараметрыЗаписи.СтруктураКаталогов.ФорматВыгрузки());
ПараметрыЗаписи.Вставить("Изменения", Новый Структура("ИзмененКорневойОбъект", Ложь));
ПараметрыЗаписи.Вставить("Изменения", Новый Структура("ИзмененКорневойОбъект", Истина));
ГенераторОписаний = Новый ГенераторОписаний(ПараметрыЗаписи.ФорматВыгрузки, ТипКорневогоЭлемента = ТипыОбъектовКонфигурации.ИмяТипаРасширения());
Если ПараметрыЗаписи.ФорматВыгрузки = ФорматыВыгрузки.EDT Тогда
ГенераторОписаний = ГенераторОписанийEDT;
Иначе
ГенераторОписаний = ГенераторОписанийКонфигуратор;
КонецЕсли;
ПараметрыГенерации = ГенераторОписаний.СоздатьПараметрыГенерации("8.3.10", ГенерацияРасширения);
ПараметрыЗаписи.Вставить("ГенераторОписаний", ГенераторОписаний);
ПараметрыЗаписи.Вставить("ПараметрыГенерации", ПараметрыГенерации);
Возврат Новый ФиксированнаяСтруктура(ПараметрыЗаписи);
КонецФункции
Функция СохранитьОписание(ОбъектКонфигурации) Экспорт
// Сохраняет описание объекта конфигурации на диск
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Процедура СохранитьОписание(ОбъектКонфигурации) Экспорт
ПараметрыЗаписи = ОбъектКонфигурации.Конфигурация.ПараметрыЗаписи();
ДанныеОбъекта = ОбъектКонфигурации.Описание;
ИмяФайла = ПараметрыЗаписи.СтруктураКаталогов.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
Запись = ПараметрыЗаписи.ГенераторОписаний.СоздатьЗапись(ОбъектКонфигурации.Тип, ИмяФайла);
Запись = ПараметрыЗаписи.ГенераторОписаний.СоздатьЗапись(ОбъектКонфигурации.Тип, ПараметрыЗаписи.ПараметрыГенерации, ИмяФайла);
ОписаниеСвойств = СтруктурыОписаний.ОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип);
ПараметрыЗаписи.ГенераторОписаний.Генератор.ЗаписатьПорождаемыеТипы(Запись, ДанныеОбъекта.Наименование, ОбъектКонфигурации.Тип);
ПараметрыЗаписи.ГенераторОписаний.Генератор.ЗаписатьСвойства(Запись, ОбъектКонфигурации.Тип, ДанныеОбъекта);
ПараметрыЗаписи.ГенераторОписаний.ЗаписатьПорождаемыеТипы(Запись, ДанныеОбъекта.Наименование, ОбъектКонфигурации.Тип);
ПараметрыЗаписи.ГенераторОписаний.ЗаписатьСвойства(Запись, ОбъектКонфигурации.Тип, ДанныеОбъекта);
Если ОписаниеСвойств.ЕстьПодчиненные Тогда
ПараметрыЗаписи.ГенераторОписаний.Генератор.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено));
ПараметрыЗаписи.ГенераторОписаний.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено));
КонецЕсли;
ОбработкаXML.ЗакрытьЗапись(Запись);
КонецФункции
КонецПроцедуры
Функция Зафиксировать(ПараметрыЗаписи) Экспорт
// Записывает данные на диск
//
// Параметры:
// ПараметрыЗаписи - Структура - Параметры записи, уникальные для каждой конфигурации. См. СоздатьПараметрыЗаписи
//
Процедура Зафиксировать(ПараметрыЗаписи) Экспорт
ПараметрыЗаписи.ОписаниеКонфигурации.ОбъектыКонфигурации.Сортировать("Тип, Наименование");
@ -48,40 +80,44 @@
ИмяФайлаОписания = ПараметрыЗаписи.СтруктураКаталогов.ИмяФайлаОписанияКонфигурации();
ПараметрыЗаписи.ГенераторОписаний.СоздатьОписаниеКорневогоОбъекта(
ЗаписьConfiguration = ПараметрыЗаписи.ГенераторОписаний.СоздатьОписаниеКорневогоОбъекта(
ПараметрыЗаписи.ОписаниеКонфигурации.СвойстваКонфигурации,
ПараметрыЗаписи.ТипКорневогоЭлемента,
ИмяФайлаОписания);
ИмяФайлаОписания,
ПараметрыЗаписи.ПараметрыГенерации);
Для Каждого Стр Из ПараметрыЗаписи.ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
Если Стр.Тип <> ПараметрыЗаписи.ТипКорневогоЭлемента И Стр.Родитель = Неопределено Тогда
ПараметрыЗаписи.ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр);
ПараметрыЗаписи.ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр, ЗаписьConfiguration);
КонецЕсли;
КонецЦикла;
ПараметрыЗаписи.ГенераторОписаний.ЗафиксироватьОписаниеКорневогоОбъекта();
ОбработкаXML.ЗакрытьЗапись(ЗаписьConfiguration);
КонецЕсли;
КонецФункции
ПараметрыЗаписи.Изменения.ИзмененКорневойОбъект = Ложь;
// Создает структуру данных объекта
КонецПроцедуры
// Служебный метод, его необходимо вызывать при добавлении объекта в конфигурацию
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// Наименование - Строка - Имя объекта
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
// Возвращаемое значение:
// Структура - Пустышка описания объекта
//
Функция ПолучитьОписаниеОбъекта(ТипОбъекта, Наименование = Неопределено) Экспорт
Процедура ПриДобавленииОбъекта(ОбъектКонфигурации) Экспорт
ОписаниеОбъекта = СтруктурыОписаний.СоздатьОбъект(ТипОбъекта, Наименование);
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
ОбъектКонфигурации.Конфигурация.ПараметрыЗаписи().Изменения.ИзмененКорневойОбъект = Истина;
Возврат ОписаниеОбъекта;
КонецПроцедуры
КонецФункции
Процедура УстановитьПризнакИзменений(ПараметрыЗаписи, НовыйПризнакИзменений) Экспорт
ПараметрыЗаписи.Изменения.ИзмененКорневойОбъект = НовыйПризнакИзменений;
КонецПроцедуры

View File

@ -1,47 +1,80 @@
Функция ДобавитьОбъект(ОписаниеКонфигурации, Тип, ОписаниеИлиИмя) Экспорт
// Добавляет объект в конфигурацию
//
// Параметры:
// ОписаниеКонфигурации - ДанныеКонфигурации - Объект содержащий данные конфигурации (объекты, модули и т.д.)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// ОписаниеИлиИмя - Структура, Строка - Имя или данные объекта
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъект(ОписаниеКонфигурации, ТипОбъекта, ОписаниеИлиИмя) Экспорт
Если ТипЗнч(ОписаниеИлиИмя) = Тип("Строка") Тогда
Возврат ДобавитьОбъектПоИмени(ОписаниеКонфигурации, Тип, ОписаниеИлиИмя);
Возврат ДобавитьОбъектПоИмени(ОписаниеКонфигурации, ТипОбъекта, ОписаниеИлиИмя);
Иначе
Возврат ДобавитьОбъектПоОписанию(ОписаниеКонфигурации, Тип, ОписаниеИлиИмя);
Возврат ДобавитьОбъектПоОписанию(ОписаниеКонфигурации, ТипОбъекта, ОписаниеИлиИмя);
КонецЕсли;
КонецФункции
Функция ДобавитьОбъектПоИмени(ОписаниеКонфигурации, Тип, Имя) Экспорт
// Перегрузка метода добавить, выполняет добавление по типу и имени
//
// Параметры:
// ОписаниеКонфигурации - ДанныеКонфигурации - Объект содержащий данные конфигурации (объекты, модули и т.д.)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// Имя - Строка - Имя добавляемого объекта
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъектПоИмени(ОписаниеКонфигурации, ТипОбъекта, Имя) Экспорт
Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(Тип);
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
ОбъектКонфигурации = ОписаниеКонфигурации.НайтиОбъект(Имя, Тип);
ОбъектКонфигурации = ОписаниеКонфигурации.НайтиОбъект(Имя, ТипОбъекта);
Если ОбъектКонфигурации <> Неопределено Тогда
ВызватьИсключение СтрШаблон("Объект '%1.%2'уже зарегистрирован в конфигурации", Тип, Имя);
ВызватьИсключение СтрШаблон("Объект '%1.%2'уже зарегистрирован в конфигурации", ТипОбъекта, Имя);
КонецЕсли;
ОбъектКонфигурации = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ОбъектКонфигурации.Наименование = Имя;
ОбъектКонфигурации.Конфигурация = ОписаниеКонфигурации.Конфигурация;
ОбъектКонфигурации.Тип = Тип;
ОбъектКонфигурации.Тип = ТипОбъекта;
ОбъектКонфигурации.ПолноеНаименование = Тип + "." + ОбъектКонфигурации.Наименование;
ОписаниеКонфигурации.Конфигурация.ПараметрыЗаписи().Изменения.ИзмененКорневойОбъект = Истина;
ОбъектКонфигурации.ПолноеНаименование = ТипОбъекта + "." + ОбъектКонфигурации.Наименование;
Возврат ОбъектКонфигурации;
КонецФункции
Функция ДобавитьОбъектПоОписанию(ОписаниеКонфигурации, Тип, ОписаниеОбъекта) Экспорт
// Перегрузка метода добавить, выполняет добавление по типу и данным объекта
//
// Параметры:
// ОписаниеКонфигурации - ДанныеКонфигурации - Объект содержащий данные конфигурации (объекты, модули и т.д.)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// ОписаниеОбъекта - Структура - Данные описания объекта
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъектПоОписанию(ОписаниеКонфигурации, ТипОбъекта, ОписаниеОбъекта) Экспорт
ОбъектКонфигурации = ДобавитьОбъектПоИмени(ОписаниеКонфигурации, Тип, ОписаниеОбъекта.Наименование);
ОбъектКонфигурации = ДобавитьОбъектПоИмени(ОписаниеКонфигурации, ТипОбъекта, ОписаниеОбъекта.Наименование);
ОбъектКонфигурации.Описание = ОписаниеОбъекта;
Возврат ОбъектКонфигурации;
КонецФункции
// Выполняет настройку объекта для создания новой конфигурации
//
// Параметры:
// Конфигурация - Конфигурация - Описание конфигурации
//
Процедура ИнициализироватьСозданиеНового(Конфигурация) Экспорт
СвойстваКонфигурации = СтруктурыОписаний.СоздатьОбъект(ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(), "Конфигурация");

View File

@ -8,6 +8,15 @@
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Добавляет объект конфигурации в расширение, для переопределения, либо использования
//
// Параметры:
// ОписаниеКонфигурации - ДанныеКонфигурации - Объект содержащий данные конфигурации (объекты, модули и т.д.)
// ОбъектРодительскойКонфигурации - СтрокаТаблицыЗначений - Описание объекта родительской конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта расширения. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъектВРасширение(ОписаниеКонфигурации, ОбъектРодительскойКонфигурации) Экспорт
Тип = ОбъектРодительскойКонфигурации.Тип;
@ -35,9 +44,17 @@
КонецФункции
// Выполняет настройку объекта для создания нового расширения
//
// Параметры:
// Расширение - Расширение - Описание расширения
//
Процедура ИнициализироватьСозданиеНового(Расширение) Экспорт
СвойстваРасширения = СтруктурыОписаний.СоздатьОбъект(ТипыОбъектовКонфигурации.ИмяТипаРасширения(), "Расширение");
СвойстваРасширения.Принадлежность = "Adopted";
СвойстваРасширения.Назначение = "Customization";
Расширение.ОписаниеКонфигурации().СвойстваКонфигурации = СвойстваРасширения;
КонецПроцедуры

View File

@ -59,11 +59,11 @@
Функция ТаблицаОписанияМодулей() Экспорт
МодулиКонфигурации = Новый ТаблицаЗначений;
МодулиКонфигурации.Колонки.Добавить("ТипМодуля");
МодулиКонфигурации.Колонки.Добавить("ТипМодуля", Новый ОписаниеТипов("Строка"));
МодулиКонфигурации.Колонки.Добавить("Родитель");
МодулиКонфигурации.Колонки.Добавить("ПутьКФайлу");
МодулиКонфигурации.Колонки.Добавить("ПутьКФайлу", Новый ОписаниеТипов("Строка"));
МодулиКонфигурации.Колонки.Добавить("НаборБлоков");
МодулиКонфигурации.Колонки.Добавить("Содержимое");
МодулиКонфигурации.Колонки.Добавить("Содержимое", Новый ОписаниеТипов("Строка"));
МодулиКонфигурации.Колонки.Добавить("РодительФорма");
МодулиКонфигурации.Колонки.Добавить("РодительКоманда");
МодулиКонфигурации.Колонки.Добавить("ОписаниеМодуля");

View File

@ -1,5 +1,14 @@
#Использовать fs
// Создает набор параметров необходимый для чтения описаний объектов
//
// Параметры:
// Конфигурация - Конфигурация, Расширение - Объект для, которого необходимо чтение
// ТипКорневогоЭлемента - Строка - Имя типа корневого элемента объекта
//
// Возвращаемое значение:
// Структура- Набор параметров чтения
//
Функция СоздатьПараметрыЧтения(Конфигурация, ТипКорневогоЭлемента) Экспорт
ПараметрыЧтения = Новый Структура();
@ -70,6 +79,58 @@
КонецПроцедуры
// Выполняет поиск всех модулей конфигурации
//
Процедура НайтиМодулиКонфигурации(ПараметрыЧтения) Экспорт
ОписаниеКонфигурации = ПараметрыЧтения.ОписаниеКонфигурации;
ОбъектыКонфигурации = ОписаниеКонфигурации.ОбъектыКонфигурации;
СтруктураКаталогов = ПараметрыЧтения.СтруктураКаталогов;
Для Каждого ОбъектКонфигурации Из ОбъектыКонфигурации Цикл
ФайлыМодулей = СтруктураКаталогов.НайтиМодулиОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип, Истина);
Для Каждого ИмяФайлаМодуля Из ФайлыМодулей Цикл
ПолучитьОписаниеМодуляПоИмениФайла(ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации);
КонецЦикла;
КонецЦикла;
ОписаниеКонфигурации.Модули.Сортировать("ПутьКФайлу");
КонецПроцедуры
// Читает и выполняет анализ содержимого модуля
// Устанавливает реквизиты "НаборБлоков" и "Содержимое"
// Параметры:
// СтрокаМодуль - СтрокаТаблицыЗначений - Базовое описание модуля
//
Процедура ПрочитатьСодержимоеМодуля(СтрокаМодуль) Экспорт
Файл = Новый ТекстовыйДокумент;
Файл.Прочитать(СтрокаМодуль.ПутьКФайлу, КодировкаТекста.UTF8NoBOM);
СодержимоеМодуля = ЧтениеМодулей.ПрочитатьМодуль(Файл, СтрокаМодуль);
СтрокаМодуль.Содержимое = СодержимоеМодуля.Содержимое;
СтрокаМодуль.НаборБлоков = СодержимоеМодуля.БлокиМодуля;
Если СтрокаМодуль.ТипМодуля = ТипыМодуля.ОбщийМодуль Тогда
Если СтрокаМодуль.Родитель.Описание = Неопределено Тогда
ПрочитатьОписание(СтрокаМодуль.Родитель);
КонецЕсли;
СтрокаМодуль.ОписаниеМодуля.Вставить("Глобальный", СтрокаМодуль.Родитель.Описание.Глобальный);
КонецЕсли;
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
@ -117,67 +178,55 @@
КонецФункции
Функция ПолучитьОписаниеМодуляПоИмениФайла(Знач ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации)
НовыйМодульКонфигурации = Неопределено;
ПустаяСтрокаМодульКонфигурации = Новый Структура(
"ПутьКФайлу, ТипМодуля, ОписаниеМодуля, Родитель, РодительФорма, РодительКоманда, НаборБлоков, Содержимое",
"", "", Новый Структура, Неопределено, Неопределено, Неопределено, Неопределено, Неопределено);
Процедура ПолучитьОписаниеМодуляПоИмениФайла(Знач ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации)
ТипЭтогоМодуля = ТипыМодуля.ТипМодуляПоИмениФайла(ИмяФайлаМодуля);
Если Не ПустаяСтрока(ТипЭтогоМодуля) Тогда
Если ПустаяСтрока(ТипЭтогоМодуля) Тогда
ФормаОбъекта = Неопределено;
КомандаОбъекта = Неопределено;
Если ТипЭтогоМодуля = ТипыМодуля.МодульОбъекта
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульМенеджера
ИЛИ ТипЭтогоМодуля = ТипыМодуля.ОбщийМодуль
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульУправляемогоПриложения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульСеанса
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульВнешнегоСоединения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульОбычногоПриложения Тогда
ИначеЕсли ТипыМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
ФормаОбъекта = ОписаниеКонфигурации.ФормыКонфигурации.Добавить();
ФормаОбъекта.Родитель = ОбъектКонфигурации;
ФормаОбъекта.ЭтоУправляемаяФорма = ТипЭтогоМодуля = ТипыМодуля.МодульУправляемойФормы;
ФормаОбъекта.Наименование = ПолучитьИмяФормыИзИмениФайлаМодуля(ИмяФайлаМодуля);
ИначеЕсли ТипЭтогоМодуля = ТипыМодуля.МодульКоманды Тогда
КомандаОбъекта = ОписаниеКонфигурации.КомандыКонфигурации.Добавить();
КомандаОбъекта.Родитель = ОбъектКонфигурации;
КомандаОбъекта.Наименование = ПолучитьИмяКомандыИзИмениФайлаМодуля(ИмяФайлаМодуля);
Иначе
ВызватьИсключение "Тип модуля: " + ТипЭтогоМодуля + " не имеет алгоритма разбора";
КонецЕсли;
НовыйМодульКонфигурации = ОписаниеКонфигурации.МодулиКонфигурации.Добавить();
ЗаполнитьЗначенияСвойств(НовыйМодульКонфигурации, ПустаяСтрокаМодульКонфигурации);
НовыйМодульКонфигурации.ТипМодуля = ТипЭтогоМодуля;
НовыйМодульКонфигурации.ПутьКФайлу = ИмяФайлаМодуля;
НовыйМодульКонфигурации.Родитель = ОбъектКонфигурации;
НовыйМодульКонфигурации.РодительФорма = ФормаОбъекта;
НовыйМодульКонфигурации.РодительКоманда = КомандаОбъекта;
Возврат;
КонецЕсли;
Если НовыйМодульКонфигурации <> Неопределено Тогда
ФормаОбъекта = Неопределено;
КомандаОбъекта = Неопределено;
ЗаполнитьЗначенияСвойств(ПустаяСтрокаМодульКонфигурации, НовыйМодульКонфигурации);
Если ТипЭтогоМодуля = ТипыМодуля.МодульОбъекта
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульМенеджера
ИЛИ ТипЭтогоМодуля = ТипыМодуля.ОбщийМодуль
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульУправляемогоПриложения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульСеанса
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульВнешнегоСоединения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульОбычногоПриложения Тогда
ИначеЕсли ТипыМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
ФормаОбъекта = ОписаниеКонфигурации.ФормыКонфигурации.Добавить();
ФормаОбъекта.Родитель = ОбъектКонфигурации;
ФормаОбъекта.ЭтоУправляемаяФорма = ТипЭтогоМодуля = ТипыМодуля.МодульУправляемойФормы;
ФормаОбъекта.Наименование = ПолучитьИмяФормыИзИмениФайлаМодуля(ИмяФайлаМодуля);
ИначеЕсли ТипЭтогоМодуля = ТипыМодуля.МодульКоманды Тогда
КомандаОбъекта = ОписаниеКонфигурации.КомандыКонфигурации.Добавить();
КомандаОбъекта.Родитель = ОбъектКонфигурации;
КомандаОбъекта.Наименование = ПолучитьИмяКомандыИзИмениФайлаМодуля(ИмяФайлаМодуля);
Иначе
ВызватьИсключение "Тип модуля: " + ТипЭтогоМодуля + " не имеет алгоритма разбора";
КонецЕсли;
Возврат ПустаяСтрокаМодульКонфигурации;
НовыйМодульКонфигурации = ОписаниеКонфигурации.Модули.Добавить();
НовыйМодульКонфигурации.ТипМодуля = ТипЭтогоМодуля;
НовыйМодульКонфигурации.ПутьКФайлу = ИмяФайлаМодуля;
НовыйМодульКонфигурации.Родитель = ОбъектКонфигурации;
НовыйМодульКонфигурации.РодительФорма = ФормаОбъекта;
НовыйМодульКонфигурации.РодительКоманда = КомандаОбъекта;
НовыйМодульКонфигурации.ОписаниеМодуля = Новый Структура();
КонецФункции
КонецПроцедуры
///////////////////////////////////////////////////////////////////

View File

@ -6,7 +6,7 @@
Перем ОбъектыКонфигурации Экспорт;
Перем СвойстваКонфигурации Экспорт;
Перем МодулиКонфигурации Экспорт;
Перем Модули Экспорт;
Перем ФормыКонфигурации Экспорт;
Перем КомандыКонфигурации Экспорт;
@ -18,6 +18,15 @@
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Выполняет поиск объекта конфигурации
//
// Параметры:
// ИмяОбъекта - Строка - Полное или короткое имя объекта (Полное - Справочник.Пользователи, короткой - Пользователи)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция НайтиОбъект(Знач ИмяОбъекта, Знач ТипОбъекта = Неопределено) Экспорт
Если ТипОбъекта = Неопределено
@ -50,6 +59,14 @@
КонецФункции
// Возвращает коллекцию объектов переданного типа
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
//
// Возвращаемое значение:
// Массив - Коллекция объектов, структура объектов см. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция НайтиОбъектыПоТипу(Знач ТипОбъекта) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
@ -58,12 +75,12 @@
КонецФункции
Процедура ПриСозданииОбъекта(пКонфигурация) Экспорт
Процедура ПриСозданииОбъекта(пКонфигурация)
Конфигурация = пКонфигурация;
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
МодулиКонфигурации = СтруктурыОписаний.ТаблицаОписанияМодулей();
Модули = СтруктурыОписаний.ТаблицаОписанияМодулей();
// todo сделать чтение форм
ФормыКонфигурации = Новый ТаблицаЗначений;

View File

@ -13,26 +13,70 @@
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Читает описание структуры конфигурации
// * Описание конфигурации
// * Определяет местоположение описаний (файлов и каталогов)
//
Процедура ПрочитатьСтруктуру() Экспорт
ЧтениеКонфигурации.ПрочитатьСтруктуруКонфигурации(ПараметрыЧтения);
ЗаписьКонфигурации.УстановитьПризнакИзменений(ПараметрыЗаписи, Ложь);
КонецПроцедуры
Функция ДобавитьОбъект(Тип, ОписаниеОбъекта) Экспорт
// Добавляет новый объект в конфигурацию
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// ОписаниеОбъекта - Структура, Строка - Данные объекта или его имя
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъект(ТипОбъекта, ОписаниеОбъекта) Экспорт
ОбъектКонфигурации = РедакторКонфигурации.ДобавитьОбъект(ОписаниеКонфигурации, Тип, ОписаниеОбъекта);
ОбъектКонфигурации = РедакторКонфигурации.ДобавитьОбъект(ОписаниеКонфигурации, ТипОбъекта, ОписаниеОбъекта);
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
ЗаписьКонфигурации.ПриДобавленииОбъекта(ОбъектКонфигурации);
Возврат ОбъектКонфигурации;
КонецФункции
// Записывает данные на диск
//
Процедура Зафиксировать() Экспорт
ЗаписьКонфигурации.Зафиксировать(ПараметрыЗаписи);
КонецПроцедуры
// Читает описание переданного объекта, его свойства и параметры
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ЧтениеКонфигурации.ПрочитатьОписание(ОбъектКонфигурации);
КонецПроцедуры
// Сохраняет описание переданного объекта, его свойства и параметры
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Процедура ЗаписатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
КонецПроцедуры
// Возвращает описание конфигурации
//
// Возвращаемое значение:
// Структура - Описание конфигурации
// ДанныеКонфигурации - Описание конфигурации
//
Функция ОписаниеКонфигурации() Экспорт
@ -40,18 +84,65 @@
КонецФункции
// Возвращает объект для работы с иерархией каталогов расширения
//
// Возвращаемое значение:
// СтруктураКаталоговКонфигурации - объект для работы с иерархией каталогов расширения
//
Функция СтруктураКаталогов() Экспорт
Возврат СтруктураКаталогов;
КонецФункции
// Выполняет поиск модулей конфигурации
// Найденные модули будут доступны ОписаниеКонфигурации().Модули
//
Процедура НайтиМодули() Экспорт
ЧтениеКонфигурации.НайтиМодулиКонфигурации(ПараметрыЧтения);
КонецПроцедуры
// Выполняет чтение вложенных подсистем и привязку их к объектам конфигурации
//
Процедура ЗаполнитьПодсистемыОбъектовКонфигурации() Экспорт
ЧтениеКонфигурации.ЗаполнитьПодсистемыОбъектовКонфигурации(ПараметрыЧтения);
КонецПроцедуры
// Читает и выполняет анализ содержимого модуля
// Устанавливает реквизиты "НаборБлоков" и "Содержимое"
// Параметры:
// СтрокаМодуль - СтрокаТаблицыЗначений - Базовое описание модуля
//
Процедура ПрочитатьСодержимоеМодуля(СтрокаМодуль) Экспорт
ЧтениеКонфигурации.ПрочитатьСодержимоеМодуля(СтрокаМодуль);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Возвращает служебные параметры для чтения данных с диска
//
// Возвращаемое значение:
// Структура - Параметры чтения
//
Функция ПараметрыЧтения() Экспорт
Возврат ПараметрыЧтения;
КонецФункции
// Возвращает служебные параметры для записи данных на диск
//
// Возвращаемое значение:
// Структура - Параметры записи
//
Функция ПараметрыЗаписи() Экспорт
Возврат ПараметрыЗаписи;

View File

@ -13,43 +13,88 @@
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Читает описание структуры конфигурации
// * Описание конфигурации
// * Определяет местоположение описаний (файлов и каталогов)
//
Процедура ПрочитатьСтруктуру() Экспорт
ЧтениеКонфигурации.ПрочитатьСтруктуруКонфигурации(ПараметрыЧтения);
ПараметрыЗаписи.Изменения.ИзмененКорневойОбъект = Ложь;
ЗаписьКонфигурации.УстановитьПризнакИзменений(ПараметрыЗаписи, Ложь);
КонецПроцедуры
Функция ДобавитьОбъект(Тип, ОписаниеОбъекта) Экспорт
// Добавляет новый объект в конфигурацию
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// ОписаниеОбъекта - Структура, Строка - Данные объекта или его имя
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъект(ТипОбъекта, ОписаниеОбъекта) Экспорт
ОбъектКонфигурации = РедакторКонфигурации.ДобавитьОбъект(ОписаниеКонфигурации, Тип, ОписаниеОбъекта);
ОбъектКонфигурации = РедакторКонфигурации.ДобавитьОбъект(ОписаниеКонфигурации, ТипОбъекта, ОписаниеОбъекта);
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
ЗаписьКонфигурации.ПриДобавленииОбъекта(ОбъектКонфигурации);
Возврат ОбъектКонфигурации;
КонецФункции
// Добавляет объект базовой конфигурации в расширение
//
// Параметры:
// ОбъектРодительскойКонфигурации - СтрокаТаблицыЗначений - Описание объекта родительской конфигурации
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта расширения. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция ДобавитьОбъектВРасширение(ОбъектРодительскойКонфигурации) Экспорт
ОбъектКонфигурации = РедакторРасширения.ДобавитьОбъектВРасширение(ОписаниеКонфигурации, ОбъектРодительскойКонфигурации);
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
ЗаписьКонфигурации.ПриДобавленииОбъекта(ОбъектКонфигурации);
Возврат ОбъектКонфигурации;
КонецФункции
// Записывает данные на диск
//
Процедура Зафиксировать() Экспорт
ЗаписьКонфигурации.Зафиксировать(ПараметрыЗаписи);
КонецПроцедуры
// Читает описание переданного объекта, его свойства и параметры
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ЧтениеКонфигурации.ПрочитатьОписание(ОбъектКонфигурации);
КонецПроцедуры
// Сохраняет описание переданного объекта, его свойства и параметры
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Процедура ЗаписатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ЗаписьКонфигурации.СохранитьОписание(ОбъектКонфигурации);
КонецПроцедуры
// Возвращает описание конфигурации
//
// Возвращаемое значение:
// Структура - Описание конфигурации
// ДанныеКонфигурации - Описание конфигурации
//
Функция ОписаниеКонфигурации() Экспорт
@ -57,24 +102,71 @@
КонецФункции
// Возвращает объект для работы с иерархией каталогов расширения
//
// Возвращаемое значение:
// СтруктураКаталоговКонфигурации - объект для работы с иерархией каталогов расширения
//
Функция СтруктураКаталогов() Экспорт
Возврат СтруктураКаталогов;
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Возвращает служебные параметры для чтения данных с диска
//
// Возвращаемое значение:
// Структура - Параметры чтения
//
Функция ПараметрыЧтения() Экспорт
Возврат ПараметрыЧтения;
КонецФункции
// Возвращает служебные параметры для записи данных на диск
//
// Возвращаемое значение:
// Структура - Параметры записи
//
Функция ПараметрыЗаписи() Экспорт
Возврат ПараметрыЗаписи;
КонецФункции
// Выполняет поиск модулей конфигурации
// Найденные модули будут доступны ОписаниеКонфигурации().Модули
//
Процедура НайтиМодули() Экспорт
ЧтениеКонфигурации.НайтиМодулиКонфигурации(ПараметрыЧтения);
КонецПроцедуры
// Выполняет чтение вложенных подсистем и привязку их к объектам конфигурации
//
Процедура ЗаполнитьПодсистемыОбъектовКонфигурации() Экспорт
ЧтениеКонфигурации.ЗаполнитьПодсистемыОбъектовКонфигурации(ПараметрыЗаписи);
КонецПроцедуры
// Читает и выполняет анализ содержимого модуля
// Устанавливает реквизиты "НаборБлоков" и "Содержимое"
// Параметры:
// СтрокаМодуль - СтрокаТаблицыЗначений - Базовое описание модуля
//
Процедура ПрочитатьСодержимоеМодуля(СтрокаМодуль) Экспорт
ЧтениеКонфигурации.ПрочитатьСодержимоеМодуля(СтрокаМодуль);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
@ -86,6 +178,5 @@
ПараметрыЧтения = ЧтениеКонфигурации.СоздатьПараметрыЧтения(ЭтотОбъект, "Extension");
ПараметрыЗаписи = ЗаписьКонфигурации.СоздатьПараметрыЗаписи(ЭтотОбъект, "Extension");
ПараметрыЗаписи.Изменения.ИзмененКорневойОбъект = Истина;
КонецПроцедуры

View File

@ -1,15 +1,28 @@
///////////////////////////////////////////////////////////////////////////////
//
// Корневой объект библиотеки. Содержит методы конструкторы.
// Создает объекты для работы с выгрузками описаний конфигураций и расширений
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Создает объект для чтение и редактирования описания конфигурации
// Выполняет чтение структуры описания
//
// Параметры:
// КаталогИсходников - Строка - Каталог, который содержит описание конфигурации
// ФорматВыгрузки - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
// Если указать "Авто", произойдет автоматическое определение формата выгрузки
//
// Возвращаемое значение:
// Конфигурация - Объект для формирования описания
//
Функция ЗагрузитьКонфигурацию(КаталогИсходников, Формат = "Авто") Экспорт
Функция ЗагрузитьКонфигурацию(КаталогИсходников, ФорматВыгрузки = "Авто") Экспорт
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, Формат, Истина);
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, ФорматВыгрузки, Истина);
Конфигурация = Новый Конфигурация(СтруктураКаталогов);
Конфигурация.ПрочитатьСтруктуру();
@ -23,13 +36,15 @@
//
// Параметры:
// КаталогИсходников - Строка - Каталог, который содержит описание расширения
// ФорматВыгрузки - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
// Если указать "Авто", произойдет автоматическое определение формата выгрузки
//
// Возвращаемое значение:
// Расширение - Объект для формирования описания
//
Функция ЗагрузитьРасширение(КаталогИсходников, Формат = "Авто") Экспорт
Функция ЗагрузитьРасширение(КаталогИсходников, ФорматВыгрузки = "Авто") Экспорт
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, Формат, Истина);
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, ФорматВыгрузки, Истина);
Расширение = Новый Расширение(СтруктураКаталогов);
Расширение.ПрочитатьСтруктуру();
@ -42,14 +57,14 @@
//
// Параметры:
// КаталогИсходников - Строка - Каталог, в который записываются описания
// Формат - Строка - Формат описания
// ФорматВыгрузки - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
//
// Возвращаемое значение:
// Конфигурация - Объект для формирования описания
//
Функция СоздатьНовуюКонфигурацию(КаталогИсходников, Формат) Экспорт
Функция СоздатьНовуюКонфигурацию(КаталогИсходников, ФорматВыгрузки) Экспорт
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, Формат, Истина);
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, ФорматВыгрузки, Истина);
Конфигурация = Новый Конфигурация(СтруктураКаталогов);
@ -63,14 +78,14 @@
//
// Параметры:
// КаталогИсходников - Строка - Каталог, в который записываются описания
// Формат - Строка - Формат описания
// ФорматВыгрузки - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
//
// Возвращаемое значение:
// Расширение - Объект для формирования описания
//
Функция СоздатьНовоеРасширение(КаталогИсходников, Формат) Экспорт
Функция СоздатьНовоеРасширение(КаталогИсходников, ФорматВыгрузки) Экспорт
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, Формат, Истина);
СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, ФорматВыгрузки, Истина);
Расширение = Новый Расширение(СтруктураКаталогов);
@ -85,14 +100,14 @@
// Используется для регистрации новых объектов в конфигурации
//
// Параметры:
// Тип - Строка - Тип объекта конфигурации
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
// Наименование - Строка - Наименование объекта
//
// Возвращаемое значение:
// Структура - пустышка описания объекта
//
Функция СоздатьОбъектКонфигурации(Тип, Наименование) Экспорт
Функция СоздатьОбъектКонфигурации(ТипОбъекта, Наименование) Экспорт
Возврат СтруктурыОписаний.СоздатьОбъект(Тип, Наименование);
Возврат СтруктурыОписаний.СоздатьОбъект(ТипОбъекта, Наименование);
КонецФункции

View File

@ -7,7 +7,7 @@
//
///////////////////////////////////////////////////////////////////////////////
#Использовать ".."
#Использовать "../src"
#Использовать logos
#Использовать asserts
#Использовать fs
@ -42,23 +42,21 @@
Процедура ТестДолженПрочитатьВыгрузкуВИерархическомФорматеКонфигуратора() Экспорт
Парсер = ПарсерBSL.ПарсерКонфигурации(ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10"));
Парсер.ПрочитатьСтруктуруКонфигурации();
Парсер.ЗаполнитьПодсистемыОбъектовКонфигурации();
Парсер.НайтиМодулиКонфигурации();
Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10"));
Конфигурация.ЗаполнитьПодсистемыОбъектовКонфигурации();
Конфигурация.НайтиМодули();
ПроверитьРезультатЧтенияВыгрузки(Парсер, 168, 89);
ПроверитьРезультатЧтенияВыгрузки(Конфигурация, 168, 89);
КонецПроцедуры
Процедура ТестДолженПрочитатьВыгрузкуВФорматеEDT() Экспорт
Парсер = ПарсерBSL.ПарсерКонфигурации(ОбъединитьПути(КаталогФикстур(), "edtconfigurations", "Demo_8_3_10", "src"));
Парсер.ПрочитатьСтруктуруКонфигурации();
Парсер.ЗаполнитьПодсистемыОбъектовКонфигурации();
Парсер.НайтиМодулиКонфигурации();
Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(ОбъединитьПути(КаталогФикстур(), "edtconfigurations", "Demo_8_3_10", "src"));
Конфигурация.ЗаполнитьПодсистемыОбъектовКонфигурации();
Конфигурация.НайтиМодули();
ПроверитьРезультатЧтенияВыгрузки(Парсер, 167, 89);
ПроверитьРезультатЧтенияВыгрузки(Конфигурация, 167, 89);
КонецПроцедуры
@ -69,7 +67,7 @@
Процедура ПроверитьРезультатЧтенияВыгрузки(Парсер, КоличествоОбъектов, КоличествоМодулей)
Ожидаем.Что(Парсер.ОписаниеКонфигурации().ОбъектыКонфигурации.Количество(), "Количество найденных объектов не соответствует фактическому").Равно(КоличествоОбъектов);
Ожидаем.Что(Парсер.ОписаниеКонфигурации().МодулиКонфигурации.Количество(), "Количество найденных модулей не соответствует фактическому").Равно(КоличествоМодулей);
Ожидаем.Что(Парсер.ОписаниеКонфигурации().Модули.Количество(), "Количество найденных модулей не соответствует фактическому").Равно(КоличествоМодулей);
Для Каждого Объект Из Парсер.ОписаниеКонфигурации().ОбъектыКонфигурации Цикл
@ -77,7 +75,7 @@
КонецЦикла;
Для Каждого Объект Из Парсер.ОписаниеКонфигурации().МодулиКонфигурации Цикл
Для Каждого Объект Из Парсер.ОписаниеКонфигурации().Модули Цикл
Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] модуля объекта ""%1""", Объект.Родитель.ПолноеНаименование, Объект.ПутьКФайлу)).ЭтоИстина();
Парсер.ПрочитатьСодержимоеМодуля(Объект);
@ -91,3 +89,5 @@
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "common-fixtures");
КонецФункции
ТестДолженПрочитатьВыгрузкуВФорматеEDT();

View File

@ -8,7 +8,7 @@
///////////////////////////////////////////////////////////////////
#Использовать asserts
#Использовать ".."
#Использовать "../src"
///////////////////////////////////////////////////////////////////

View File

@ -26,8 +26,8 @@
МассивТестов = Новый Массив;
МассивТестов.Добавить("ТестДобавитьВКонфигурациюЭлементы");
МассивТестов.Добавить("ТестУдалитьИзКонфигурацииЭлементы");
МассивТестов.Добавить("ТестИзменитьКонфигурацию");
// МассивТестов.Добавить("ТестУдалитьИзКонфигурацииЭлементы");
// МассивТестов.Добавить("ТестИзменитьКонфигурацию");
Возврат МассивТестов;
@ -45,6 +45,7 @@
КаталогКонфигурации = ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10");
КаталогКонфигурации = ВременныйКаталогКонфигурации(КаталогКонфигурации);
Конфигурация = РазборКонфигураций.ЗагрузитьКонфигурацию(КаталогКонфигурации);
Для Каждого Справочник Из Конфигурация.ОписаниеКонфигурации().НайтиОбъектыПоТипу("Справочник") Цикл
@ -58,6 +59,8 @@
Конфигурация.Зафиксировать();
УдалитьФайлы(КаталогКонфигурации);
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
@ -70,4 +73,12 @@
КонецФункции
ТестДобавитьВКонфигурациюЭлементы();
Функция ВременныйКаталогКонфигурации(КаталогИсходников)
Каталог = ПолучитьИмяВременногоФайла();
ФС.КопироватьСодержимоеКаталога(КаталогИсходников, Каталог);
Возврат Каталог;
КонецФункции

View File

@ -170,5 +170,3 @@
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "common-fixtures");
КонецФункции
ТестВключенияВсехМодулейВРасширениеКонфигуратор();