diff --git a/src/ГенераторОписаний/Классы/ГенераторОписаний.os b/src/ГенераторОписаний/Классы/ГенераторОписаний.os new file mode 100644 index 0000000..502d455 --- /dev/null +++ b/src/ГенераторОписаний/Классы/ГенераторОписаний.os @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Описание модуля +// +/////////////////////////////////////////////////////////////////////////////// + +Перем Генератор Экспорт; +Перем ПараметрыГенерации Экспорт; + +/////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС +/////////////////////////////////////////////////////////////////////////////// + +// Создает и инициализирует поток записи описаний корневого объекта +// +// Параметры: +// Описание - Структура - Описание объекта, наименование синоним и прочее +// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...) +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные +// +Функция СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла) Экспорт + + Запись = Генератор.СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла, ПараметрыГенерации); + ПараметрыГенерации.Вставить("ЗаписьConfiguration", Запись); + + Возврат Запись; + +КонецФункции + +// Сохраняет и закрывает поток записи описаний корневого объекта +// +Процедура ЗафиксироватьОписаниеКорневогоОбъекта() Экспорт + + ОбработкаXML.ЗакрытьЗапись(ПараметрыГенерации.ЗаписьConfiguration); + ПараметрыГенерации.ЗаписьConfiguration = Неопределено; + +КонецПроцедуры + +// Регистрирует объект в списке объектов конфигурации +// +// Параметры: +// ОбъектКонфигурации - Произвольный - Объект содержащий реквизиты - Тип и Наименование +// +Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации) Экспорт + + Генератор.ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации); + +КонецПроцедуры + +// Создает поток и инициализирует поток записи описания объекта +// +// Параметры: +// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...) +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные +// +// Возвращаемое значение: +// ЗаписьXML - Поток записи данных +// +Функция СоздатьЗапись(ТипОбъекта, ИмяФайла) Экспорт + + Возврат Генератор.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла); + +КонецФункции + +// Записывает служебную информацию об уидах платформенных типов +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// ИмяОбъекта - Строка - Имя объекта конфигурации +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md +// +Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт + + Генератор.ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта); + +КонецПроцедуры + +Процедура ПриСозданииОбъекта(ФорматВыгрузки, ГенерацияРасширения) Экспорт + + Если ФорматВыгрузки = ФорматыВыгрузки.EDT Тогда + + Генератор = ГенераторОписанийEDT; + + Иначе + + Генератор = ГенераторОписанийКонфигуратор; + + КонецЕсли; + + ПараметрыГенерации = Генератор.СоздатьПараметрыГенерации("8.3.10", ГенерацияРасширения); + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +/////////////////////////////////////////////////////////////////////////////// diff --git a/src/ГенераторОписаний/Классы/ГенераторРасширений.os b/src/ГенераторОписаний/Классы/ГенераторРасширений.os index 5e7e4ef..3054c64 100644 --- a/src/ГенераторОписаний/Классы/ГенераторРасширений.os +++ b/src/ГенераторОписаний/Классы/ГенераторРасширений.os @@ -13,41 +13,84 @@ Перем ЗаписьConfiguration; Перем ОписаниеКонфигурации; Перем Лог; -Перем СтруктураКаталоговПриемник; -Перем ПараметрыГенерации; -Перем ГенераторОписаний; +Перем СтруктураКаталогов; +Перем ГенераторОписаний Экспорт; +Перем ТипКорневогоЭлемента; + +Перем Парсер; /////////////////////////////////////////////////////////////////// // Программный интерфейс /////////////////////////////////////////////////////////////////// -// Устанавливает свойства расширения и подготавливает генератор +// Инициализирует новое расширение в указанном каталоге +// +// Параметры: +// КаталогНазначения - Строка - Путь к каталогу нового расширения +// Формат - Строка - Формат выгрузки, см ФорматыВыгрузки +// +Процедура СоздатьНовоеРасширение(Знач КаталогНазначения, Формат) Экспорт + + КаталогНазначения = (Новый Файл(КаталогНазначения)).ПолноеИмя; + + Лог.Информация("Начало генерации расширения"); + + Если НЕ ФС.КаталогСуществует(КаталогНазначения) Тогда + + ФС.ОбеспечитьКаталог(КаталогНазначения); + + ИначеЕсли НЕ ФС.КаталогПустой(КаталогНазначения) Тогда + + Лог.Предупреждение("Каталог расширения ""%1"" не пустой. Каталог будет очищен", КаталогНазначения); + ФС.ОбеспечитьПустойКаталог(КаталогНазначения); + + КонецЕсли; + + ИнициализироватьПеременные(КаталогНазначения, Формат); + + СтрокаКонфигурация = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить(); + СтрокаКонфигурация.Тип = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(); + СтрокаКонфигурация.Наименование = СтрокаКонфигурация.Тип; + СтрокаКонфигурация.ПутьКФайлу = СтруктураКаталогов.ИмяФайлаОписанияКонфигурации(); + СтрокаКонфигурация.Описание = ОписаниеКонфигурации.СвойстваКонфигурации; + +КонецПроцедуры + +// Читает расширение из каталога и подготавливает к модификации +// +// Параметры: +// КаталогНазначения - Строка - Путь к каталогу нового расширения +// +Процедура Загрузить(Знач КаталогНазначения) Экспорт + + Если НЕ ФС.КаталогСуществует(КаталогНазначения) Тогда + + ВызватьИсключение "Каталог не найден " + КаталогНазначения; + + КонецЕсли; + + КаталогНазначения = (Новый Файл(КаталогНазначения)).ПолноеИмя; + + Парсер = ПарсерBSL.ПарсерРасширения(КаталогНазначения); + Парсер.ПрочитатьСтруктуруКонфигурации(); + ОписаниеКонфигурации = Парсер.ОписаниеКонфигурации(); + + ИнициализироватьПеременные(КаталогНазначения, Парсер.ФорматВыгрузки()); + +КонецПроцедуры + +// Устанавливает свойства расширения // // Параметры: // ИмяРасширения - Строка - Наименование расширения // ПредставлениеРасширения - Строка - Синоним расширения // ПрефиксРасширения - Строка - Префикс расширения // -Процедура Инициализировать(ИмяРасширения, ПредставлениеРасширения, ПрефиксРасширения) Экспорт +Процедура УстановитьОписание(ИмяРасширения, ПредставлениеРасширения, ПрефиксРасширения) Экспорт - ОписаниеКонфигурации = Новый ОписаниеКонфигурации; - - ОписаниеКонфигурации.СвойстваКонфигурации = СтруктурыОписаний.СоздатьОбъект("Расширение", ИмяРасширения); + ОписаниеКонфигурации.СвойстваКонфигурации.Наименование = ИмяРасширения; ОписаниеКонфигурации.СвойстваКонфигурации.Синоним = ПредставлениеРасширения; ОписаниеКонфигурации.СвойстваКонфигурации.ПрефиксИмен = ПрефиксРасширения; - ОписаниеКонфигурации.СвойстваКонфигурации.Принадлежность = "Adopted"; - ОписаниеКонфигурации.СвойстваКонфигурации.Назначение = "Customization"; - - СтрокаКонфигурация = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить(); - ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию(); - - ЗаполнитьЗначенияСвойств(СтрокаКонфигурация, ПустаяСтрокаОбъектКонфигурации); - СтрокаКонфигурация.Тип = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(); - СтрокаКонфигурация.Наименование = СтрокаКонфигурация.Тип; - СтрокаКонфигурация.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияКонфигурации(); - СтрокаКонфигурация.Описание = ОписаниеКонфигурации.СвойстваКонфигурации; - - ЗаписьConfiguration = ГенераторОписаний.СоздатьОписаниеРасширения(ОписаниеКонфигурации.СвойстваКонфигурации, ПараметрыГенерации); КонецПроцедуры @@ -62,15 +105,13 @@ Если Стр.Тип <> ТипКонфигурация И Стр.Родитель = Неопределено Тогда - ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр, ПараметрыГенерации); + ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр); КонецЕсли; КонецЦикла; - Описание = ОбработкаXML.ЗакрытьЗапись(ЗаписьConfiguration); - - Утилиты.ЗаписатьФайл(СтруктураКаталоговПриемник.ИмяФайлаОписанияКонфигурации(), Описание); + ГенераторОписаний.ЗафиксироватьОписаниеКорневогоОбъекта(); Лог.Информация("Расширение создано"); @@ -87,6 +128,16 @@ КонецФункции +// Добавляет новый объект в конфигурацию +// +// Параметры: +// ИмяОбъекта - Строка - Имя добавляемого объекта +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md +// ОписаниеОбъекта - <Тип.Вид> - <описание параметра> +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений - Описание добавленного объекта. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// Функция ДобавитьОбъект(ИмяОбъекта, Знач ТипОбъекта, ОписаниеОбъекта = Неопределено) Экспорт ОбъектКонфигурации = ДобавитьОбъектКонфигурации(ИмяОбъекта, ТипОбъекта); @@ -111,13 +162,24 @@ КонецФункции +// Обновляет файл описания объекта +// +// Параметры: +// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// +Процедура СохранитьОписаниеОбъекта(ОбъектКонфигурации) Экспорт + + ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание); + +КонецПроцедуры // Введите имя процедуры() + // Добавляет объект базовой конфигурации в расширение // // Параметры: -// ОбъектРодительскойКонфигурации - СтрокаТаблицыЗначений - Описание объекта родительской конфигурации +// ОбъектРодительскойКонфигурации - СтрокаТаблицыЗначений - Описание объекта родительской конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации // // Возвращаемое значение: -// СтрокаТаблицыЗначений - Описание объекта расширения +// СтрокаТаблицыЗначений - Описание объекта расширения. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации // Функция ПеренестиОбъектВРасширение(ОбъектРодительскойКонфигурации, НеЗакрывать = Ложь) Экспорт @@ -127,21 +189,22 @@ Возврат Неопределено; КонецЕсли; - СокращенноеОписание = СтруктурыОписаний.СоздатьСокращеннуюСтруктураОбъекта(ОбъектРодительскойКонфигурации.ПолноеНаименование); + ОбъектРасширения = СтруктурыОписаний.СоздатьОбъектДляВключенияВРасширение(ОбъектРодительскойКонфигурации.ПолноеНаименование); Если ОбъектРодительскойКонфигурации.Описание = Неопределено Тогда - СокращенноеОписание.Наименование = ОбъектКонфигурации.Наименование; + ОбъектРасширения.Наименование = ОбъектКонфигурации.Наименование; Иначе - ЗаполнитьЗначенияСвойств(СокращенноеОписание, ОбъектРодительскойКонфигурации.Описание, , "Подчиненные"); + ЗаполнитьЗначенияСвойств(ОбъектРасширения, ОбъектРодительскойКонфигурации.Описание, , "Подчиненные"); КонецЕсли; - СокращенноеОписание.Принадлежность = "Adopted"; + ОбъектРасширения.Принадлежность = "Adopted"; - ОбъектКонфигурации.Описание = СокращенноеОписание; + ОбъектКонфигурации.Описание = ОбъектРасширения; + Запись = ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание, НеЗакрывать); Если НеЗакрывать = Истина Тогда @@ -244,14 +307,31 @@ КонецПроцедуры -Функция СкопироватьОбъект(Объект) Экспорт +// Копирует описание объект из другой конфигурации. +// +// Параметры: +// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений - Описание добавленного объекта. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// +Функция СкопироватьОбъект(ОбъектКонфигурации) Экспорт - НовыйОбъект = ДобавитьОбъект(Объект.Наименование, Объект.Тип); - КопироватьФайл(Объект.ПутьКФайлу, НовыйОбъект.ПутьКФайлу); + НовыйОбъект = ДобавитьОбъект(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип); + КопироватьФайл(ОбъектКонфигурации.ПутьКФайлу, НовыйОбъект.ПутьКФайлу); Возврат НовыйОбъект; КонецФункции +// Добавляет внешную обработку в конфигурацию +// TODO: необходима переработка +// +// Параметры: +// КаталогВнешнейОбработки - Строка - Путь до каталога выгрузки внешней обработки +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений - Описание добавленного объекта. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// Функция ДобавитьВнешнуюОбработку(КаталогВнешнейОбработки) Экспорт ИмяОбработки = (Новый Файл(КаталогВнешнейОбработки)).Имя; @@ -292,8 +372,6 @@ КонецФункции - - // Добавляет в расширение существующий файл, как общий модуль // // Параметры: @@ -303,7 +381,7 @@ // Процедура ДобавитьМодульОбъекта(ОбъектКонфигурации, ИмяМодуля, ИмяФайла) Экспорт - ИмяФайлаНазначения = СтруктураКаталоговПриемник.ИмяФайлаМодуля(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип, ИмяМодуля); + ИмяФайлаНазначения = СтруктураКаталогов.ИмяФайлаМодуля(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип, ИмяМодуля); КопироватьФайл(ИмяФайла, ИмяФайлаНазначения); @@ -336,7 +414,7 @@ // Процедура ДобавитьМодульКонфигурации(ИмяМодуля, ИмяФайла) Экспорт - ИмяФайлаНазначения = СтруктураКаталоговПриемник.ИмяФайлаМодуля("Configuration", "Configuration", ИмяМодуля); + ИмяФайлаНазначения = СтруктураКаталогов.ИмяФайлаМодуля("Configuration", "Configuration", ИмяМодуля); КопироватьФайл(ИмяФайла, ИмяФайлаНазначения); @@ -352,7 +430,7 @@ // Процедура ДобавитьФайл(ОтносительныйПуть, ИсходныйФайл) Экспорт - ПолныйПуть = ОбъединитьПути(СтруктураКаталоговПриемник.КорневойКаталог(), ОтносительныйПуть); + ПолныйПуть = ОбъединитьПути(СтруктураКаталогов.КорневойКаталог(), ОтносительныйПуть); Утилиты.СоздатьРекурсивноКаталоги((Новый Файл(ПолныйПуть)).Путь); КопироватьФайл(ИсходныйФайл, ПолныйПуть); @@ -376,29 +454,46 @@ КонецФункции -Функция СоздатьЗаписьОписания(ТипОбъекта, ИмяФайла) Экспорт - - Возврат ГенераторОписаний.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла); - -КонецФункции /////////////////////////////////////////////////////////////////// // Служебный функционал /////////////////////////////////////////////////////////////////// +Процедура ИнициализироватьПеременные(Каталог, Формат) + + СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(Каталог, Формат, Истина); + ГенераторОписаний = Новый ГенераторОписаний(Формат, Истина); + + Если ОписаниеКонфигурации = Неопределено Тогда + + ОписаниеКонфигурации = Новый ОписаниеКонфигурации; + + ОписаниеКонфигурации.СвойстваКонфигурации = СтруктурыОписаний.СоздатьОбъект(ТипыОбъектовКонфигурации.ИмяТипаРасширения(), "Расширение"); + + КонецЕсли; + + ОписаниеКонфигурации.СвойстваКонфигурации.Принадлежность = "Adopted"; + ОписаниеКонфигурации.СвойстваКонфигурации.Назначение = "Customization"; + + ИмяФайлаОписания = СтруктураКаталогов.ИмяФайлаОписанияКонфигурации(); + + ГенераторОписаний.СоздатьОписаниеКорневогоОбъекта(ОписаниеКонфигурации.СвойстваКонфигурации, ТипКорневогоЭлемента, ИмяФайлаОписания); + +КонецПроцедуры + Функция ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ДанныеОбъекта, НеЗакрывать = Ложь) - ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип); + ИмяФайла = СтруктураКаталогов.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип); - Запись = СоздатьЗаписьОписания(ОбъектКонфигурации.Тип, ИмяФайла); + Запись = ГенераторОписаний.СоздатьЗапись(ОбъектКонфигурации.Тип, ИмяФайла); ОписаниеСвойств = СтруктурыОписаний.ОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип); - ГенераторОписаний.ЗаписатьПорождаемыеТипы(Запись, ДанныеОбъекта.Наименование, ОбъектКонфигурации.Тип); - ГенераторОписаний.ЗаписатьСвойства(Запись, ОбъектКонфигурации.Тип, ДанныеОбъекта); + ГенераторОписаний.Генератор.ЗаписатьПорождаемыеТипы(Запись, ДанныеОбъекта.Наименование, ОбъектКонфигурации.Тип); + ГенераторОписаний.Генератор.ЗаписатьСвойства(Запись, ОбъектКонфигурации.Тип, ДанныеОбъекта); Если ОписаниеСвойств.ЕстьПодчиненные Тогда - ГенераторОписаний.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено)); + ГенераторОписаний.Генератор.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено)); КонецЕсли; @@ -434,8 +529,8 @@ ОбъектКонфигурации.Наименование = ИмяОбъекта; ОбъектКонфигурации.Тип = ТипОбъекта; - ОбъектКонфигурации.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта); - ОбъектКонфигурации.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта); + ОбъектКонфигурации.ПутьКФайлу = СтруктураКаталогов.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта); + ОбъектКонфигурации.ПутьККаталогу = СтруктураКаталогов.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта); КонецЕсли; @@ -443,36 +538,10 @@ КонецФункции -Процедура ПриСозданииОбъекта(Формат, Знач КаталогНазначения) +Процедура ПриСозданииОбъекта(пТипКорневогоЭлемента) Лог = ПараметрыПродукта.ПолучитьЛог(); - КаталогНазначения = (Новый Файл(КаталогНазначения)).ПолноеИмя; - - Если НЕ ФС.КаталогСуществует(КаталогНазначения) Тогда - - ФС.ОбеспечитьКаталог(КаталогНазначения); - - ИначеЕсли НЕ ФС.КаталогПустой(КаталогНазначения) Тогда - - Лог.Предупреждение("Каталог расширения ""%1"" не пустой. Каталог будет очищен", КаталогНазначения); - ФС.ОбеспечитьПустойКаталог(КаталогНазначения); - - КонецЕсли; - - Лог.Информация("Начало генерации расширения"); - - СтруктураКаталоговПриемник = Новый СтруктураКаталоговКонфигурации(КаталогНазначения, Формат, Истина); - Если СтруктураКаталоговПриемник.ФорматВыгрузки() = ФорматыВыгрузки.EDT Тогда - - ГенераторОписаний = ГенераторОписанийEDT; - - Иначе - - ГенераторОписаний = ГенераторОписанийКонфигуратор; - - КонецЕсли; + ТипКорневогоЭлемента = пТипКорневогоЭлемента; - ПараметрыГенерации = ГенераторОписаний.СоздатьПараметрыГенерации("8.3.10", Истина); - КонецПроцедуры diff --git a/src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os b/src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os index 58daaa0..13d3c70 100644 --- a/src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os +++ b/src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os @@ -40,22 +40,30 @@ КонецФункции -// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д. +// Метод создает базовое описание корневого объекта, в которое потом можно добавлять объекты и т.д. // // Параметры: // ОписаниеРасширения - Структура - Описание расширения, наименование синоним и прочее +// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...) +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные // ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации // -Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт +Функция СоздатьОписаниеКорневогоОбъекта(ОписаниеРасширения, ТипОбъекта, ИмяФайла, ПараметрыГенерации) Экспорт - ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации); + ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта); - ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, "Расширение", ЭтотОбъект); + ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации, ИмяФайла); - ЗаписьConfiguration.ЗаписатьНачалоЭлемента("extension"); - ЗаписьConfiguration.ЗаписатьАтрибут("xsi:type", "mdclassExtension:ConfigurationExtension"); - - ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // extension + ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, ТипОбъекта, ЭтотОбъект); + + Если ТипыОбъектовКонфигурации.ИмяТипаРасширения() = ТипОбъекта Тогда + + ЗаписьConfiguration.ЗаписатьНачалоЭлемента("extension"); + ЗаписьConfiguration.ЗаписатьАтрибут("xsi:type", "mdclassExtension:ConfigurationExtension"); + + ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // extension + + КонецЕсли; Для Каждого uid из ГенераторОписанийОбщий.ПолучитьUIDДляГенерацииРасширения() Цикл @@ -66,12 +74,17 @@ КонецЦикла; - ПараметрыГенерации.Вставить("ЗаписьConfiguration", ЗаписьConfiguration); - Возврат ЗаписьConfiguration; КонецФункции +// Записывает описание объекта в поток +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md +// СвойстваОбъекта - Структура - Данные объекта +// Процедура ЗаписатьСвойства(Запись, ТипОбъекта, СвойстваОбъекта) Экспорт ГенераторОписанийОбщий.ЗаписатьДанные(Запись, СвойстваОбъекта, ТипОбъекта, ЭтотОбъект); @@ -82,7 +95,7 @@ // Проверок на существование объекта нет // // Параметры: -// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации +// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации // ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации // Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации) Экспорт @@ -95,6 +108,13 @@ КонецПроцедуры +// Записывает служебную информацию об уидах платформенных типов +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// ИмяОбъекта - Строка - Имя объекта конфигурации +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md +// Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт ПорождаемыеТипы = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ПорождаемыеТипы; @@ -120,44 +140,12 @@ КонецПроцедуры -/////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС -/////////////////////////////////////////////////////////////////////////////// - -#Область МетодыЗаписиЗначений - -Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт - - ОбработкаXML.ЗаписатьЗначениеXML(Запись, "key", "ru"); - ОбработкаXML.ЗаписатьЗначениеXML(Запись, "value", Значение); - -КонецПроцедуры - -Процедура ЗначениеБулево(Запись, Значение) Экспорт - - Запись.ЗаписатьТекст(XMLСтрока(Значение)); - -КонецПроцедуры - -Процедура Подчиненные(Запись, Значение) Экспорт - - Для Каждого ПолноеИмяЭлемента Из Значение Цикл - - ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); - - ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ПолноеИмяЭлемента); - - КонецЦикла; - -КонецПроцедуры - -#КонецОбласти - // Создает xml запись описания объекта, прописывает базовые параметры // // Параметры: // ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д. // ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные // // Возвращаемое значение: // ЗаписьXML- Поток записи описания @@ -199,19 +187,56 @@ КонецФункции /////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС /////////////////////////////////////////////////////////////////////////////// -// Закрывает запись описания объекта и всех открытых тэгов +#Область МетодыЗаписиЗначений + +// Записывает значение формата многонациональная строка // // Параметры: -// Запись - ЗаписьXML - запись описания объекта +// Запись - ЗаписьXML - Поток записи +// Значение - Строка - Записываемое значение // -// Возвращаемое значение: -// Строка - XML описание объекта +Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт + + ОбработкаXML.ЗаписатьЗначениеXML(Запись, "key", "ru"); + ОбработкаXML.ЗаписатьЗначениеXML(Запись, "value", Значение); + +КонецПроцедуры + +// Записывает логическое значение // -Функция ЗакрытьЗапись(Запись) +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Значение - Булево - Записываемое значение +// +Процедура ЗначениеБулево(Запись, Значение) Экспорт + + Запись.ЗаписатьТекст(XMLСтрока(Значение)); + +КонецПроцедуры + +// Записывает информацию о подчиненных объектах +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Значение - Массив - Коллекция подчиненных объектов +// +Процедура Подчиненные(Запись, Значение) Экспорт - Возврат ОбработкаXML.ЗакрытьЗапись(Запись); - -КонецФункции + Для Каждого ПолноеИмяЭлемента Из Значение Цикл + + ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); + + ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ПолноеИмяЭлемента); + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +/////////////////////////////////////////////////////////////////////////////// diff --git a/src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os b/src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os index bec2e04..b2a86a5 100644 --- a/src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os +++ b/src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os @@ -38,15 +38,17 @@ КонецФункции -// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д. +// Метод создает базовое описание корневого объекта, в которое потом можно добавлять объекты и т.д. // // Параметры: // ОписаниеРасширения - Структура - Описание расширения, наименование синоним и прочее +// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...) +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные // ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации // -Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт +Функция СоздатьОписаниеКорневогоОбъекта(ОписаниеРасширения, ТипОбъекта, ИмяФайла, ПараметрыГенерации) Экспорт - ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации); + ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации, ИмяФайла); ЗаписьConfiguration.ЗаписатьНачалоЭлемента("InternalInfo"); @@ -61,21 +63,19 @@ ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // InternalInfo - ЗаписатьСвойства(ЗаписьConfiguration, "Расширение", ОписаниеРасширения); + ЗаписатьСвойства(ЗаписьConfiguration, ТипОбъекта, ОписаниеРасширения); ЗаписьConfiguration.ЗаписатьНачалоЭлемента("ChildObjects"); - ПараметрыГенерации.Вставить("ЗаписьConfiguration", ЗаписьConfiguration); - Возврат ЗаписьConfiguration; КонецФункции -// Записывает свойства объекта в XML +// Записывает описание объекта в поток // // Параметры: // Запись - ЗаписьXML - Поток записи -// ТипОбъекта - Строка - Тип объекта конфигурации +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // СвойстваОбъекта - Структура - Данные объекта // Процедура ЗаписатьСвойства(Запись, ТипОбъекта, СвойстваОбъекта) Экспорт @@ -106,7 +106,7 @@ // Параметры: // Запись - ЗаписьXML - Поток записи // ИмяОбъекта - Строка - Имя объекта конфигурации -// ТипОбъекта - Строка - Тип объекта конфигурации +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт @@ -142,72 +142,12 @@ КонецПроцедуры -/////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС -/////////////////////////////////////////////////////////////////////////////// - -#Область МетодыЗаписиЗначений - -Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт - - Запись.ЗаписатьНачалоЭлемента("v8:item"); - ОбработкаXML.ЗаписатьЗначениеXML(Запись, "v8:lang", "ru"); - ОбработкаXML.ЗаписатьЗначениеXML(Запись, "v8:content", Значение); - Запись.ЗаписатьКонецЭлемента(); - -КонецПроцедуры - -Процедура ЗначениеБулево(Запись, Значение) Экспорт - - Запись.ЗаписатьТекст(XMLСтрока(Значение)); - -КонецПроцедуры - -Процедура СоставПодсистемы(Запись, Значение) Экспорт - - Если НЕ ЗначениеЗаполнено(Значение) Тогда - - Возврат; - - КонецЕсли; - - Для Каждого ПолноеИмяЭлемента Из Значение Цикл - - ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); - - ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]); - - КонецЦикла; - -КонецПроцедуры - -Процедура Подчиненные(Запись, Значение) Экспорт - - Запись.ЗаписатьНачалоЭлемента("ChildObjects"); - - Для Каждого ПолноеИмяЭлемента Из Значение Цикл - - ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); - - ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]); - - КонецЦикла; - - Запись.ЗаписатьКонецЭлемента(); - -КонецПроцедуры - -#КонецОбласти - -/////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -/////////////////////////////////////////////////////////////////// - // Создает xml запись описания объекта, прописывает базовые параметры // // Параметры: // ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д. // ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации +// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные // // Возвращаемое значение: // ЗаписьXML- Поток записи описания @@ -215,17 +155,19 @@ Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла = Неопределено) Экспорт Запись = Новый ЗаписьXML(); + + ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", , , , Символы.Таб); + Если ЗначениеЗаполнено(ИмяФайла) Тогда - Запись.ОткрытьФайл(ИмяФайла, "UTF-8"); + Запись.ОткрытьФайл(ИмяФайла, ПараметрыЗаписи); Иначе - Запись.УстановитьСтроку("UTF-8"); + Запись.УстановитьСтроку(ПараметрыЗаписи); КонецЕсли; - - Запись.Отступ = Ложь; + Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("MetaDataObject"); Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.3/MDClasses"); @@ -254,19 +196,96 @@ КонецФункции -// Закрывает запись описания объекта и всех открытых тэгов +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +/////////////////////////////////////////////////////////////////////////////// + +#Область МетодыЗаписиЗначений + +// Записывает значение формата многонациональная строка // // Параметры: -// Запись - ЗаписьXML - запись описания объекта +// Запись - ЗаписьXML - Поток записи +// Значение - Строка - Записываемое значение // -// Возвращаемое значение: -// Строка - XML описание объекта +Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт + + Если НЕ ЗначениеЗаполнено(Значение) Тогда + + Возврат; + + КонецЕсли; + + Запись.ЗаписатьНачалоЭлемента("v8:item"); + ОбработкаXML.ЗаписатьЗначениеXML(Запись, "v8:lang", "ru"); + ОбработкаXML.ЗаписатьЗначениеXML(Запись, "v8:content", Значение); + Запись.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +// Записывает логическое значение // -Функция ЗакрытьЗапись(Запись) +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Значение - Булево - Записываемое значение +// +Процедура ЗначениеБулево(Запись, Значение) Экспорт + + Запись.ЗаписатьТекст(XMLСтрока(Значение)); + +КонецПроцедуры + +// Записывает состав подсистемы +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Значение - Массив - Коллекция объектов входящих в состав подсистемы +// +Процедура СоставПодсистемы(Запись, Значение) Экспорт - Возврат ОбработкаXML.ЗакрытьЗапись(Запись); + Если НЕ ЗначениеЗаполнено(Значение) Тогда + + Возврат; + + КонецЕсли; -КонецФункции + Для Каждого ПолноеИмяЭлемента Из Значение Цикл + + ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); + + ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]); + + КонецЦикла; + +КонецПроцедуры + +// Записывает информацию о подчиненных объектах +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Значение - Массив - Коллекция подчиненных объектов +// +Процедура Подчиненные(Запись, Значение) Экспорт + + Запись.ЗаписатьНачалоЭлемента("ChildObjects"); + + Для Каждого ПолноеИмяЭлемента Из Значение Цикл + + ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, "."); + + ОбработкаXML.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]); + + КонецЦикла; + + Запись.ЗаписатьКонецЭлемента(); + +КонецПроцедуры + +#КонецОбласти + +/////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +/////////////////////////////////////////////////////////////////// Процедура СкопироватьInternalInfo(Запись, ИсходноеОписание) diff --git a/src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os b/src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os index dda4cd8..fd5702a 100644 --- a/src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os +++ b/src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os @@ -33,7 +33,15 @@ КонецФункции -Функция ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт +// Выполняет запись описания объекта +// +// Параметры: +// Запись - ЗаписьXML - Поток записи +// Данные - Структура - Данные описания объекта +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md +// Генератор - Модуль - Модуль реализующий специфику записи в необходимом формате +// +Процедура ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт ФорматEDT = Генератор = ГенераторОписанийEDT; ПараметрыЗаписи = ПараметрыСериализации.ПараметрыЗаписи(ТипОбъекта, ?(ФорматEDT, ФорматыВыгрузки.EDT, ФорматыВыгрузки.Конфигуратор_8_3_10)); @@ -77,7 +85,7 @@ КонецЦикла; -КонецФункции +КонецПроцедуры /////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ diff --git a/src/Макеты/ОбъектыКонфигурации.md b/src/Макеты/ОбъектыКонфигурации.md index 8c64b71..45a0179 100644 --- a/src/Макеты/ОбъектыКонфигурации.md +++ b/src/Макеты/ОбъектыКонфигурации.md @@ -52,4 +52,4 @@ | ЭлементСтиля | ЭлементыСтиля | StyleItem | StyleItems | | | | Язык | Языки | Language | Languages | | | | Конфигурация | Конфигурации | Configuration | Configurations | true | | -| Расширение | Расширения | Extension | Extensions | true | | \ No newline at end of file +| Расширение | Расширения | Extension | Extensions | true | | diff --git a/src/Макеты/СвойстваОбъектов.md b/src/Макеты/СвойстваОбъектов.md index 0181639..868c1d4 100644 --- a/src/Макеты/СвойстваОбъектов.md +++ b/src/Макеты/СвойстваОбъектов.md @@ -8,15 +8,16 @@ * МетодПреобразования - Имя метода для кастомного чтения свойства. Не обязательное. * ЗначениеПоУмолчанию - Строковое представление значения по-умолчанию. Не обязательное. * ТипЗначения - Имя типа значения. Не обязательное. +* ПереноситьВРасширение - Булевый признак необходимости переносить реквизит в описание объекта расширения ## Реквизиты Default -| Наименование | Реквизит | МетодПреобразования | -| -------------- | --------------- | ------------------- | -| Наименование | Name | | -| Синоним | Synonym | МногоязычнаяСтрока | -| Комментарий | Comment | МногоязычнаяСтрока | -| Принадлежность | ObjectBelonging | | +| Наименование | Реквизит | МетодПреобразования | ПереноситьВРасширение | +| -------------- | --------------- | ------------------- | --------------------- | +| Наименование | Name | | true | +| Синоним | Synonym | МногоязычнаяСтрока | true | +| Комментарий | Comment | МногоязычнаяСтрока | false | +| Принадлежность | ObjectBelonging | | true | ## Реквизиты Configuration @@ -80,14 +81,14 @@ ## Реквизиты Extension -| Наименование | Реквизит | МетодПреобразования | +| Наименование | Реквизит | МетодПреобразования | | ------------ | ----------------------------- | ------------------- | | ПрефиксИмен | NamePrefix | | | Назначение | ConfigurationExtensionPurpose | | ## Реквизиты Subsystem -| Наименование | Реквизит | МетодПреобразования | ТипЗначения | +| Наименование | Реквизит | МетодПреобразования | ТипЗначения | | --------------------------- | ------------------------- | ------------------- | ----------- | | ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | ЗначениеБулево | | | ВключатьВСодержимоеСправки | IncludeHelpInContents | ЗначениеБулево | | @@ -96,7 +97,7 @@ ## Реквизиты CommonModule -| Наименование | Реквизит | МетодПреобразования | ЗначениеПоУмолчанию | +| Наименование | Реквизит | МетодПреобразования | ЗначениеПоУмолчанию | | ----------------------- | ------------------------- | ------------------- | ------------------- | | Глобальный | Global | ЗначениеБулево | false | | Клиент | ClientManagedApplication | ЗначениеБулево | false | @@ -109,41 +110,41 @@ ## Реквизиты Constant -| Наименование | Реквизит | МетодПреобразования | -| ------------ | --------------- | ------------------- | -| Тип | Type | ПолучитьТип | -| Пояснение | Explanation | МногоязычнаяСтрока | +| Наименование | Реквизит | МетодПреобразования | +| ------------ | ----------- | ------------------- | +| Тип | Type | ПолучитьТип | +| Пояснение | Explanation | МногоязычнаяСтрока | ## Реквизиты InformationRegister -| Наименование | Реквизит | МетодПреобразования | -| -------------------------------- | ------------------------------ | ------------------- | -| СтандартныеРеквизиты | StandardAttributes | | -| ВключатьСправкуВСодержание | IncludeHelpInContents | | -| ДополнительнаяФормаЗаписи | AuxiliaryRecordForm | | -| ДополнительнаяФормаСписка | AuxiliaryListForm | | -| Измерения | Dimensions | | -| ИспользоватьСтандартныеКоманды | UseStandardCommands | | -| Команды | Commands | | -| Макеты | Templates | | -| МодульМенеджера | ManagerModule | | -| МодульНабораЗаписей | RecordSetModule | | -| ОсновнаяФормаЗаписи | DefaultRecordForm | | -| ОсновнаяФормаСписка | DefaultListForm | | -| ОсновнойОтборПоПериоду | MainFilterOnPeriod | | -| ПериодичностьРегистраСведений | InformationRegisterPeriodicity | | -| ПолнотекстовыйПоиск | FullTextSearch | | -| Пояснение | Explanation | | -| ПредставлениеЗаписи | RecordPresentation | | -| ПредставлениеСписка | ListPresentation | | -| РазрешитьИтогиСрезПервых | EnableTotalsSliceFirst | | -| РазрешитьИтогиСрезПоследних | EnableTotalsSliceLast | | -| РасширенноеПредставлениеЗаписи | ExtendedRecordPresentation | | -| РасширенноеПредставлениеСписка | ExtendedListPresentation | | -| РежимЗаписи | WriteMode | | -| РежимУправленияБлокировкойДанных | DataLockControlMode | | -| Реквизиты | Attributes | | -| Ресурсы | Resources | | -| СпособРедактирования | EditType | | -| Справка | Help | | -| Формы | Forms | | +| Наименование | Реквизит | ПереноситьВРасширение | +| -------------------------------- | ------------------------------ | --------------------- | +| СтандартныеРеквизиты | StandardAttributes | | +| ВключатьСправкуВСодержание | IncludeHelpInContents | | +| ДополнительнаяФормаЗаписи | AuxiliaryRecordForm | | +| ДополнительнаяФормаСписка | AuxiliaryListForm | | +| Измерения | Dimensions | | +| ИспользоватьСтандартныеКоманды | UseStandardCommands | | +| Команды | Commands | | +| Макеты | Templates | | +| МодульМенеджера | ManagerModule | | +| МодульНабораЗаписей | RecordSetModule | | +| ОсновнаяФормаЗаписи | DefaultRecordForm | | +| ОсновнаяФормаСписка | DefaultListForm | | +| ОсновнойОтборПоПериоду | MainFilterOnPeriod | | +| ПериодичностьРегистраСведений | InformationRegisterPeriodicity | true | +| ПолнотекстовыйПоиск | FullTextSearch | | +| Пояснение | Explanation | | +| ПредставлениеЗаписи | RecordPresentation | | +| ПредставлениеСписка | ListPresentation | | +| РазрешитьИтогиСрезПервых | EnableTotalsSliceFirst | | +| РазрешитьИтогиСрезПоследних | EnableTotalsSliceLast | | +| РасширенноеПредставлениеЗаписи | ExtendedRecordPresentation | | +| РасширенноеПредставлениеСписка | ExtendedListPresentation | | +| РежимЗаписи | WriteMode | true | +| РежимУправленияБлокировкойДанных | DataLockControlMode | | +| Реквизиты | Attributes | | +| Ресурсы | Resources | | +| СпособРедактирования | EditType | | +| Справка | Help | | +| Формы | Forms | | diff --git a/src/Модули/ГенераторBSL.os b/src/Модули/ГенераторBSL.os index 23712d5..da3a280 100644 --- a/src/Модули/ГенераторBSL.os +++ b/src/Модули/ГенераторBSL.os @@ -1,18 +1,38 @@ #Использовать "..\ГенераторОписаний" +#Использовать "..\ЧтениеОписаний" #Использовать "..\Общее" // Создает генератор для формирования описания расширения // // Параметры: +// КаталогНазначения - Строка - Каталог, в который записываются описания // Формат - Строка - Формат описания -// КаталогИсходниковРасширения - Строка - Каталог, в который записываются описания // // Возвращаемое значение: // ГенераторРасширения - Объект для формирования описания // -Функция СоздатьРасширение(Формат, КаталогИсходниковРасширения) Экспорт +Функция ГенераторРасширения(КаталогНазначения, Формат) Экспорт - Генератор = Новый ГенераторРасширений(Формат, КаталогИсходниковРасширения); + Генератор = Новый ГенераторРасширений("Extension"); + + Генератор.СоздатьНовоеРасширение(КаталогНазначения, Формат); + + Возврат Генератор; + +КонецФункции + +// Создает генератор для редактирования описания расширения +// +// Параметры: +// КаталогНазначения - Строка - Каталог, в который записываются описания +// +// Возвращаемое значение: +// ГенераторРасширения - Объект для формирования описания +// +Функция РедакторРасширения(КаталогНазначения) Экспорт + + Генератор = Новый ГенераторРасширений("Extension"); + Генератор.Загрузить(КаталогНазначения); Возврат Генератор; @@ -21,7 +41,7 @@ // Создает структуру данных объекта // // Параметры: -// ТипОбъекта - Строка - Тип объекта +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // Наименование - Строка - Имя объекта // // Возвращаемое значение: diff --git a/src/Модули/ПарсерBSL.os b/src/Модули/ПарсерBSL.os index 73e1b6d..833d12e 100644 --- a/src/Модули/ПарсерBSL.os +++ b/src/Модули/ПарсерBSL.os @@ -35,7 +35,7 @@ // Функция ПарсерРасширения(КаталогИсходников) Экспорт - ВызватьИсключение "Не реализованно"; + Возврат Новый РазборКонфигурации1С(КаталогИсходников, "Extension"); КонецФункции diff --git a/src/Общее/Модули/ОбработкаXML.os b/src/Общее/Модули/ОбработкаXML.os index fbdf83a..1933278 100644 --- a/src/Общее/Модули/ОбработкаXML.os +++ b/src/Общее/Модули/ОбработкаXML.os @@ -8,6 +8,15 @@ // ПРОГРАММНЫЙ ИНТЕРФЕЙС /////////////////////////////////////////////////////////////////////////////// +// Ищет в потоке XML следующий элемент с указанным именем +// +// Параметры: +// Чтение - ЧтениеXML - Поток чтения +// ИмяЭлемента - Строка - Имя элемента XML +// +// Возвращаемое значение: +// Булево - Успешность поиска +// Функция ПерейтиКСледующемуЭлементу(Чтение, ИмяЭлемента) Экспорт Уровень = 0; @@ -42,7 +51,17 @@ КонецФункции -Процедура СкопироватьДанныеXML(Чтение, Запись, КопироватьВсеЭлементыУровня = Ложь) Экспорт +// Выполняет перенос данных из одного потока XML в другой +// Перенос выполняется только подчиненных элементов, с глубинной большей или равной текущей +// +// Параметры: +// Чтение - ЧтениеXML - Поток чтения +// Запись - ЗаписьXML - Поток записи +// КопироватьВсеЭлементыУровня - Булево +// - Истина - копируются все вложенные элементы +// - Ложь - копируются только текущий элемент со всеми вложенными +// +Процедура СкопироватьВложенныеДанныеXML(Чтение, Запись, КопироватьВсеЭлементыУровня = Ложь) Экспорт Уровень = 0; УровеньВыхода = ?(КопироватьВсеЭлементыУровня, -1, 0); @@ -53,14 +72,6 @@ Уровень = Уровень + 1; - Запись.ЗаписатьНачалоЭлемента(Чтение.Имя); - - Пока Чтение.ПрочитатьАтрибут() Цикл - - Запись.ЗаписатьАтрибут(Чтение.Имя, Чтение.Значение); - - КонецЦикла; - ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Уровень = Уровень - 1; @@ -71,13 +82,9 @@ КонецЕсли; - Запись.ЗаписатьКонецЭлемента(); - - ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда - - Запись.ЗаписатьТекст(Чтение.Значение); - КонецЕсли; + + ЗаписатьТекущий(Запись, Чтение); Чтение.Прочитать(); @@ -85,6 +92,90 @@ КонецПроцедуры +// Метод выполняет запись текущего значения чтенияXML +// Метод реализован тк стандартный метод Запись.ЗаписатьТекущий имеет сайдэффект и не понятное поведение +// +// Параметры: +// Чтение - ЧтениеXML - Поток чтения +// Запись - ЗаписьXML - Поток записи +// +Процедура ЗаписатьТекущий(Запись, Чтение) Экспорт + + Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда + + Запись.ЗаписатьНачалоЭлемента(Чтение.Имя); + + Пока Чтение.ПрочитатьАтрибут() Цикл + + Запись.ЗаписатьАтрибут(Чтение.Имя, Чтение.Значение); + + КонецЦикла; + + ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда + + Запись.ЗаписатьКонецЭлемента(); + + ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда + + Запись.ЗаписатьТекст(Чтение.Значение); + + КонецЕсли; + +КонецПроцедуры + +// Ищет в потоке XML следующий элемент с указанным именем, +// при этом выполняет копирование прочитанных данных в выходной поток +// +// Параметры: +// Чтение - ЧтениеXML - Поток чтения +// Запись - ЗаписьXML - Поток записи +// ИмяЭлемента - Строка - Имя элемента XML +// +// Возвращаемое значение: +// Булево - Искомый элемент найден +// +Функция СкопироватьДанныеXMLДоТэга(Чтение, Запись, ИмяЭлемента) Экспорт + + Пока Чтение.Прочитать() Цикл + + Если Чтение.ЛокальноеИмя = ИмяЭлемента Тогда + + Возврат Истина; + + КонецЕсли; + + ЗаписатьТекущий(Запись, Чтение); + + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +// Выполняет перенос данных из одного потока XML в другой +// Перенос выполняется с текущей позиции до конца файла +// +// Параметры: +// Чтение - ЧтениеXML - Поток чтения +// Запись - ЗаписьXML - Поток записи +// ЗаписатьТекущий - Булево - Перенести текущий элемент в выходной поток +// +Процедура СкопироватьДанныеXMLДоКонца(Чтение, Запись, ЗаписатьТекущий = Ложь) Экспорт + + Если ЗаписатьТекущий Тогда + + ЗаписатьТекущий(Запись, Чтение); + + КонецЕсли; + + Пока Чтение.Прочитать() Цикл + + ЗаписатьТекущий(Запись, Чтение); + + КонецЦикла; + +КонецПроцедуры + // Записывает произвольное значение в XML поток // // Параметры: diff --git a/src/Общее/Модули/ПараметрыСериализации.os b/src/Общее/Модули/ПараметрыСериализации.os index 4fc918c..142c211 100644 --- a/src/Общее/Модули/ПараметрыСериализации.os +++ b/src/Общее/Модули/ПараметрыСериализации.os @@ -11,7 +11,7 @@ // Формирует параметры для чтения описания объекта конкретного типа // // Параметры: -// ТипОбъекта - Строка - Тип объекта +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки // // Возвращаемое значение: @@ -34,7 +34,7 @@ // Формирует параметры для записи описания объекта конкретного типа // // Параметры: -// ТипОбъекта - Строка - Тип объекта +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки // // Возвращаемое значение: diff --git a/src/Общее/Модули/СтруктурыОписаний.os b/src/Общее/Модули/СтруктурыОписаний.os index fa3927a..d2c0ab7 100644 --- a/src/Общее/Модули/СтруктурыОписаний.os +++ b/src/Общее/Модули/СтруктурыОписаний.os @@ -29,12 +29,12 @@ Функция ТаблицаОписанияОбъектовКонфигурации() Экспорт ОбъектыКонфигурации = Новый ТаблицаЗначений; - ОбъектыКонфигурации.Колонки.Добавить("Наименование"); - ОбъектыКонфигурации.Колонки.Добавить("Тип"); - ОбъектыКонфигурации.Колонки.Добавить("ПолноеНаименование"); - ОбъектыКонфигурации.Колонки.Добавить("ПутьКФайлу"); - ОбъектыКонфигурации.Колонки.Добавить("ПутьККаталогу"); - ОбъектыКонфигурации.Колонки.Добавить("Подсистемы"); + ОбъектыКонфигурации.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); + ОбъектыКонфигурации.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка")); + ОбъектыКонфигурации.Колонки.Добавить("ПолноеНаименование", Новый ОписаниеТипов("Строка")); + ОбъектыКонфигурации.Колонки.Добавить("ПутьКФайлу", Новый ОписаниеТипов("Строка")); + ОбъектыКонфигурации.Колонки.Добавить("ПутьККаталогу", Новый ОписаниеТипов("Строка")); + ОбъектыКонфигурации.Колонки.Добавить("Подсистемы", Новый ОписаниеТипов("Массив")); ОбъектыКонфигурации.Колонки.Добавить("Описание"); ОбъектыКонфигурации.Колонки.Добавить("Родитель"); @@ -102,19 +102,6 @@ #КонецОбласти -// <Описание функции> -// -// Возвращаемое значение: -// <Тип.Вид> - <описание возвращаемого значения> -// -Функция ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию() Экспорт - - Возврат Новый Структура( - "Наименование, Тип, ПолноеНаименование, ПутьКФайлу, ПутьККаталогу, Подсистемы, Описание, Родитель", - "", "", "", "", "", Новый Массив); - -КонецФункции - // Создает пустышку описания объекта // // Параметры: @@ -184,7 +171,7 @@ // Возвращаемое значение: // Структура - минимальное описание объекта // -Функция СоздатьСокращеннуюСтруктураОбъекта(Знач ТипОбъекта, Знач Наименование = Неопределено) Экспорт +Функция СоздатьОбъектДляВключенияВРасширение(Знач ТипОбъекта, Знач Наименование = Неопределено) Экспорт Если Наименование = Неопределено И СтрНайти(ТипОбъекта, ".") @@ -203,7 +190,17 @@ ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта); - Данные = Новый Структура("Наименование, Принадлежность", ""); + Данные = Новый Структура("Наименование, Принадлежность", Наименование); + + Для Каждого Свойство Из ОписаниеОбъекта.Свойства Цикл + + Если Свойство.ПереноситьВРасширение Тогда + + Данные.Вставить(Свойство.Наименование); + + КонецЕсли; + + КонецЦикла; Если ОписаниеОбъекта.ЕстьПодчиненные Тогда @@ -218,7 +215,7 @@ // Метаданные объекта конфигурации // // Параметры: -// ТипОбъекта - Строка - Тип объекта конфигурации +// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md // // Возвращаемое значение: // Структура - Описание структуры и свойств объекта конфигурации @@ -258,12 +255,16 @@ НормализованнаяТаблицаСвойств.Колонки.Добавить("ЗначениеПоУмолчанию", Новый ОписаниеТипов("Строка")); НормализованнаяТаблицаСвойств.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("Строка")); НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭтоКоллекция", Новый ОписаниеТипов("Булево")); + НормализованнаяТаблицаСвойств.Колонки.Добавить("ПереноситьВРасширение", Новый ОписаниеТипов("Булево")); Для Каждого ОписаниеСвойства Из Свойства Цикл Свойство = НормализованнаяТаблицаСвойств.Добавить(); ЗаполнитьЗначенияСвойств(Свойство, ОписаниеСвойства); Свойство.ЭтоКоллекция = Свойство.ТипЗначения = "Массив"; + Свойство.ПереноситьВРасширение = + Утилиты.ПеременнаяСодержитСвойство(ОписаниеСвойства, "ПереноситьВРасширение") + И ОписаниеСвойства.ПереноситьВРасширение = "true"; КонецЦикла; diff --git a/src/Общее/Модули/ТипыОбъектовКонфигурации.os b/src/Общее/Модули/ТипыОбъектовКонфигурации.os index b7b049b..a85cf97 100644 --- a/src/Общее/Модули/ТипыОбъектовКонфигурации.os +++ b/src/Общее/Модули/ТипыОбъектовКонфигурации.os @@ -92,6 +92,17 @@ КонецФункции +// Возвращает имя типа расширение +// +// Возвращаемое значение: +// Строка - Имя типа +// +Функция ИмяТипаРасширения() Экспорт + + Возврат НормализоватьИмя("Расширение"); + +КонецФункции + // Возвращает имя типа общего модуля // // Возвращаемое значение: diff --git a/src/Общее/Модули/Утилиты.os b/src/Общее/Модули/Утилиты.os index 7a2bfb8..16ab72b 100644 --- a/src/Общее/Модули/Утилиты.os +++ b/src/Общее/Модули/Утилиты.os @@ -20,9 +20,9 @@ // Функция ПрочитатьФайл(ИмяФайла) Экспорт - ТекстовыйДокумент = Новый ТекстовыйДокумент(); - ТекстовыйДокумент.Прочитать(ИмяФайла, КодировкаТекста.UTF8NoBOM); - СодержимоеФайла = ТекстовыйДокумент.ПолучитьТекст(); + Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM); + СодержимоеФайла = Чтение.Прочитать(); + Чтение.Закрыть(); Возврат СодержимоеФайла; diff --git a/src/ЧтениеОписаний/Классы/РазборКонфигурации1С.os b/src/ЧтениеОписаний/Классы/РазборКонфигурации1С.os index eb5c5a8..cd1b9dc 100644 --- a/src/ЧтениеОписаний/Классы/РазборКонфигурации1С.os +++ b/src/ЧтениеОписаний/Классы/РазборКонфигурации1С.os @@ -10,10 +10,11 @@ /////////////////////////////////////////////////////////////////////////////// -Перем СтруктураКаталогов; +Перем СтруктураКаталогов Экспорт; Перем ЧитательОписаний; Перем ОписаниеКонфигурации; Перем ДанныеКонфигурации; +Перем ТипКорневогоЭлемента; /////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -155,44 +156,6 @@ КонецПроцедуры -// Возвращает полное наименование объекта конфигурации или модуля -// -// Параметры: -// СтрокаОбъект - СтрокаТаблицыЗначений - Описание объекта или модуля конфигурации -// ДобавлятьПрефиксДляОбщихМодулей - Булево - Признак, добавлять ли тип объекта для общих модулей -// -// Возвращаемое значение: -// Строка - Полное имя -// -Функция ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей = Истина, Разделитель = ".") Экспорт - - Возврат ЧтениеОписанийБазовый.ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей, Разделитель); - -КонецФункции - -// Ищет описание объекта по имени и типу -// -// Параметры: -// ИмяОбъекта - Строка - Наименование или полное наименование объекта -// ТипОбъекта - Строка - Тип объекта -// -// Возвращаемое значение: -// СтрокаТаблицыЗначений - Строка описания объекта конфигурации -// -Функция ОписаниеОбъекта(ИмяОбъекта, ТипОбъекта = Неопределено) Экспорт - - Если ТипОбъекта = Неопределено И СтрНайти(ИмяОбъекта, ".") Тогда - - Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.Найти(ИмяОбъекта, "ПолноеНаименование"); - - Иначе - - Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.Найти(СтрШаблон("%1.%2", ТипОбъекта, ИмяОбъекта), "ПолноеНаименование"); - - КонецЕсли; - -КонецФункции - // Формат выгрузки исходников // // Возвращаемое значение: @@ -207,7 +170,7 @@ // Читает описание объекта конфигурации // // Параметры: -// ОбъектКонфигурации - СтрокаТаблицыЗначений - Строка описания объекта конфигурации +// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации // Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт @@ -215,6 +178,8 @@ КонецПроцедуры +// Выполняет чтение подсистем и привязку объектов к ним +// Процедура ЗаполнитьПодсистемыОбъектовКонфигурации() Экспорт // дополним объекты информацией о подсистемах @@ -251,15 +216,11 @@ КонецЕсли; - ДанныеКонфигурации = ПрочитатьФайлОписанияОбъекта(ФайлКонфигурации, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации()); - - ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации(); + ДанныеКонфигурации = ПрочитатьФайлОписанияОбъекта(ФайлКонфигурации, ТипКорневогоЭлемента); // добавим руками объект "Configuration" для модулей приложения - ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию(); - НовСтрока = ОбъектыКонфигурации.Добавить(); - ЗаполнитьЗначенияСвойств(НовСтрока, ПустаяСтрокаОбъектКонфигурации); - НовСтрока.Тип = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(); + НовСтрока = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить(); + НовСтрока.Тип = ТипКорневогоЭлемента; НовСтрока.Наименование = НовСтрока.Тип; НовСтрока.ПутьКФайлу = ФайлКонфигурации; @@ -362,6 +323,7 @@ Если ПустаяСтрока(СтрокаОбъектКонфигурации.ПутьКФайлу) Тогда СтрокаОбъектКонфигурации.ПутьКФайлу = СтруктураКаталогов.ИмяФайлаОписанияОбъекта(СтрокаОбъектКонфигурации.Наименование, СтрокаОбъектКонфигурации.Тип); + СтрокаОбъектКонфигурации.ПутьККаталогу = СтруктураКаталогов.КаталогФайловОбъекта(СтрокаОбъектКонфигурации.Наименование, СтрокаОбъектКонфигурации.Тип); КонецЕсли; @@ -501,8 +463,18 @@ КонецПроцедуры -Процедура ПриСозданииОбъекта(КаталогИсходников) +Процедура ПриСозданииОбъекта(КаталогИсходников, пТипКорневогоЭлемента = Неопределено) + Если пТипКорневогоЭлемента = Неопределено Тогда + + ТипКорневогоЭлемента = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(); + + Иначе + + ТипКорневогоЭлемента = пТипКорневогоЭлемента; + + КонецЕсли; + СтруктураКаталогов = Новый СтруктураКаталоговКонфигурации(КаталогИсходников, "Авто"); Если СтруктураКаталогов.ФорматВыгрузки() = ФорматыВыгрузки.EDT Тогда diff --git a/tests/ТестПроверкиРазбораКонфигурации.os b/tests/ТестПроверкиРазбораКонфигурации.os index 5022aa2..9182117 100644 --- a/tests/ТестПроверкиРазбораКонфигурации.os +++ b/tests/ТестПроверкиРазбораКонфигурации.os @@ -73,13 +73,13 @@ Для Каждого Объект Из Парсер.ОписаниеКонфигурации().ОбъектыКонфигурации Цикл - Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] описания объекта ""%1""", Парсер.ПолноеИмяОбъекта(Объект), Объект.ПутьКФайлу)).ЭтоИстина(); + Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] описания объекта ""%1""", Объект.ПолноеНаименование, Объект.ПутьКФайлу)).ЭтоИстина(); КонецЦикла; Для Каждого Объект Из Парсер.ОписаниеКонфигурации().МодулиКонфигурации Цикл - Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] модуля объекта ""%1""", Парсер.ПолноеИмяОбъекта(Объект), Объект.ПутьКФайлу)).ЭтоИстина(); + Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] модуля объекта ""%1""", Объект.Родитель.ПолноеНаименование, Объект.ПутьКФайлу)).ЭтоИстина(); Парсер.ПрочитатьСодержимоеМодуля(Объект); КонецЦикла; diff --git a/tests/ТестСозданияРасширения.os b/tests/ТестСозданияРасширения.os index 652cb9c..f796a6a 100644 --- a/tests/ТестСозданияРасширения.os +++ b/tests/ТестСозданияРасширения.os @@ -45,8 +45,8 @@ КаталогРасширения = ОбъединитьПути("ignore", "extension", "designer"); КаталогКонфигурации = ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10"); - Генератор = ГенераторBSL.СоздатьРасширение(ФорматыВыгрузки.Конфигуратор_8_3_10, КаталогРасширения); - Генератор.Инициализировать("Simple", "Простое расширение", "smpl_"); + Генератор = ГенераторBSL.ГенераторРасширения(КаталогРасширения, ФорматыВыгрузки.Конфигуратор_8_3_10); + Генератор.УстановитьОписание("Simple", "Простое расширение", "smpl_"); Парсер = ПарсерBSL.ПарсерКонфигурации(КаталогКонфигурации); Парсер.ПрочитатьСтруктуруКонфигурации(); @@ -73,7 +73,7 @@ КаталогРасширения = ОбъединитьПути("ignore", "extension", "designer"); КаталогКонфигурации = ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10"); - Генератор = ГенераторBSL.СоздатьРасширение(ФорматыВыгрузки.Конфигуратор_8_3_10, КаталогРасширения); + Генератор = ГенераторBSL.ГенераторРасширения(КаталогРасширения, ФорматыВыгрузки.Конфигуратор_8_3_10); Парсер = ПарсерBSL.ПарсерКонфигурации(КаталогКонфигурации); СоздатьПростоеРасширение(Парсер, Генератор); @@ -85,7 +85,7 @@ КаталогРасширения = ОбъединитьПути("ignore", "extension", "edt"); КаталогКонфигурации = ОбъединитьПути(КаталогФикстур(), "edtconfigurations", "Demo_8_3_10", "src"); - Генератор = ГенераторBSL.СоздатьРасширение(ФорматыВыгрузки.EDT, КаталогРасширения); + Генератор = ГенераторBSL.ГенераторРасширения(КаталогРасширения, ФорматыВыгрузки.EDT); Парсер = ПарсерBSL.ПарсерКонфигурации(КаталогКонфигурации); СоздатьПростоеРасширение(Парсер, Генератор); @@ -117,7 +117,7 @@ Процедура СоздатьПростоеРасширение(Парсер, Генератор) - Генератор.Инициализировать("Simple", "Простое расширение", "smpl_"); + Генератор.УстановитьОписание("Simple", "Простое расширение", "smpl_"); Парсер.ПрочитатьСтруктуруКонфигурации();