1
0
mirror of https://github.com/bia-technologies/bsl-parser.git synced 2025-02-16 19:47:28 +02:00

#ARCH-2530

Переделки для rabbi
* Класс описания конфигурации
* Удалены имена реквизитов для EDT из описаний, они вычисляются
* Расширен API
* Рефакторинг
This commit is contained in:
aleksey.koryakin 2019-05-29 18:43:16 +03:00
parent 3ce22fd2a2
commit ba00974c19
10 changed files with 360 additions and 220 deletions

View File

@ -30,25 +30,24 @@
//
Процедура Инициализировать(ИмяРасширения, ПредставлениеРасширения, ПрефиксРасширения) Экспорт
ОписаниеРасширения = СтруктурыОписаний.СоздатьОбъект("Расширение", ИмяРасширения);
ОписаниеРасширения.Синоним = ПредставлениеРасширения;
ОписаниеРасширения.ПрефиксИмен = ПрефиксРасширения;
ОписаниеРасширения.Принадлежность = "Adopted";
ОписаниеРасширения.Назначение = "Customization";
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
ОписаниеКонфигурации = Новый Структура("ОбъектыКонфигурации, СвойстваКонфигурации", ОбъектыКонфигурации, ОписаниеРасширения);
ОписаниеКонфигурации = Новый ОписаниеКонфигурации;
СтрокаКонфигурация = ОбъектыКонфигурации.Добавить();
ОписаниеКонфигурации.СвойстваКонфигурации = СтруктурыОписаний.СоздатьОбъект("Расширение", ИмяРасширения);
ОписаниеКонфигурации.СвойстваКонфигурации.Синоним = ПредставлениеРасширения;
ОписаниеКонфигурации.СвойстваКонфигурации.ПрефиксИмен = ПрефиксРасширения;
ОписаниеКонфигурации.СвойстваКонфигурации.Принадлежность = "Adopted";
ОписаниеКонфигурации.СвойстваКонфигурации.Назначение = "Customization";
СтрокаКонфигурация = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию();
ЗаполнитьЗначенияСвойств(СтрокаКонфигурация, ПустаяСтрокаОбъектКонфигурации);
СтрокаКонфигурация.Тип = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации();
СтрокаКонфигурация.Наименование = СтрокаКонфигурация.Тип;
СтрокаКонфигурация.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияКонфигурации();
СтрокаКонфигурация.Описание = ОписаниеРасширения;
СтрокаКонфигурация.Описание = ОписаниеКонфигурации.СвойстваКонфигурации;
ЗаписьConfiguration = ГенераторОписаний.СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации);
ЗаписьConfiguration = ГенераторОписаний.СоздатьОписаниеРасширения(ОписаниеКонфигурации.СвойстваКонфигурации, ПараметрыГенерации);
КонецПроцедуры
@ -63,7 +62,7 @@
Если Стр.Тип <> ТипКонфигурация И Стр.Родитель = Неопределено Тогда
ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр.Наименование, Стр.Тип, ПараметрыГенерации);
ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр, ПараметрыГенерации);
КонецЕсли;
@ -120,7 +119,7 @@
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта расширения
//
Функция ПеренестиОбъектВРасширение(ОбъектРодительскойКонфигурации) Экспорт
Функция ПеренестиОбъектВРасширение(ОбъектРодительскойКонфигурации, НеЗакрывать = Ложь) Экспорт
ОбъектКонфигурации = ДобавитьОбъектКонфигурации(ОбъектРодительскойКонфигурации.Наименование, ОбъектРодительскойКонфигурации.Тип);
@ -131,17 +130,29 @@
СокращенноеОписание = СтруктурыОписаний.СоздатьСокращеннуюСтруктураОбъекта(ОбъектРодительскойКонфигурации.ПолноеНаименование);
Если ОбъектРодительскойКонфигурации.Описание = Неопределено Тогда
СокращенноеОписание.Наименование = ОбъектКонфигурации.Наименование;
Иначе
ЗаполнитьЗначенияСвойств(СокращенноеОписание, ОбъектРодительскойКонфигурации.Описание, , "Подчиненные");
КонецЕсли;
СокращенноеОписание.Вставить("ObjectBelonging", "Adopted");
СокращенноеОписание.Принадлежность = "Adopted";
ОбъектКонфигурации.Описание = СокращенноеОписание;
ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание);
Запись = ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание, НеЗакрывать);
Если НеЗакрывать = Истина Тогда
Возврат Запись;
Иначе
Возврат ОбъектКонфигурации;
Возврат ОбъектКонфигурации;
КонецЕсли;
КонецФункции
@ -210,13 +221,37 @@
КонецПроцедуры
// Добавляет произвольный файл в расширение, без регистрации и смс
//
// Параметры:
// ОтносительныйПуть - Строка - Путь в рамках исходников расширения
// ИсходныйФайл - Строка - Полный путь к добавляемому файлу
//
Функция ДобавитьФайлОбъекта(Объект, ОтносительныйПуть, ИсходныйФайл) Экспорт
ПолныйПуть = ОбъединитьПути(Объект.ПутьККаталогу, ОтносительныйПуть);
Утилиты.СоздатьРекурсивноКаталоги((Новый Файл(ПолныйПуть)).Путь);
КопироватьФайл(ИсходныйФайл, ПолныйПуть);
Возврат ПолныйПуть;
КонецФункции
Функция СоздатьЗаписьОписания(ТипОбъекта, ИмяФайла) Экспорт
Возврат ГенераторОписаний.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла);
КонецФункции
///////////////////////////////////////////////////////////////////
// Служебный функционал
///////////////////////////////////////////////////////////////////
Процедура ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ДанныеОбъекта)
Функция ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ДанныеОбъекта, НеЗакрывать = Ложь)
Запись = ГенераторОписаний.СоздатьЗапись(ОбъектКонфигурации.Тип, ПараметрыГенерации);
ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
Запись = СоздатьЗаписьОписания(ОбъектКонфигурации.Тип, ИмяФайла);
ОписаниеСвойств = СтруктурыОписаний.ОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип);
@ -226,16 +261,20 @@
Если ОписаниеСвойств.ЕстьПодчиненные Тогда
ГенераторОписаний.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено));
КонецЕсли;
ТекстОписания = ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
Если НеЗакрывать = Истина Тогда
Возврат Запись;
Иначе
ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
КонецЕсли;
ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
Утилиты.ЗаписатьФайл(ИмяФайла, ТекстОписания);
КонецПроцедуры
КонецФункции
Функция ДобавитьОбъектКонфигурации(ИмяОбъекта, Знач ТипОбъекта)

