mirror of
https://github.com/bia-technologies/bsl-parser.git
synced 2024-11-27 08:20:55 +02:00
#ARCH-2530
Преработки для генерации расширений
This commit is contained in:
parent
6b34832c1f
commit
50c4e6c68f
96
src/ГенераторОписаний/Классы/ГенераторОписаний.os
Normal file
96
src/ГенераторОписаний/Классы/ГенераторОписаний.os
Normal file
@ -0,0 +1,96 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Описание модуля
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем Генератор Экспорт;
|
||||
Перем ПараметрыГенерации Экспорт;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Создает и инициализирует поток записи описаний корневого объекта
|
||||
//
|
||||
// Параметры:
|
||||
// Описание - Структура - Описание объекта, наименование синоним и прочее
|
||||
// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...)
|
||||
// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные
|
||||
//
|
||||
Функция СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла) Экспорт
|
||||
|
||||
Запись = Генератор.СоздатьОписаниеКорневогоОбъекта(Описание, ТипОбъекта, ИмяФайла, ПараметрыГенерации);
|
||||
ПараметрыГенерации.Вставить("ЗаписьConfiguration", Запись);
|
||||
|
||||
Возврат Запись;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сохраняет и закрывает поток записи описаний корневого объекта
|
||||
//
|
||||
Процедура ЗафиксироватьОписаниеКорневогоОбъекта() Экспорт
|
||||
|
||||
ОбработкаXML.ЗакрытьЗапись(ПараметрыГенерации.ЗаписьConfiguration);
|
||||
ПараметрыГенерации.ЗаписьConfiguration = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Регистрирует объект в списке объектов конфигурации
|
||||
//
|
||||
// Параметры:
|
||||
// ОбъектКонфигурации - Произвольный - Объект содержащий реквизиты - Тип и Наименование
|
||||
//
|
||||
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации) Экспорт
|
||||
|
||||
Генератор.ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает поток и инициализирует поток записи описания объекта
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Каноническое имя типа (Configuration, Extension...)
|
||||
// ИмяФайла - Строка - Имя файла описания объекта, в который будут записаны данные
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЗаписьXML - Поток записи данных
|
||||
//
|
||||
Функция СоздатьЗапись(ТипОбъекта, ИмяФайла) Экспорт
|
||||
|
||||
Возврат Генератор.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Записывает служебную информацию об уидах платформенных типов
|
||||
//
|
||||
// Параметры:
|
||||
// Запись - ЗаписьXML - Поток записи
|
||||
// ИмяОбъекта - Строка - Имя объекта конфигурации
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
|
||||
//
|
||||
Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт
|
||||
|
||||
Генератор.ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПриСозданииОбъекта(ФорматВыгрузки, ГенерацияРасширения) Экспорт
|
||||
|
||||
Если ФорматВыгрузки = ФорматыВыгрузки.EDT Тогда
|
||||
|
||||
Генератор = ГенераторОписанийEDT;
|
||||
|
||||
Иначе
|
||||
|
||||
Генератор = ГенераторОписанийКонфигуратор;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыГенерации = Генератор.СоздатьПараметрыГенерации("8.3.10", ГенерацияРасширения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
@ -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", Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -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], ПолноеИмяЭлемента);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -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(Запись, ИсходноеОписание)
|
||||
|
||||
|
@ -33,7 +33,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт
|
||||
// Выполняет запись описания объекта
|
||||
//
|
||||
// Параметры:
|
||||
// Запись - ЗаписьXML - Поток записи
|
||||
// Данные - Структура - Данные описания объекта
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
|
||||
// Генератор - Модуль - Модуль реализующий специфику записи в необходимом формате
|
||||
//
|
||||
Процедура ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт
|
||||
|
||||
ФорматEDT = Генератор = ГенераторОписанийEDT;
|
||||
ПараметрыЗаписи = ПараметрыСериализации.ПараметрыЗаписи(ТипОбъекта, ?(ФорматEDT, ФорматыВыгрузки.EDT, ФорматыВыгрузки.Конфигуратор_8_3_10));
|
||||
@ -77,7 +85,7 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
|
@ -52,4 +52,4 @@
|
||||
| ЭлементСтиля | ЭлементыСтиля | StyleItem | StyleItems | | |
|
||||
| Язык | Языки | Language | Languages | | |
|
||||
| Конфигурация | Конфигурации | Configuration | Configurations | true | |
|
||||
| Расширение | Расширения | Extension | Extensions | true | |
|
||||
| Расширение | Расширения | Extension | Extensions | true | |
|
||||
|
@ -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 | |
|
||||
|
@ -1,18 +1,38 @@
|
||||
#Использовать "..\ГенераторОписаний"
|
||||
#Использовать "..\ЧтениеОписаний"
|
||||
#Использовать "..\Общее"
|
||||
|
||||
// Создает генератор для формирования описания расширения
|
||||
//
|
||||
// Параметры:
|
||||
// КаталогНазначения - Строка - Каталог, в который записываются описания
|
||||
// Формат - Строка - Формат описания
|
||||
// КаталогИсходниковРасширения - Строка - Каталог, в который записываются описания
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ГенераторРасширения - Объект для формирования описания
|
||||
//
|
||||
Функция СоздатьРасширение(Формат, КаталогИсходниковРасширения) Экспорт
|
||||
Функция ГенераторРасширения(КаталогНазначения, Формат) Экспорт
|
||||
|
||||
Генератор = Новый ГенераторРасширений(Формат, КаталогИсходниковРасширения);
|
||||
Генератор = Новый ГенераторРасширений("Extension");
|
||||
|
||||
Генератор.СоздатьНовоеРасширение(КаталогНазначения, Формат);
|
||||
|
||||
Возврат Генератор;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает генератор для редактирования описания расширения
|
||||
//
|
||||
// Параметры:
|
||||
// КаталогНазначения - Строка - Каталог, в который записываются описания
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ГенераторРасширения - Объект для формирования описания
|
||||
//
|
||||
Функция РедакторРасширения(КаталогНазначения) Экспорт
|
||||
|
||||
Генератор = Новый ГенераторРасширений("Extension");
|
||||
Генератор.Загрузить(КаталогНазначения);
|
||||
|
||||
Возврат Генератор;
|
||||
|
||||
@ -21,7 +41,7 @@
|
||||
// Создает структуру данных объекта
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Тип объекта
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
|
||||
// Наименование - Строка - Имя объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -35,7 +35,7 @@
|
||||
//
|
||||
Функция ПарсерРасширения(КаталогИсходников) Экспорт
|
||||
|
||||
ВызватьИсключение "Не реализованно";
|
||||
Возврат Новый РазборКонфигурации1С(КаталогИсходников, "Extension");
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -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 поток
|
||||
//
|
||||
// Параметры:
|
||||
|
@ -11,7 +11,7 @@
|
||||
// Формирует параметры для чтения описания объекта конкретного типа
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Тип объекта
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
|
||||
// Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -34,7 +34,7 @@
|
||||
// Формирует параметры для записи описания объекта конкретного типа
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Тип объекта
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
|
||||
// Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -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";
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
@ -92,6 +92,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает имя типа расширение
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя типа
|
||||
//
|
||||
Функция ИмяТипаРасширения() Экспорт
|
||||
|
||||
Возврат НормализоватьИмя("Расширение");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает имя типа общего модуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -20,9 +20,9 @@
|
||||
//
|
||||
Функция ПрочитатьФайл(ИмяФайла) Экспорт
|
||||
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент();
|
||||
ТекстовыйДокумент.Прочитать(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||
СодержимоеФайла = ТекстовыйДокумент.ПолучитьТекст();
|
||||
Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||
СодержимоеФайла = Чтение.Прочитать();
|
||||
Чтение.Закрыть();
|
||||
|
||||
Возврат СодержимоеФайла;
|
||||
|
||||
|
@ -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 Тогда
|
||||
|
@ -73,13 +73,13 @@
|
||||
|
||||
Для Каждого Объект Из Парсер.ОписаниеКонфигурации().ОбъектыКонфигурации Цикл
|
||||
|
||||
Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] описания объекта ""%1""", Парсер.ПолноеИмяОбъекта(Объект), Объект.ПутьКФайлу)).ЭтоИстина();
|
||||
Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] описания объекта ""%1""", Объект.ПолноеНаименование, Объект.ПутьКФайлу)).ЭтоИстина();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Объект Из Парсер.ОписаниеКонфигурации().МодулиКонфигурации Цикл
|
||||
|
||||
Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] модуля объекта ""%1""", Парсер.ПолноеИмяОбъекта(Объект), Объект.ПутьКФайлу)).ЭтоИстина();
|
||||
Ожидаем.Что(ФС.ФайлСуществует(Объект.ПутьКФайлу), СтрШаблон("Не существует файл [%2] модуля объекта ""%1""", Объект.Родитель.ПолноеНаименование, Объект.ПутьКФайлу)).ЭтоИстина();
|
||||
Парсер.ПрочитатьСодержимоеМодуля(Объект);
|
||||
|
||||
КонецЦикла;
|
||||
|
@ -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_");
|
||||
|
||||
Парсер.ПрочитатьСтруктуруКонфигурации();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user