View File

@ -50,22 +50,22 @@
ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации);
ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, "Расширение", ЭтотОбъект);
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("extension");
ЗаписьConfiguration.ЗаписатьСоответствиеПространстваИмен("type", "mdclassExtension:ConfigurationExtension");
ЗаписьConfiguration.ЗаписатьАтрибут("xsi:type", "mdclassExtension:ConfigurationExtension");
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // extension
Для Каждого uid из ГенераторОписанийОбщий.ПолучитьUIDДляГенерацииРасширения() Цикл
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("containedObjects");
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "classId", uid);
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "objectId", Строка(Новый УникальныйИдентификатор()));
Для Каждого uid из ГенераторОписанийОбщий.ПолучитьUIDДляГенерацииРасширения() Цикл
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("containedObjects");
ЗаписьConfiguration.ЗаписатьАтрибут("classId", uid);
ЗаписьConfiguration.ЗаписатьАтрибут("objectId", Строка(Новый УникальныйИдентификатор()));
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // containedObjects
КонецЦикла;
ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, "Расширение", ЭтотОбъект);
ПараметрыГенерации.Вставить("ЗаписьConfiguration", ЗаписьConfiguration);
Возврат ЗаписьConfiguration;
@ -82,13 +82,16 @@
// Проверок на существование объекта нет
//
// Параметры:
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации) Экспорт
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ВидМетаданного, ИмяМетаданного);
ИмяТипа = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ОбъектКонфигурации.Тип).НаименованиеКоллекцииEng;
ИмяТипа = НРег(Лев(ИмяТипа, 1)) + Сред(ИмяТипа, 2);
ИмяОбъекта = СтрШаблон("%1.%2", ОбъектКонфигурации.Тип, ОбъектКонфигурации.Наименование);
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ИмяТипа, ИмяОбъекта);
КонецПроцедуры
@ -106,7 +109,7 @@
Для Каждого Тип Из ПорождаемыеТипы Цикл
Запись.ЗаписатьНачалоЭлемента(Тип);
Запись.ЗаписатьНачалоЭлемента(НРег(Лев(Тип, 1)) + Сред(Тип, 2));
Запись.ЗаписатьАтрибут("typeId", Строка(Новый УникальныйИдентификатор()));
Запись.ЗаписатьАтрибут("valueTypeId", Строка(Новый УникальныйИдентификатор()));
Запись.ЗаписатьКонецЭлемента();
@ -159,18 +162,33 @@
// Возвращаемое значение:
// ЗаписьXML- Поток записи описания
//
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации) Экспорт
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла = Неопределено) Экспорт
Запись = Новый ЗаписьXML();
Запись.Отступ = Ложь;
Запись.УстановитьСтроку("UTF-8");
Запись = Новый ЗаписьXML();
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", , , , " ");
Если ЗначениеЗаполнено(ИмяФайла) Тогда
Запись.ОткрытьФайл(ИмяФайла, ПараметрыЗаписи);
Иначе
Запись.УстановитьСтроку(ПараметрыЗаписи);
КонецЕсли;
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента(СтрШаблон("mdclass:%1", ТипОбъекта));
Если ПараметрыГенерации.ГенерацияРасширения Тогда
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
КонецЕсли;
Запись.ЗаписатьСоответствиеПространстваИмен("mdclass", "http://g5.1c.ru/v8/dt/metadata/mdclass");
Если ПараметрыГенерации.ГенерацияРасширения Тогда
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Запись.ЗаписатьСоответствиеПространстваИмен("mdclassExtension", "http://g5.1c.ru/v8/dt/metadata/mdclass/extension");
КонецЕсли;

View File

@ -92,13 +92,12 @@
// Проверок на существование объекта нет
//
// Параметры:
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ВидМетаданного, ИмяМетаданного);
Процедура ЗарегистрироватьОбъектВКонфигурации(ОбъектКонфигурации, ПараметрыГенерации) Экспорт
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ОбъектКонфигурации.Тип, ОбъектКонфигурации.Наименование);
КонецПроцедуры
@ -213,11 +212,20 @@
// Возвращаемое значение:
// ЗаписьXML- Поток записи описания
//
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации) Экспорт
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации, ИмяФайла = Неопределено) Экспорт
Запись = Новый ЗаписьXML();
Если ЗначениеЗаполнено(ИмяФайла) Тогда
Запись.ОткрытьФайл(ИмяФайла, "UTF-8");
Иначе
Запись.УстановитьСтроку("UTF-8");
КонецЕсли;
Запись.Отступ = Ложь;
Запись.УстановитьСтроку("UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("MetaDataObject");
Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.3/MDClasses");

View File

@ -41,6 +41,12 @@
АргументыПреобразования = Новый Массив(2);
АргументыПреобразования[0] = Запись;
Если Данные.Свойство("Принадлежность") И Данные.Принадлежность = Неопределено Тогда
Данные.Удалить("Принадлежность");
КонецЕсли;
Для Каждого Элемент Из ПараметрыЗаписи.Свойства Цикл
Значение = Неопределено;
@ -71,12 +77,6 @@
КонецЦикла;
Если Данные.Свойство("ObjectBelonging") Тогда
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "ObjectBelonging", Данные.ObjectBelonging);
КонецЕсли;
КонецФункции
#Область РаботаСXML

View File

@ -4,144 +4,146 @@
Возможные колонки:
* Наименование - Имя свойства. Обязательное.
* ЭлементEDT - Имя поля в файле описаний выгрузки EDT. Обязательное.
* ЭлементDesigner - Имя поля в файле описаний выгрузки конфигуратора. Обязательное.
* Реквизит - Имя поля в файле описаний выгрузки. Обязательное.
* МетодПреобразования - Имя метода для кастомного чтения свойства. Не обязательное.
* ЗначениеПоУмолчанию - Строковое представление значения по-умолчанию. Не обязательное.
* ТипЗначения - Имя типа значения. Не обязательное.
## Реквизиты Default
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ---------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Наименование | Реквизит | МетодПреобразования |
| -------------- | --------------- | ------------------- |
| Наименование | Name | |
| Синоним | Synonym | МногоязычнаяСтрока |
| Комментарий | Comment | МногоязычнаяСтрока |
| Принадлежность | ObjectBelonging | |
## Реквизиты Configuration
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ----------------------------------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ------------------- |
| АвторскиеПрава | copyright | Copyright | МногоязычнаяСтрока |
| АдресИнформацииОКонфигурации | configurationInformationAddress | ConfigurationInformationAddress | МногоязычнаяСтрока |
| АдресИнформацииОПоставщике | vendorInformationAddress | VendorInformationAddress | МногоязычнаяСтрока |
| АдресКаталогаОбновлений | updateCatalogAddress | UpdateCatalogAddress | |
| ВариантВстроенногоЯзыка | scriptVariant | ScriptVariant | |
| Версия | version | Version | |
| ВключатьСправкуВСодержание | includeHelpInContents | IncludeHelpInContents | |
| ДополнительнаяФормаКонстант | auxiliaryConstantsForm | AuxiliaryConstantsForm | |
| ДополнительныеСловариПолнотекстовогоПоиска | additionalFullTextSearchDictionaries | AdditionalFullTextSearchDictionaries | |
| Заставка | splash | Splash | |
| ИнтерфейсКлиентскогоПриложения | clientApplicationInterface | ClientApplicationInterface | |
| ИспользоватьОбычныеФормыВУправляемомПриложении | useOrdinaryFormInManagedApplication | UseOrdinaryFormInManagedApplication | |
| ИспользоватьУправляемыеФормыВОбычномПриложении | useManagedFormInOrdinaryApplication | UseManagedFormInOrdinaryApplication | |
| КартинкаОсновногоРаздела | mainSectionPicture | MainSectionPicture | |
| КомандныйИнтерфейс | commandInterface | CommandInterface | |
| КомандныйИнтерфейсОсновногоРаздела | mainSectionCommandInterface | MainSectionCommandInterface | |
| Комментарий | comment | Comment | МногоязычнаяСтрока |
| КраткаяИнформация | briefInformation | BriefInformation | МногоязычнаяСтрока |
| Логотип | logo | Logo | |
| МодульВнешнегоСоединения | externalConnectionModule | ExternalConnectionModule | |
| МодульОбычногоПриложения | ordinaryApplicationModule | OrdinaryApplicationModule | |
| МодульСеанса | sessionModule | SessionModule | |
| МодульУправляемогоПриложения | managedApplicationModule | ManagedApplicationModule | |
| НазначениеРасширенияКонфигурации | configurationExtensionPurpose | ConfigurationExtensionPurpose | |
| НазначенияИспользования | usePurposes | UsePurposes | |
| Наименование | name | Name | |
| ОсновнаяФормаВариантаОтчета | defaultReportVariantForm | DefaultReportVariantForm | |
| ОсновнаяФормаКонстант | defaultConstantsForm | DefaultConstantsForm | |
| ОсновнаяФормаНастроекДинамическогоСписка | defaultDynamicListSettingsForm | DefaultDynamicListSettingsForm | |
| ОсновнаяФормаНастроекОтчета | defaultReportSettingsForm | DefaultReportSettingsForm | |
| ОсновнаяФормаОтчета | defaultReportForm | DefaultReportForm | |
| ОсновнаяФормаПоиска | defaultSearchForm | DefaultSearchForm | |
| ОсновнойИнтерфейс | defaultInterface | DefaultInterface | |
| ОсновнойРежимЗапуска | defaultRunMode | DefaultRunMode | |
| ОсновнойСтиль | defaultStyle | DefaultStyle | |
| ОсновнойЯзык | defaultLanguage | DefaultLanguage | |
| ОсновныеРоли | defaultRoles | DefaultRoles | |
| ПодробнаяИнформация | detailedInformation | DetailedInformation | МногоязычнаяСтрока |
| Поставщик | vendor | Vendor | |
| ПрефиксИмен | namePrefix | NamePrefix | |
| ПринадлежностьОбъекта | objectBelonging | ObjectBelonging | |
| РабочаяОбластьНачальнойСтраницы | homePageWorkArea | HomePageWorkArea | |
| РежимАвтонумерацииОбъектов | objectAutonumerationMode | ObjectAutonumerationMode | |
| РежимИспользованияМодальности | modalityUseMode | ModalityUseMode | |
| РежимИспользованияСинхронныхВызововРасширенийПлатформыИВнешнихКомпонент | synchronousPlatformExtensionAndAddInCallUseMode | SynchronousPlatformExtensionAndAddInCallUseMode | |
| РежимОсновногоОкнаКлиентскогоПриложения | mainClientApplicationWindowMode | MainClientApplicationWindowMode | |
| РежимСовместимости | compatibilityMode | CompatibilityMode | |
| РежимСовместимостиИнтерфейса | interfaceCompatibilityMode | InterfaceCompatibilityMode | |
| РежимСовместимостиРасширенияКонфигурации | configurationExtensionCompatibilityMode | ConfigurationExtensionCompatibilityMode | |
| РежимУправленияБлокировкойДанных | dataLockControlMode | DataLockControlMode | |
| РодительскиеКонфигурации | parentConfigurations | ParentConfigurations | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Справка | help | Help | |
| ТребуемыеРазрешенияМобильногоПриложения | requiredMobileApplicationPermissions | RequiredMobileApplicationPermissions | |
| ФрагментКомандногоИнтерфейса | commandInterfaceFragment | CommandInterfaceFragment | |
| ХранилищеВариантовОтчетов | reportsVariantsStorage | ReportsVariantsStorage | |
| ХранилищеНастроекДанныхФорм | formDataSettingsStorage | FormDataSettingsStorage | |
| ХранилищеОбщихНастроек | commonSettingsStorage | CommonSettingsStorage | |
| ХранилищеПользовательскихНастроекДинамическихСписков | dynamicListsUserSettingsStorage | DynamicListsUserSettingsStorage | |
| ХранилищеПользовательскихНастроекОтчетов | reportsUserSettingsStorage | ReportsUserSettingsStorage | |
| Наименование | Реквизит | МетодПреобразования |
| ----------------------------------------------------------------------- | ----------------------------------------------- | ------------------- |
| АвторскиеПрава | Copyright | МногоязычнаяСтрока |
| АдресИнформацииОКонфигурации | ConfigurationInformationAddress | МногоязычнаяСтрока |
| АдресИнформацииОПоставщике | VendorInformationAddress | МногоязычнаяСтрока |
| АдресКаталогаОбновлений | UpdateCatalogAddress | |
| ВариантВстроенногоЯзыка | ScriptVariant | |
| Версия | Version | |
| ВключатьСправкуВСодержание | IncludeHelpInContents | |
| ДополнительнаяФормаКонстант | AuxiliaryConstantsForm | |
| ДополнительныеСловариПолнотекстовогоПоиска | AdditionalFullTextSearchDictionaries | |
| Заставка | Splash | |
| ИнтерфейсКлиентскогоПриложения | ClientApplicationInterface | |
| ИспользоватьОбычныеФормыВУправляемомПриложении | UseOrdinaryFormInManagedApplication | |
| ИспользоватьУправляемыеФормыВОбычномПриложении | UseManagedFormInOrdinaryApplication | |
| КартинкаОсновногоРаздела | MainSectionPicture | |
| КомандныйИнтерфейс | CommandInterface | |
| КомандныйИнтерфейсОсновногоРаздела | MainSectionCommandInterface | |
| КраткаяИнформация | BriefInformation | МногоязычнаяСтрока |
| Логотип | Logo | |
| МодульВнешнегоСоединения | ExternalConnectionModule | |
| МодульОбычногоПриложения | OrdinaryApplicationModule | |
| МодульСеанса | SessionModule | |
| МодульУправляемогоПриложения | ManagedApplicationModule | |
| НазначениеРасширенияКонфигурации | ConfigurationExtensionPurpose | |
| НазначенияИспользования | UsePurposes | |
| ОсновнаяФормаВариантаОтчета | DefaultReportVariantForm | |
| ОсновнаяФормаКонстант | DefaultConstantsForm | |
| ОсновнаяФормаНастроекДинамическогоСписка | DefaultDynamicListSettingsForm | |
| ОсновнаяФормаНастроекОтчета | DefaultReportSettingsForm | |
| ОсновнаяФормаОтчета | DefaultReportForm | |
| ОсновнаяФормаПоиска | DefaultSearchForm | |
| ОсновнойИнтерфейс | DefaultInterface | |
| ОсновнойРежимЗапуска | DefaultRunMode | |
| ОсновнойСтиль | DefaultStyle | |
| ОсновнойЯзык | DefaultLanguage | |
| ОсновныеРоли | DefaultRoles | |
| ПодробнаяИнформация | DetailedInformation | МногоязычнаяСтрока |
| Поставщик | Vendor | |
| РабочаяОбластьНачальнойСтраницы | HomePageWorkArea | |
| РежимАвтонумерацииОбъектов | ObjectAutonumerationMode | |
| РежимИспользованияМодальности | ModalityUseMode | |
| РежимИспользованияСинхронныхВызововРасширенийПлатформыИВнешнихКомпонент | SynchronousPlatformExtensionAndAddInCallUseMode | |
| РежимОсновногоОкнаКлиентскогоПриложения | MainClientApplicationWindowMode | |
| РежимСовместимости | CompatibilityMode | |
| РежимСовместимостиИнтерфейса | InterfaceCompatibilityMode | |
| РежимСовместимостиРасширенияКонфигурации | ConfigurationExtensionCompatibilityMode | |
| РежимУправленияБлокировкойДанных | DataLockControlMode | |
| РодительскиеКонфигурации | ParentConfigurations | |
| Справка | Help | |
| ТребуемыеРазрешенияМобильногоПриложения | RequiredMobileApplicationPermissions | |
| ФрагментКомандногоИнтерфейса | CommandInterfaceFragment | |
| ХранилищеВариантовОтчетов | ReportsVariantsStorage | |
| ХранилищеНастроекДанныхФорм | FormDataSettingsStorage | |
| ХранилищеОбщихНастроек | CommonSettingsStorage | |
| ХранилищеПользовательскихНастроекДинамическихСписков | DynamicListsUserSettingsStorage | |
| ХранилищеПользовательскихНастроекОтчетов | ReportsUserSettingsStorage | |
## Реквизиты Extension
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| -------------- | ----------------------------- | ----------------------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Принадлежность | objectBelonging | ObjectBelonging | |
| ПрефиксИмен | namePrefix | NamePrefix | |
| Назначение | ConfigurationExtensionPurpose | ConfigurationExtensionPurpose | |
| Наименование | Реквизит | МетодПреобразования |
| ------------ | ----------------------------- | ------------------- |
| ПрефиксИмен | NamePrefix | |
| Назначение | ConfigurationExtensionPurpose | |
## Реквизиты Subsystem
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ТипЗначения |
| --------------------------- | ------------------------- | ------------------------- | ------------------- | ----------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
| ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | IncludeInCommandInterface | ЗначениеБулево | |
| ВключатьВСодержимоеСправки | IncludeHelpInContents | IncludeHelpInContents | ЗначениеБулево | |
| Пояснение | Explanation | Explanation | МногоязычнаяСтрока | |
| Состав | Content | Content | СоставПодсистемы | Массив |
| Наименование | Реквизит | МетодПреобразования | ТипЗначения |
| --------------------------- | ------------------------- | ------------------- | ----------- |
| ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | ЗначениеБулево | |
| ВключатьВСодержимоеСправки | IncludeHelpInContents | ЗначениеБулево | |
| Пояснение | Explanation | МногоязычнаяСтрока | |
| Состав | Content | СоставПодсистемы | Массив |
## Реквизиты CommonModule
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ЗначениеПоУмолчанию |
| ----------------------- | ------------------------- | ------------------------- | ------------------- | ------------------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
| Глобальный | global | Global | ЗначениеБулево | false |
| Клиент | clientManagedApplication | ClientManagedApplication | ЗначениеБулево | false |
| КлиентОбычноеПриложение | ClientOrdinaryApplication | ClientOrdinaryApplication | ЗначениеБулево | false |
| Сервер | server | Server | ЗначениеБулево | true |
| ВнешнееСоединение | ExternalConnection | ExternalConnection | ЗначениеБулево | false |
| ВызовСервера | ServerCall | ServerCall | ЗначениеБулево | false |
| Привилегированный | Privileged | Privileged | ЗначениеБулево | false |
| ПовторноеИспользование | ReturnValuesReuse | ReturnValuesReuse | | DontUse |
## Реквизиты ExchangePlan
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ЗначениеПоУмолчанию |
| ------------ | ---------- | --------------- | ------------------- | ------------------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
## Реквизиты Document
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ---------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
| Наименование | Реквизит | МетодПреобразования | ЗначениеПоУмолчанию |
| ----------------------- | ------------------------- | ------------------- | ------------------- |
| Глобальный | Global | ЗначениеБулево | false |
| Клиент | ClientManagedApplication | ЗначениеБулево | false |
| КлиентОбычноеПриложение | ClientOrdinaryApplication | ЗначениеБулево | false |
| Сервер | Server | ЗначениеБулево | true |
| ВнешнееСоединение | ExternalConnection | ЗначениеБулево | false |
| ВызовСервера | ServerCall | ЗначениеБулево | false |
| Привилегированный | Privileged | ЗначениеБулево | false |
| ПовторноеИспользование | ReturnValuesReuse | | DontUse |
## Реквизиты Constant
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ----------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
| Тип | type | type | ПолучитьТип |
| Пояснение | explanation | 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 | |

View File

@ -0,0 +1,83 @@
///////////////////////////////////////////////////////////////////////////////
//
// Класс описывающий структуру конфигурации
//
///////////////////////////////////////////////////////////////////////////////
Перем ОбъектыКонфигурации Экспорт;
Перем СвойстваКонфигурации Экспорт;
Перем МодулиКонфигурации Экспорт;
Перем ФормыКонфигурации Экспорт;
Перем КомандыКонфигурации Экспорт;
Перем ПодсистемыКонфигурации Экспорт;
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
Функция НайтиОбъект(Знач ИмяОбъекта, Знач ТипОбъекта = Неопределено) Экспорт
Если ТипОбъекта = Неопределено
И СтрНайти(ИмяОбъекта, ".")
И ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(Лев(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") - 1)) <> Неопределено Тогда
ТипОбъекта = Лев(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") - 1);
ИмяОбъекта = Сред(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") + 1);
КонецЕсли;
Если ЗначениеЗаполнено(ТипОбъекта) Тогда
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
НайденныеОбъекты = ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип, Наименование", ТипОбъекта, ИмяОбъекта));
Если НайденныеОбъекты.Количество() Тогда
Возврат НайденныеОбъекты[0];
КонецЕсли;
Иначе
Возврат ОбъектыКонфигурации.Найти(ИмяОбъекта, "Наименование");
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПолучитьОбъектыТипа(Знач ТипОбъекта) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
Возврат ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип", ТипОбъекта));
КонецФункции
Процедура ПриСозданииОбъекта() Экспорт
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
МодулиКонфигурации = СтруктурыОписаний.ТаблицаОписанияМодулей();
// todo сделать чтение форм
ФормыКонфигурации = Новый ТаблицаЗначений;
ФормыКонфигурации.Колонки.Добавить("Родитель");
ФормыКонфигурации.Колонки.Добавить("ЭтоУправляемаяФорма");
ФормыКонфигурации.Колонки.Добавить("Наименование");
// todo сделать чтение команд
КомандыКонфигурации = Новый ТаблицаЗначений;
КомандыКонфигурации.Колонки.Добавить("Родитель");
КомандыКонфигурации.Колонки.Добавить("Наименование");
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////

View File

@ -68,7 +68,7 @@
РеквизитыСвойства = "Наименование, МетодПреобразования, Поле, ЭтоКоллекция";
РеквизитИмениПоля = ?(Формат = ФорматыВыгрузки.EDT, "ЭлементEDT", "ЭлементDesigner");
ФорматEDT = Формат = ФорматыВыгрузки.EDT;
Если ОписаниеОбъекта.ЕстьЗначенияПоУмолчанию Тогда
РеквизитыСвойства = РеквизитыСвойства + ", ЗначенияПоУмолчанию";
@ -81,7 +81,14 @@
ОписаниеСвойства = Новый Структура(РеквизитыСвойства);
ЗаполнитьЗначенияСвойств(ОписаниеСвойства, Свойство);
ОписаниеСвойства.Поле = Свойство[РеквизитИмениПоля];
Если ФорматEDT Тогда
ОписаниеСвойства.Поле = НРег(Лев(Свойство.Реквизит, 1)) + Сред(Свойство.Реквизит, 2);
Иначе
ОписаниеСвойства.Поле = Свойство.Реквизит;
КонецЕсли;
Если ДляЧтения Тогда

View File

@ -203,7 +203,7 @@
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
Данные = Новый Структура("Наименование", "");
Данные = Новый Структура("Наименование, Принадлежность", "");
Если ОписаниеОбъекта.ЕстьПодчиненные Тогда
@ -232,20 +232,28 @@
КонецЕсли;
Свойства = СвойстваОбъектов[ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта)];
БазовыеСвойства = БазовоеОписаниеСвойствОбъекта();
Если Свойства = Неопределено Тогда
Свойства = БазовоеОписаниеСвойствОбъекта();
Свойства = БазовыеСвойства;
ПараметрыПродукта.ПолучитьЛог().Предупреждение("Нет описания типа %1. Использовано описание по-умолчанию", ТипОбъекта);
Иначе
Для каждого Свойство Из БазовыеСвойства Цикл
ЗаполнитьЗначенияСвойств(Свойства.Добавить(), Свойство);
КонецЦикла;
КонецЕсли;
ОписаниеОбъекта = Новый Структура("Тип, Свойства, ЕстьПодчиненные, ЕстьЗначенияПоУмолчанию", ТипОбъекта);
НормализованнаяТаблицаСвойств = Новый ТаблицаЗначений();
НормализованнаяТаблицаСвойств.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭлементEDT", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭлементDesigner", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("Реквизит", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("МетодПреобразования", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЗначениеПоУмолчанию", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("Строка"));

View File

@ -27,8 +27,10 @@
//
Процедура ПрочитатьСтруктуруКонфигурации() Экспорт
ОписаниеКонфигурации = ПрочитатьОписаниеКонфигурации();
ОписаниеКонфигурации = Новый ОписаниеКонфигурации();
ПрочитатьОписаниеКонфигурации();
ЗаполнитьИменаФайлов();
@ -38,23 +40,6 @@
//
Процедура НайтиМодулиКонфигурации() Экспорт
МодулиКонфигурации = СтруктурыОписаний.ТаблицаОписанияМодулей();
// todo сделать чтение форм
ФормыКонфигурации = Новый ТаблицаЗначений;
ФормыКонфигурации.Колонки.Добавить("Родитель");
ФормыКонфигурации.Колонки.Добавить("ЭтоУправляемаяФорма");
ФормыКонфигурации.Колонки.Добавить("Наименование");
// todo сделать чтение команд
КомандыКонфигурации = Новый ТаблицаЗначений;
КомандыКонфигурации.Колонки.Добавить("Родитель");
КомандыКонфигурации.Колонки.Добавить("Наименование");
ОписаниеКонфигурации.Вставить("ФормыКонфигурации", ФормыКонфигурации);
ОписаниеКонфигурации.Вставить("КомандыКонфигурации", КомандыКонфигурации);
ОписаниеКонфигурации.Вставить("МодулиКонфигурации", МодулиКонфигурации);
Для Каждого ОбъектКонфигурации Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
ФайлыМодулей = СтруктураКаталогов.НайтиМодулиОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип, Истина);
@ -67,7 +52,7 @@
КонецЦикла;
МодулиКонфигурации.Сортировать("ПутьКФайлу");
ОписаниеКонфигурации.МодулиКонфигурации.Сортировать("ПутьКФайлу");
КонецПроцедуры
@ -235,7 +220,7 @@
// дополним объекты информацией о подсистемах
ПодсистемыКонфигурации = ПрочитатьПодсистемыКонфигурации();
ОписаниеКонфигурации.Вставить("ПодсистемыКонфигурации", ПодсистемыКонфигурации);
ОписаниеКонфигурации.ПодсистемыКонфигурации = ПодсистемыКонфигурации;
Для Каждого ОбъектКонфигурации Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
@ -266,7 +251,7 @@
КонецЕсли;
ОписаниеКонфигурации = ПрочитатьФайлОписанияОбъекта(ФайлКонфигурации, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации());
ДанныеКонфигурации = ПрочитатьФайлОписанияОбъекта(ФайлКонфигурации, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации());
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
@ -278,11 +263,11 @@
НовСтрока.Наименование = НовСтрока.Тип;
НовСтрока.ПутьКФайлу = ФайлКонфигурации;
Для Каждого Подчиненный Из ОписаниеКонфигурации.Подчиненные Цикл
Для Каждого Подчиненный Из ДанныеКонфигурации.Подчиненные Цикл
ЧастиИмени = СтрРазделить(Подчиненный, ".");
НовСтрока = ОбъектыКонфигурации.Добавить();
НовСтрока = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
НовСтрока.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧастиИмени[0]);
НовСтрока.Наименование = ЧастиИмени[1];
@ -290,9 +275,9 @@
КонецЦикла;
ОписаниеКонфигурации.Удалить("Подчиненные");
Возврат Новый Структура("СвойстваКонфигурации, ОбъектыКонфигурации", ОписаниеКонфигурации, ОбъектыКонфигурации);
ДанныеКонфигурации.Удалить("Подчиненные");
ОписаниеКонфигурации.СвойстваКонфигурации = ДанныеКонфигурации;
КонецФункции
@ -306,14 +291,6 @@
КонецФункции
Функция ПолучитьОбъектыТипа(Знач ТипОбъекта) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип", ТипОбъекта));
КонецФункции
Функция ПолучитьОписаниеМодуляПоИмениФайла(Знач ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации)
НовыйМодульКонфигурации = Неопределено;
@ -460,7 +437,7 @@
ОписаниеПодсистем = СтруктурыОписаний.ТаблицаОписанияПодсистем();
Подсистемы = ПолучитьОбъектыТипа("Подсистема");
Подсистемы = ОписаниеКонфигурации.ПолучитьОбъектыТипа("Подсистема");
Для Каждого Подсистема Из Подсистемы Цикл

View File

@ -106,8 +106,6 @@
Функция ПрочитатьСвойстваXML(ЧтениеXML, ПараметрыЧтения)
Данные = Новый Структура();
ЧтениеXML.Прочитать();
ЧтениеXML.Прочитать();