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

#ONEICD-148

* Переработан механизм включения объектов в расширения
* Переработано чтение подсистем
* Все описания свойств береться из таблиц md
* Переработан алгоритм чтения описания конфигурации
This commit is contained in:
aleksey.koryakin 2019-05-13 15:09:46 +03:00
parent 0a191ea214
commit a155d9e3d6
13 changed files with 622 additions and 667 deletions

View File

@ -55,7 +55,7 @@
Для Каждого Стр Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
Если Стр.Тип <> ТипКонфигурация Тогда
Если Стр.Тип <> ТипКонфигурация И Стр.Родитель = Неопределено Тогда
ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр.Наименование, Стр.Тип, ПараметрыГенерации);
@ -79,75 +79,44 @@
Функция ДобавитьОбъект(ИмяОбъекта, Знач ТипОбъекта, ОписаниеОбъекта = Неопределено) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
ОбъектКонфигурации = ДобавитьОбъектКонфигурации(ИмяОбъекта, ТипОбъекта);
НайденныеОбъекты = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Наименование, Тип", ИмяОбъекта, ТипОбъекта));
Если НайденныеОбъекты.Количество() Тогда
Если ОбъектКонфигурации = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ОписаниеОбъекта = Неопределено И ОбъектКонфигурации.Описание = Неопределено Тогда
Описание = НайденныеОбъекты[0];
ОбъектКонфигурации.Описание = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание);
ИначеЕсли ОписаниеОбъекта <> Неопределено Тогда
Иначе
Описание = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
Описание.Наименование = ИмяОбъекта;
Описание.Тип = ТипОбъекта;
Описание.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта);
Описание.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта);
Описание.Описание = ОписаниеОбъекта;
Если ОписаниеОбъекта <> Неопределено Тогда
ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта);
КонецЕсли;
ОбъектКонфигурации.Описание = ОписаниеОбъекта;
ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание);
КонецЕсли;
Возврат Описание;
Возврат ОбъектКонфигурации;
КонецФункции
Функция ПеренестиОбъектВРасширение(ИмяОбъекта, Знач ТипОбъекта, ОписаниеОбъекта = Неопределено) Экспорт
Функция ПеренестиОбъектВРасширение(ОбъектРодительскойКонфигурации) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
НайденныеОбъекты = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Наименование, Тип", ИмяОбъекта, ТипОбъекта));
ОбъектКонфигурации = ДобавитьОбъектКонфигурации(ОбъектРодительскойКонфигурации.Наименование, ОбъектРодительскойКонфигурации.Тип);
Если НайденныеОбъекты.Количество() Тогда
Описание = НайденныеОбъекты[0];
Если ОписаниеОбъекта = Неопределено Тогда
ОписаниеОбъекта = Описание.Описание;
КонецЕсли;
Иначе
Описание = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
Описание.Наименование = ИмяОбъекта;
Описание.Тип = ТипОбъекта;
Описание.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта);
Описание.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта);
Описание.Описание = ОписаниеОбъекта;
Если ОбъектКонфигурации = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ОписаниеОбъекта = Неопределено Тогда
ОписаниеОбъекта = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
ОписаниеОбъекта.Наименование = ИмяОбъекта;
СокращенноеОписание = СтруктурыОписаний.СоздатьСокращеннуюСтруктураОбъекта(ОбъектРодительскойКонфигурации.Тип);
ЗаполнитьЗначенияСвойств(СокращенноеОписание, ОбъектРодительскойКонфигурации.Описание, , "Подчиненные");
СокращенноеОписание.Вставить("ObjectBelonging", "Adopted");
ОбъектКонфигурации.Описание = СокращенноеОписание;
ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание);
КонецЕсли;
ОписаниеОбъекта.Вставить("ObjectBelonging", "Adopted");
ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта);
Возврат Описание;
Возврат ОбъектКонфигурации;
КонецФункции
@ -204,21 +173,57 @@
// Служебный функционал
///////////////////////////////////////////////////////////////////
Процедура ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта)
Процедура ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ДанныеОбъекта)
Запись = ГенераторОписаний.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации);
Запись = ГенераторОписаний.СоздатьЗапись(ОбъектКонфигурации.Тип, ПараметрыГенерации);
ГенераторОписаний.ЗаписатьПорождаемыеТипы(Запись, ОписаниеОбъекта.Наименование, ТипОбъекта);
ГенераторОписаний.ЗаписатьСвойства(Запись, ТипОбъекта, ОписаниеОбъекта);
ОписаниеСвойств = СтруктурыОписаний.ОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип);
ГенераторОписаний.ЗаписатьПорождаемыеТипы(Запись, ДанныеОбъекта.Наименование, ОбъектКонфигурации.Тип);
ГенераторОписаний.ЗаписатьСвойства(Запись, ОбъектКонфигурации.Тип, ДанныеОбъекта);
Если ОписаниеСвойств.ЕстьПодчиненные Тогда
ГенераторОписаний.Подчиненные(Запись, ?(ДанныеОбъекта.Свойство("Подчиненные"), ДанныеОбъекта.Подчиненные, Неопределено));
КонецЕсли;
ТекстОписания = ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОписаниеОбъекта.Наименование, ТипОбъекта);
ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
Утилиты.ЗаписатьФайл(ИмяФайла, ТекстОписания);
КонецПроцедуры
Функция ДобавитьОбъектКонфигурации(ИмяОбъекта, Знач ТипОбъекта)
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
Если ТипОбъекта = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации() Тогда
Возврат Неопределено;
КонецЕсли;
НайденныеОбъекты = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Наименование, Тип", ИмяОбъекта, ТипОбъекта));
Если НайденныеОбъекты.Количество() Тогда
ОбъектКонфигурации = НайденныеОбъекты[0];
Иначе
ОбъектКонфигурации = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ОбъектКонфигурации.Наименование = ИмяОбъекта;
ОбъектКонфигурации.Тип = ТипОбъекта;
ОбъектКонфигурации.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта);
ОбъектКонфигурации.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта);
КонецЕсли;
Возврат ОбъектКонфигурации;
КонецФункции
Процедура ПриСозданииОбъекта(Формат, Знач КаталогНазначения)

View File

@ -104,6 +104,12 @@
КонецЕсли;
Запись.ЗаписатьНачалоЭлемента("InternalInfo");
Если ТипОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПланОбмена() Тогда
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "xr:ThisNode", Строка(Новый УникальныйИдентификатор()));
КонецЕсли;
Для Каждого Тип Из ПорождаемыеТипы Цикл
@ -142,6 +148,40 @@
КонецПроцедуры
Процедура СоставПодсистемы(Запись, Значение) Экспорт
Если НЕ ЗначениеЗаполнено(Значение) Тогда
Возврат;
КонецЕсли;
Для Каждого ПолноеИмяЭлемента Из Значение Цикл
ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, ".");
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]);
КонецЦикла;
КонецПроцедуры
Процедура Подчиненные(Запись, Значение) Экспорт
Запись.ЗаписатьНачалоЭлемента("ChildObjects");
// Для Каждого ПолноеИмяЭлемента Из Значение Цикл
// ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, ".");
// ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]);
// КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
КонецПроцедуры
#КонецОбласти
///////////////////////////////////////////////////////////////////

View File

@ -56,53 +56,33 @@
КонецПроцедуры
Функция ПодготовитьДанныеДляЗаписи(Данные, ТипОбъекта, ФорматEDT) Экспорт
ДанныеДляЗаписи = Новый Структура();
Словарь = СтруктурыОписаний.СловарьЗаменыИменРеквизитов(ТипОбъекта, ФорматEDT);
Для Каждого Реквизит Из Данные Цикл
ДанныеДляЗаписи.Вставить(Словарь[Реквизит.Ключ], Реквизит.Значение);
КонецЦикла;
Возврат ДанныеДляЗаписи;
КонецФункции
Функция ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт
ФорматEDT = Генератор = ГенераторОписанийEDT;
СвойстваОбъекта = СтруктурыОписаний.ОписаниеСвойствОбъекта(ТипОбъекта);
Если СвойстваОбъекта = Неопределено Тогда
СвойстваОбъекта = ПараметрыСериализации.ПараметрыСериализации(ТипОбъекта, ?(ФорматEDT, "EDT", "Designer"));
СвойстваОбъекта = СтруктурыОписаний.БазовоеОписаниеСвойствОбъекта();
КонецЕсли;
АргументыПреобразования = Новый Массив(2);
АргументыПреобразования[0] = Запись;
Для Каждого ОписаниеСвойства Из СвойстваОбъекта Цикл
Для Каждого Элемент Из СвойстваОбъекта.Свойства Цикл
Значение = Неопределено;
Если НЕ Данные.Свойство(ОписаниеСвойства.Наименование, Значение) Тогда
Если НЕ Данные.Свойство(Элемент.Ключ, Значение) ИЛИ Значение = Неопределено Тогда
Продолжить;
КонецЕсли;
Ключ = ?(ФорматEDT, ОписаниеСвойства.ЭлементEDT, ОписаниеСвойства.ЭлементDesigner);
ОписаниеСвойства = Элемент.Значение;
Если ПустаяСтрока(ОписаниеСвойства.МетодПреобразования) Тогда
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, Ключ, Значение);
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ОписаниеСвойства.Поле, Значение);
Иначе
Запись.ЗаписатьНачалоЭлемента(Ключ);
Запись.ЗаписатьНачалоЭлемента(ОписаниеСвойства.Поле);
АргументыПреобразования[1] = Значение;

View File

@ -2,52 +2,52 @@
## Имена
| Наименование | НаименованиеКоллекции | НаименованиеEng | НаименованиеКоллекцииEng | ПорождаемыеТипы |
| --------------------------- | ---------------------------- | -------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| HTTPСервис | HTTPСервисы | HTTPService | HTTPServices | |
| WebСервис | WebСервисы | WebService | WebServices | |
| WSСсылка | WSСсылки | WSReference | WSReferences | |
| БизнесПроцесс | БизнесПроцессы | BusinessProcess | BusinessProcesses | Object Ref Selection List Manager RoutePointRef |
| ВнешнийИсточникиДанных | ВнешниеИсточникиДанных | ExternalDataSource | ExternalDataSources | |
| ГруппаКоманд | ГруппыКоманд | CommandGroup | CommandGroups | |
| Документ | Документы | Document | Documents | Object Ref Selection List Manager |
| ЖурналДокументов | ЖурналыДокументов | DocumentJournal | DocumentJournals | Selection List Manager |
| Задача | Задачи | Task | Tasks | Object Ref Selection List Manager |
| Интерфейс | Интерфейсы | Interface | Interfaces | |
| Константа | Константы | Constant | Constants | Manager ValueManager |
| КритерийОтбора | КритерииОтбора | FilterCriterion | FilterCriteria | Manager List |
| НумераторДокументов | НумераторыДокументов | DocumentNumerator | DocumentNumerators | |
| Обработка | Обработки | DataProcessor | DataProcessors | Object Manager |
| ОбщаяКартинка | ОбщиеКартинки | CommonPicture | CommonPictures | |
| ОбщаяКоманда | ОбщиеКоманды | CommonCommand | CommonCommands | |
| ОбщийМакет | ОбщиеМакеты | CommonTemplate | CommonTemplates | |
| ОбщийМодуль | ОбщиеМодули | CommonModule | CommonModules | |
| ОбщийРеквизит | ОбщиеРеквизиты | CommonAttribute | CommonAttributes | |
| ОбщаяФорм | ОбщиеФормы | CommonForm | CommonForms | |
| ОпределяемыйТип | ОпределяемыеТипы | DefinedType | DefinedTypes | DefinedType |
| Отчет | Отчеты | Report | Reports | Object Manager |
| ПакетXDTO | ПакетыXDTO | XDTOPackage | XDTOPackages | |
| ПараметрСеанса | ПараметрыСеанса | SessionParameter | SessionParameters | |
| ПараметрФункциональныхОпций | ПараметрыФункциональныхОпций | FunctionalOptionsParameter | FunctionalOptionsParameters | |
| Перечисление | Перечисления | Enum | Enums | Ref Manager List |
| ПланВидовРасчета | ПланыВидовРасчета | ChartOfCalculationTypes | ChartsOfCalculationTypes | Object Ref Selection List Manager DisplacingCalculationTypes DisplacingCalculationTypesRow BaseCalculationTypes BaseCalculationTypesRow LeadingCalculationTypes LeadingCalculationTypesRow |
| ПланВидовХарактеристик | ПланыВидовХарактеристик | ChartOfCharacteristicTypes | ChartsOfCharacteristicTypes | Object Ref Selection List Manager Characteristic |
| ПланОбмена | ПланыОбмена | ExchangePlan | ExchangePlans | Object Ref Selection List Manager |
| ПланСчетов | ПланыСчетов | ChartOfAccounts | ChartsOfAccounts | Object Ref Selection List Manager ExtDimensionTypes ExtDimensionTypesRow |
| ПодпискаНаСобытия | ПодпискиНаСобытия | EventSubscription | EventSubscriptions | |
| Подсистема | Подсистемы | Subsystem | Subsystems | |
| Последовательность | Последовательности | Sequence | Sequences | Record Manager RecordSet |
| РегистрБухгалтерии | РегистрыБухгалтерии | AccountingRegister | AccountingRegisters | Record Manager RecordSet RecordKey Selection List ExtDimensions |
| РегистрНакопления | РегистрыНакопления | AccumulationRegister | AccumulationRegisters | Record Manager RecordSet RecordKey Selection List |
| РегистрРасчета | РегистрыРасчета | CalculationRegister | CalculationRegisters | Record Manager Selection List RecordSet RecordKey Recalcs |
| РегистрСведений | РегистрыСведений | InformationRegister | InformationRegisters | Record Manager RecordSet RecordKey Selection List RecordManager |
| РегламентноеЗадание | РегламентныеЗадания | ScheduledJob | ScheduledJobs | |
| Роль | Роли | Role | Roles | |
| Справочник | Справочники | Catalog | Catalogs | Object Ref Selection List Manager |
| Стиль | Стили | Style | Styles | |
| ФункциональнаяОпция | ФункциональныеОпции | FunctionalOption | FunctionalOptions | |
| ХранилищеНастроек | ХранилищаНастроек | SettingsStorage | SettingsStorages | Manager |
| ЭлементСтиля | ЭлементыСтиля | StyleItem | StyleItems | |
| Язык | Языки | Language | Languages | |
| Конфигурация | Конфигурации | Configuration | Configurations | |
| Расширение | Расширения | Extension | Extensions | |
| Наименование | НаименованиеКоллекции | НаименованиеEng | НаименованиеКоллекцииEng | ЕстьПодчиненные | ПорождаемыеТипы |
| --------------------------- | ---------------------------- | -------------------------- | --------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| HTTPСервис | HTTPСервисы | HTTPService | HTTPServices | true | |
| WebСервис | WebСервисы | WebService | WebServices | true | |
| WSСсылка | WSСсылки | WSReference | WSReferences | | |
| БизнесПроцесс | БизнесПроцессы | BusinessProcess | BusinessProcesses | true | Object Ref Selection List Manager RoutePointRef |
| ВнешнийИсточникиДанных | ВнешниеИсточникиДанных | ExternalDataSource | ExternalDataSources | | |
| ГруппаКоманд | ГруппыКоманд | CommandGroup | CommandGroups | | |
| Документ | Документы | Document | Documents | true | Object Ref Selection List Manager |
| ЖурналДокументов | ЖурналыДокументов | DocumentJournal | DocumentJournals | true | Selection List Manager |
| Задача | Задачи | Task | Tasks | true | Object Ref Selection List Manager |
| Интерфейс | Интерфейсы | Interface | Interfaces | | |
| Константа | Константы | Constant | Constants | | Manager ValueManager |
| КритерийОтбора | КритерииОтбора | FilterCriterion | FilterCriteria | true | Manager List |
| НумераторДокументов | НумераторыДокументов | DocumentNumerator | DocumentNumerators | | |
| Обработка | Обработки | DataProcessor | DataProcessors | true | Object Manager |
| ОбщаяКартинка | ОбщиеКартинки | CommonPicture | CommonPictures | | |
| ОбщаяКоманда | ОбщиеКоманды | CommonCommand | CommonCommands | | |
| ОбщийМакет | ОбщиеМакеты | CommonTemplate | CommonTemplates | | |
| ОбщийМодуль | ОбщиеМодули | CommonModule | CommonModules | | |
| ОбщийРеквизит | ОбщиеРеквизиты | CommonAttribute | CommonAttributes | | |
| ОбщаяФорм | ОбщиеФормы | CommonForm | CommonForms | | |
| ОпределяемыйТип | ОпределяемыеТипы | DefinedType | DefinedTypes | | DefinedType |
| Отчет | Отчеты | Report | Reports | true | Object Manager |
| ПакетXDTO | ПакетыXDTO | XDTOPackage | XDTOPackages | | |
| ПараметрСеанса | ПараметрыСеанса | SessionParameter | SessionParameters | | |
| ПараметрФункциональныхОпций | ПараметрыФункциональныхОпций | FunctionalOptionsParameter | FunctionalOptionsParameters | | |
| Перечисление | Перечисления | Enum | Enums | true | Ref Manager List |
| ПланВидовРасчета | ПланыВидовРасчета | ChartOfCalculationTypes | ChartsOfCalculationTypes | true | Object Ref Selection List Manager DisplacingCalculationTypes DisplacingCalculationTypesRow BaseCalculationTypes BaseCalculationTypesRow LeadingCalculationTypes LeadingCalculationTypesRow |
| ПланВидовХарактеристик | ПланыВидовХарактеристик | ChartOfCharacteristicTypes | ChartsOfCharacteristicTypes | true | Object Ref Selection List Manager Characteristic |
| ПланОбмена | ПланыОбмена | ExchangePlan | ExchangePlans | true | Object Ref Selection List Manager |
| ПланСчетов | ПланыСчетов | ChartOfAccounts | ChartsOfAccounts | true | Object Ref Selection List Manager ExtDimensionTypes ExtDimensionTypesRow |
| ПодпискаНаСобытия | ПодпискиНаСобытия | EventSubscription | EventSubscriptions | | |
| Подсистема | Подсистемы | Subsystem | Subsystems | true | |
| Последовательность | Последовательности | Sequence | Sequences | true | Record Manager RecordSet |
| РегистрБухгалтерии | РегистрыБухгалтерии | AccountingRegister | AccountingRegisters | true | Record Manager RecordSet RecordKey Selection List ExtDimensions |
| РегистрНакопления | РегистрыНакопления | AccumulationRegister | AccumulationRegisters | true | Record Manager RecordSet RecordKey Selection List |
| РегистрРасчета | РегистрыРасчета | CalculationRegister | CalculationRegisters | true | Record Manager Selection List RecordSet RecordKey Recalcs |
| РегистрСведений | РегистрыСведений | InformationRegister | InformationRegisters | true | Record Manager RecordSet RecordKey Selection List RecordManager |
| РегламентноеЗадание | РегламентныеЗадания | ScheduledJob | ScheduledJobs | | |
| Роль | Роли | Role | Roles | | |
| Справочник | Справочники | Catalog | Catalogs | true | Object Ref Selection List Manager |
| Стиль | Стили | Style | Styles | | |
| ФункциональнаяОпция | ФункциональныеОпции | FunctionalOption | FunctionalOptions | | |
| ХранилищеНастроек | ХранилищаНастроек | SettingsStorage | SettingsStorages | true | Manager |
| ЭлементСтиля | ЭлементыСтиля | StyleItem | StyleItems | | |
| Язык | Языки | Language | Languages | | |
| Конфигурация | Конфигурации | Configuration | Configurations | true | |
| Расширение | Расширения | Extension | Extensions | true | |

View File

@ -9,10 +9,65 @@
## Реквизиты Configuration
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ---------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Наименование | Элемент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 | |
| КраткаяИнформация | briefInformation | BriefInformation | МногоязычнаяСтрока |
| Логотип | logo | Logo | |
| МодульВнешнегоСоединения | externalConnectionModule | ExternalConnectionModule | |
| МодульОбычногоПриложения | ordinaryApplicationModule | OrdinaryApplicationModule | |
| МодульСеанса | sessionModule | SessionModule | |
| МодульУправляемогоПриложения | managedApplicationModule | ManagedApplicationModule | |
| НазначениеРасширенияКонфигурации | configurationExtensionPurpose | ConfigurationExtensionPurpose | |
| НазначенияИспользования | usePurposes | UsePurposes | |
| ОсновнаяФормаВариантаОтчета | 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 | |
| Справка | help | Help | |
| ТребуемыеРазрешенияМобильногоПриложения | requiredMobileApplicationPermissions | RequiredMobileApplicationPermissions | |
| ФрагментКомандногоИнтерфейса | commandInterfaceFragment | CommandInterfaceFragment | |
| ХранилищеВариантовОтчетов | reportsVariantsStorage | ReportsVariantsStorage | |
| ХранилищеНастроекДанныхФорм | formDataSettingsStorage | FormDataSettingsStorage | |
| ХранилищеОбщихНастроек | commonSettingsStorage | CommonSettingsStorage | |
| ХранилищеПользовательскихНастроекДинамическихСписков | dynamicListsUserSettingsStorage | DynamicListsUserSettingsStorage | |
| ХранилищеПользовательскихНастроекОтчетов | reportsUserSettingsStorage | ReportsUserSettingsStorage | |
## Реквизиты Extension
@ -24,6 +79,18 @@
| ПрефиксИмен | namePrefix | NamePrefix | |
| Назначение | ConfigurationExtensionPurpose | ConfigurationExtensionPurpose | |
## Реквизиты Subsystem
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| --------------------------- | ------------------------- | ------------------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
| ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | IncludeInCommandInterface | ЗначениеБулево |
| ВключатьВСодержимоеСправки | IncludeHelpInContents | IncludeHelpInContents | ЗначениеБулево |
| Пояснение | Explanation | Explanation | МногоязычнаяСтрока |
| Состав | Content | Content | СоставПодсистемы |
## Реквизиты CommonModule
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ЗначениеПоУмолчанию |
@ -39,3 +106,37 @@
| ВызовСервера | ServerCall | ServerCall | ЗначениеБулево | false |
| Привилегированный | Privileged | Privileged | ЗначениеБулево | false |
| ПовторноеИспользование | ReturnValuesReuse | ReturnValuesReuse | | DontUse |
## Реквизиты ExchangePlan
| Наименование | Элемент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 |
## Реквизиты Document
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ---------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
## Реквизиты Constant
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| ------------ | ----------- | --------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
| Тип | type | type | ПолучитьТип |
| Пояснение | explanation | Explanation | МногоязычнаяСтрока |

View File

@ -0,0 +1,77 @@
///////////////////////////////////////////////////////////////////////////////
//
// Служебный модуль с набором служебных параметров библиотеки
//
// При создании новой библиотеки обязательно внести изменение
// в ф-ии ИмяПродукта, указав имя вашей библиотеки.
//
// При выпуске новой версии обязательно изменить ее значение
// в ф-ии ВерсияПродукта
//
///////////////////////////////////////////////////////////////////////////////
#Использовать logos
Перем Лог;
// ИмяПродукта
// Возвращает имя продукта
//
// Возвращаемое значение:
// Строка - Значение имени продукта
//
Функция ИмяПродукта() Экспорт
Возврат "bsl-parser";
КонецФункции
// Возвращает текущую версию продукта
//
// Возвращаемое значение:
// Строка - Значение текущей версии продукта
//
Функция ВерсияПродукта() Экспорт
Возврат "2.0.1";
КонецФункции
// Возвращает идентификатор лога библиотеки
//
// Возвращаемое значение:
// Строка - Значение идентификатора лога библиотеки
//
Функция ИмяЛогаСистемы() Экспорт
Возврат "oscript.lib." + ИмяПродукта();
КонецФункции // ИмяЛогаСистемы
// Форматирование логов
// См. описание метода "УстановитьРаскладку" библиотеки logos
//
Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт
Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);
КонецФункции
// Возвращает лог продукта
//
// Возвращаемое значение:
// Лог - Лог продукта
//
Функция ПолучитьЛог() Экспорт
Если Лог = Неопределено Тогда
Лог = Логирование.ПолучитьЛог(ИмяЛогаСистемы());
Лог.УстановитьРаскладку(ЭтотОбъект);
Лог.УстановитьУровень(УровниЛога.Отладка);
КонецЕсли;
Возврат Лог;
КонецФункции

View File

@ -51,7 +51,7 @@
Каталог = КаталогВидаОбъекта(ТипыОбъектовКонфигурации.ИмяТипаКонфигурации());
ИначеЕсли ВидОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПодсистемы() И СтрНайти(ИмяОбъекта, ".") Тогда
ИначеЕсли ВидОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПодсистема() И СтрНайти(ИмяОбъекта, ".") Тогда
Каталог = КаталогИсходников;
Для Каждого Часть Из СтрРазделить(ИмяОбъекта, ".") Цикл
@ -182,13 +182,13 @@
// Возвращаемое значение:
// Строка - Путь к файлу
//
Функция ИмяФайлаОписанияОбъекта(ИмяОбъекта, ВидОбъекта) Экспорт
Функция ИмяФайлаОписанияОбъекта(Знач ИмяОбъекта, ВидОбъекта) Экспорт
Если ЭтоФорматEDT Тогда
КаталогОписаний = КаталогФайловОбъекта(ИмяОбъекта, ВидОбъекта);
ИначеЕсли ВидОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПодсистемы() И СтрНайти(ИмяОбъекта, ".") Тогда
ИначеЕсли ВидОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПодсистема() И СтрНайти(ИмяОбъекта, ".") Тогда
КаталогОписаний = КаталогФайловОбъекта(ИмяОбъекта, ВидОбъекта);

View File

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

View File

@ -5,6 +5,7 @@
///////////////////////////////////////////////////////////////////////////////
Перем СвойстваОбъектов;
Перем ПолученныеОписанияОбъектов;
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
@ -62,204 +63,6 @@
#КонецОбласти
#Область ОписанияОбъектовКонфигурации
Функция ОписаниеКонстанты() Экспорт
ДанныеОписания = БазовоеОписание();
ДобавитьВОписание(ДанныеОписания, "Тип", "type", , "ПолучитьТип");
ДобавитьВОписание(ДанныеОписания, "Пояснение", "Explanation", Истина);
Возврат ДанныеОписания;
КонецФункции
Функция ОписаниеКонфигурации() Экспорт
ДанныеОписания = БазовоеОписание();
ДобавитьВОписание(ДанныеОписания, "АвторскиеПрава", "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");
ДобавитьВОписание(ДанныеОписания, "ПрефиксИмен", "NamePrefix");
ДобавитьВОписание(ДанныеОписания, "ПринадлежностьОбъекта", "ObjectBelonging");
ДобавитьВОписание(ДанныеОписания, "РабочаяОбластьНачальнойСтраницы", "HomePageWorkArea");
ДобавитьВОписание(ДанныеОписания, "РежимАвтонумерацииОбъектов", "ObjectAutonumerationMode");
ДобавитьВОписание(ДанныеОписания, "РежимИспользованияМодальности", "ModalityUseMode");
ДобавитьВОписание(ДанныеОписания, "РежимИспользованияСинхронныхВызововРасширенийПлатформыИВнешнихКомпонент", "SynchronousPlatformExtensionAndAddInCallUseMode");
ДобавитьВОписание(ДанныеОписания, "РежимОсновногоОкнаКлиентскогоПриложения", "MainClientApplicationWindowMode");
ДобавитьВОписание(ДанныеОписания, "РежимСовместимости", "CompatibilityMode");
ДобавитьВОписание(ДанныеОписания, "РежимСовместимостиИнтерфейса", "InterfaceCompatibilityMode");
ДобавитьВОписание(ДанныеОписания, "РежимСовместимостиРасширенияКонфигурации", "ConfigurationExtensionCompatibilityMode");
ДобавитьВОписание(ДанныеОписания, "РежимУправленияБлокировкойДанных", "DataLockControlMode");
ДобавитьВОписание(ДанныеОписания, "РодительскиеКонфигурации", "ParentConfigurations");
ДобавитьВОписание(ДанныеОписания, "Справка", "Help");
ДобавитьВОписание(ДанныеОписания, "ТребуемыеРазрешенияМобильногоПриложения", "RequiredMobileApplicationPermissions");
ДобавитьВОписание(ДанныеОписания, "ФрагментКомандногоИнтерфейса", "CommandInterfaceFragment");
ДобавитьВОписание(ДанныеОписания, "ХранилищеВариантовОтчетов", "ReportsVariantsStorage");
ДобавитьВОписание(ДанныеОписания, "ХранилищеНастроекДанныхФорм", "FormDataSettingsStorage");
ДобавитьВОписание(ДанныеОписания, "ХранилищеОбщихНастроек", "CommonSettingsStorage");
ДобавитьВОписание(ДанныеОписания, "ХранилищеПользовательскихНастроекДинамическихСписков", "DynamicListsUserSettingsStorage");
ДобавитьВОписание(ДанныеОписания, "ХранилищеПользовательскихНастроекОтчетов", "ReportsUserSettingsStorage");
ДобавитьВОписание(ДанныеОписания, "HTTPСервисы", "HTTPServices", , , Истина);
ДобавитьВОписание(ДанныеОписания, "WebСервисы", "WebServices", , , Истина);
ДобавитьВОписание(ДанныеОписания, "WSСсылки", "WSReferences", , , Истина);
ДобавитьВОписание(ДанныеОписания, "БизнесПроцессы", "businessProcesses", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ВнешниеИсточникиДанных", "ExternalDataSources", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ГруппыКоманд", "CommandGroups", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Документы", "Documents", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ЖурналыДокументов", "DocumentJournals", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Задачи", "Tasks", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Интерфейсы", "Interfaces", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Константы", "Constants", , , Истина);
ДобавитьВОписание(ДанныеОписания, "КритерииОтбора", "FilterCriteria", , , Истина);
ДобавитьВОписание(ДанныеОписания, "НумераторыДокументов", "DocumentNumerators", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Обработки", "DataProcessors", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеКартинки", "CommonPictures", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеКоманды", "CommonCommands", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеМакеты", "CommonTemplates", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеМодули", "CommonModules", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеРеквизиты", "CommonAttributes", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОбщиеФормы", "CommonForms", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ОпределяемыеТипы", "DefinedTypes", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Отчеты", "Reports", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПакетыXDTO", "XDTOPackages", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПараметрыСеанса", "SessionParameters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПараметрыФункциональныхОпций", "FunctionalOptionsParameters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Перечисления", "Enums", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПланыВидовРасчета", "ChartsOfCalculationTypes", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПланыВидовХарактеристик", "ChartsOfCharacteristicTypes", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПланыОбмена", "ExchangePlans", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПланыСчетов", "ChartsOfAccounts", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ПодпискиНаСобытия", "EventSubscriptions", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Подсистемы", "Subsystems", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Последовательности", "Sequences", , , Истина);
ДобавитьВОписание(ДанныеОписания, "РегистрыБухгалтерии", "AccountingRegisters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "РегистрыНакопления", "AccumulationRegisters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "РегистрыРасчета", "CalculationRegisters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "РегистрыСведений", "InformationRegisters", , , Истина);
ДобавитьВОписание(ДанныеОписания, "РегламентныеЗадания", "ScheduledJobs", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Роли", "Roles", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Справочники", "Catalogs", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Стили", "Styles", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ФункциональныеОпции", "FunctionalOptions", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ХранилищаНастроек", "SettingsStorages", , , Истина);
ДобавитьВОписание(ДанныеОписания, "ЭлементыСтиля", "StyleItems", , , Истина);
ДобавитьВОписание(ДанныеОписания, "Языки", "Languages", , , Истина);
Возврат ДанныеОписания;
КонецФункции
Функция ОписаниеПодсистемы() Экспорт
ДанныеОписания = БазовоеОписание();
ДобавитьВОписание(ДанныеОписания, "ВключатьВКомандныйИнтерфейс", "IncludeInCommandInterface");
ДобавитьВОписание(ДанныеОписания, "ВключатьВСодержимоеСправки", "IncludeHelpInContents");
ДобавитьВОписание(ДанныеОписания, "Пояснение", "Explanation", Истина);
ДобавитьВОписание(ДанныеОписания, "Картинка", "Picture");
ДобавитьВОписание(ДанныеОписания, "Состав", "Content", , "ПрочитатьСостав", Истина);
Возврат ДанныеОписания;
КонецФункции
Функция БазовоеОписание() Экспорт
ДанныеОписания = Новый Структура();
ДобавитьВОписание(ДанныеОписания, "Наименование", "Name");
ДобавитьВОписание(ДанныеОписания, "Синоним", "Synonym", Истина);
ДобавитьВОписание(ДанныеОписания, "Комментарий", "Comment");
Возврат ДанныеОписания;
КонецФункции
Функция ПолучитьОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
ДанныеОписания = Новый Структура();
Для Каждого Стр Из ОписаниеСвойствОбъекта(ТипОбъекта) Цикл
ДобавитьВОписание(ДанныеОписания, Стр.Наименование, Стр.ЭлементDesigner, , Стр.МетодПреобразования);
КонецЦикла;
Возврат ДанныеОписания;
КонецФункции
#КонецОбласти
Функция ИменаТиповМетаданных() Экспорт
Возврат
"languages,
|subsystems,
|commonPictures,
|sessionParameters,
|roles,
|commonTemplates,
|filterCriteria,
|commonModules,
|commonAttributes,
|exchangePlans,
|xDTOPackages,
|webServices,
|httpServices,
|eventSubscriptions,
|scheduledJobs,
|functionalOptions,
|functionalOptionsParameters,
|definedTypes,
|commonCommands,
|commandGroups,
|constants,
|commonForms,
|catalogs,
|enums,
|reports,
|dataProcessors,
|informationRegisters,
|chartsOfCharacteristicTypes";
КонецФункции
Функция ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию() Экспорт
Возврат Новый Структура(
@ -270,21 +73,13 @@
Функция СоздатьСтруктураОбъекта(ТипОбъекта) Экспорт
Свойства = ОписаниеСвойствОбъекта(ТипОбъекта);
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
Если Свойства = Неопределено Тогда
Свойства = БазовоеОписаниеСвойствОбъекта();
КонецЕсли;
ЕстьЗначенияПоУмолчанию = Свойства.Колонки.Найти("ЗначениеПоУмолчанию") <> Неопределено;
Данные = Новый Структура();
Для Каждого Описание Из Свойства Цикл
Для Каждого Описание Из ОписаниеОбъекта.Свойства Цикл
Если ЕстьЗначенияПоУмолчанию Тогда
Если ОписаниеОбъекта.ЕстьЗначенияПоУмолчанию Тогда
Данные.Вставить(Описание.Наименование, Описание.ЗначениеПоУмолчанию);
@ -295,15 +90,59 @@
КонецЕсли;
КонецЦикла;
Если ОписаниеОбъекта.ЕстьПодчиненные Тогда
Данные.Вставить("Подчиненные", Новый Массив());
КонецЕсли;
Возврат Данные;
КонецФункции
Функция СоздатьСокращеннуюСтруктураОбъекта(ТипОбъекта) Экспорт
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
Данные = Новый Структура("Наименование", "");
Если ОписаниеОбъекта.ЕстьПодчиненные Тогда
Данные.Вставить("Подчиненные", Новый Массив());
КонецЕсли;
Возврат Данные;
КонецФункции
Функция ОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
Если ПолученныеОписанияОбъектов[ТипОбъекта] <> Неопределено Тогда
Возврат ПолученныеОписанияОбъектов[ТипОбъекта];
КонецЕсли;
Свойства = СвойстваОбъектов[ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта)];
Возврат СвойстваОбъектов[ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта)];
Если Свойства = Неопределено Тогда
Свойства = БазовоеОписаниеСвойствОбъекта();
ПараметрыПродукта.ПолучитьЛог().Предупреждение("Нет описания типа %1. Использовано описание по-умолчанию", ТипОбъекта);
КонецЕсли;
ОписаниеОбъекта = Новый Структура("Тип, Свойства, ЕстьПодчиненные, ЕстьЗначенияПоУмолчанию", ТипОбъекта);
ОписаниеОбъекта.Свойства = Свойства;
ОписаниеОбъекта.ЕстьПодчиненные = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ЕстьПодчиненные = "true";
ОписаниеОбъекта.ЕстьЗначенияПоУмолчанию = Свойства.Колонки.Найти("ЗначениеПоУмолчанию") <> Неопределено;
ПолученныеОписанияОбъектов.Вставить(ТипОбъекта, ОписаниеОбъекта);
Возврат ОписаниеОбъекта;
КонецФункции
Функция БазовоеОписаниеСвойствОбъекта() Экспорт
@ -312,18 +151,10 @@
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
Процедура ДобавитьВОписание(Описание, Имя, ИмяПоля, Многоязычный = Ложь, ФункцияПреобразования = Неопределено, Коллекция = Ложь)
Описание.Вставить(Имя, Новый Структура("Поле, Многоязычный, ФункцияПреобразования, Коллекция", ИмяПоля, Многоязычный, ФункцияПреобразования, Коллекция));
КонецПроцедуры
Процедура ЗагрузитьСвойстваОбъектов()
ФайлОписаний = ОбъединитьПути(Утилиты.КаталогМакеты(), "СвойстваОбъектов.md");
@ -356,4 +187,6 @@
КонецПроцедуры
ПолученныеОписанияОбъектов = Новый Соответствие();
ЗагрузитьСвойстваОбъектов();

View File

@ -52,12 +52,30 @@
КонецФункции
// Возвращает имя типа по-русски
//
// Параметры:
// ИмяТипаОбъектаКонфигурации - Строка - Имя типа объекта, например, Справочник, Document, Перечисления
//
// Возвращаемое значение:
// Строка - Имя типа по-русски
//
Функция ПолучитьИмяТипаНаРусском(ИмяТипаОбъектаКонфигурации) Экспорт
ОписаниеТипа = ОписаниеТипаПоИмени(ИмяТипаОбъектаКонфигурации);
Возврат ?(ОписаниеТипа = Неопределено, ИмяТипаОбъектаКонфигурации, ОписаниеТипа.Наименование);
КонецФункции
#Область ИменаТиповОбъектовКонфигурации
// Возвращает имя типа подсистемы
//
// Возвращаемое значение:
// Строка - Имя типа
//
Функция ИмяТипаПодсистемы() Экспорт
Функция ИмяТипаПодсистема() Экспорт
Возврат НормализоватьИмя("Подсистемы");
@ -85,6 +103,14 @@
КонецФункции
Функция ИмяТипаПланОбмена() Экспорт
Возврат НормализоватьИмя("ПланОбмена");
КонецФункции
#КонецОбласти
// Возвращает имя типа конфигурации
//
// Возвращаемое значение:
@ -96,22 +122,6 @@
КонецФункции
// Возвращает имя типа по-русски
//
// Параметры:
// ИмяТипаОбъектаКонфигурации - Строка - Имя типа объекта, например, Справочник, Document, Перечисления
//
// Возвращаемое значение:
// Строка - Имя типа по-русски
//
Функция ПолучитьИмяТипаНаРусском(ИмяТипаОбъектаКонфигурации) Экспорт
ОписаниеТипа = ОписаниеТипаПоИмени(ИмяТипаОбъектаКонфигурации);
Возврат ?(ОписаниеТипа = Неопределено, ИмяТипаОбъектаКонфигурации, ОписаниеТипа.Наименование);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////

View File

@ -12,7 +12,6 @@
Перем СтруктураКаталогов;
Перем ЧитательОписаний;
Перем ЧитательМодулей;
Перем ОписаниеКонфигурации;
Перем ДанныеКонфигурации;
@ -28,6 +27,7 @@
//
Процедура ПрочитатьСтруктуруКонфигурации() Экспорт
ОписаниеКонфигурации = ПрочитатьОписаниеКонфигурации();
ЗаполнитьПодсистемыОбъектовКонфигурации();
@ -101,21 +101,17 @@
//
Функция ПрочитатьОписаниеКонстант() Экспорт
Фильтр = Новый Структура("Тип", "Constant");
СтрокиКонстант = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Фильтр);
МассивОписанийКонстант = Новый Массив;
Для Каждого Объект Из СтрокиКонстант Цикл
ОписаниеИзXML = ПолучитьОписаниеКонстанты(Объект.ПутьКФайлу);
Для Каждого Объект Из ОписаниеКонфигурации.ПолучитьОбъектыТипа("Constant") Цикл
ОписаниеИзXML = ПрочитатьФайлОписанияОбъекта(Объект.ПутьКФайлу, "Constant");
ОписаниеКонстанты = Новый Структура("Имя, Тип, Описание, Подсистема, ПодсистемаПредставление");
ОписаниеКонстанты.Имя = Объект.Наименование;
ОписаниеКонстанты.Тип = ОписаниеИзXML.ТипКонстанты;
ОписаниеКонстанты.Описание = ОписаниеИзXML.ТекстОписания;
ОписаниеКонстанты.Имя = ОписаниеИзXML.Наименование;
ОписаниеКонстанты.Тип = ОписаниеИзXML.Тип;
ОписаниеКонстанты.Описание = ОписаниеИзXML.Пояснение;
Если ЗначениеЗаполнено(Объект.Подсистемы) Тогда
ОписаниеКонстанты.Подсистема = Объект.Подсистемы[0].Имя;
@ -213,10 +209,7 @@
Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ПараметрыЧтения = СтруктурыОписаний.ПолучитьОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип);
Описание = ЧитательОписаний.ПрочитатьСвойстваИзФайла(ОбъектКонфигурации.ПутьКФайлу, ПараметрыЧтения);
ОбъектКонфигурации.Описание = Описание;
ОбъектКонфигурации.Описание = ПрочитатьФайлОписанияОбъекта(ОбъектКонфигурации.ПутьКФайлу, ОбъектКонфигурации.Тип);
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////
@ -232,12 +225,11 @@
ВызватьИсключение СтрШаблон("Файл описания конфигурации ""%1"" не обнаружен", ФайлКонфигурации);
КонецЕсли;
ОписаниеКонфигурации = ЧитательОписаний.ПрочитатьОписаниеКонфигурации(ФайлКонфигурации);
СвойстваКонфигурации = ОписаниеКонфигурации.СвойстваКонфигурации;
ОбъектыКонфигурации = ОписаниеКонфигурации.ОбъектыКонфигурации;
ОписаниеКонфигурации = ПрочитатьФайлОписанияОбъекта(ФайлКонфигурации, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации());
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
// добавим руками объект "Configuration" для модулей приложения
ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию();
НовСтрока = ОбъектыКонфигурации.Добавить();
@ -246,7 +238,39 @@
НовСтрока.Наименование = НовСтрока.Тип;
НовСтрока.ПутьКФайлу = ФайлКонфигурации;
Возврат Новый Структура("СвойстваКонфигурации, ОбъектыКонфигурации", СвойстваКонфигурации, ОбъектыКонфигурации);
Для Каждого Подчиненный Из ОписаниеКонфигурации.Подчиненные Цикл
ЧастиИмени = СтрРазделить(Подчиненный, ".");
НовСтрока = ОбъектыКонфигурации.Добавить();
НовСтрока.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧастиИмени[0]);
НовСтрока.Наименование = ЧастиИмени[1];
НовСтрока.ПолноеНаименование = Подчиненный;
КонецЦикла;
ОписаниеКонфигурации.Удалить("Подчиненные");
Возврат Новый Структура("СвойстваКонфигурации, ОбъектыКонфигурации", ОписаниеКонфигурации, ОбъектыКонфигурации);
КонецФункции
Функция ПрочитатьФайлОписанияОбъекта(ПутьКФайлу, ТипОбъекта)
ПараметрыЧтения = ПараметрыСериализации.ПараметрыСериализации(ТипОбъекта, ФорматВыгрузки());
Описание = ЧитательОписаний.ПрочитатьСвойстваИзФайла(ПутьКФайлу, ПараметрыЧтения);
Возврат Описание;
КонецФункции
Функция ПолучитьОбъектыТипа(Знач ТипОбъекта) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип", ТипОбъекта));
КонецФункции
@ -336,20 +360,6 @@
///////////////////////////////////////////////////////////////////
Функция ПолучитьОписаниеКонстанты(ПутьКФайлу)
ПараметрыОписанияКонстанты = СтруктурыОписаний.ОписаниеКонстанты();
Описание = ЧитательОписаний.ПрочитатьСвойстваИзФайла(ПутьКФайлу, ПараметрыОписанияКонстанты);
РезультатПоиска = Новый Структура("ТипКонстанты, ТекстОписания", Описание.Тип , Описание.Пояснение);
Возврат РезультатПоиска;
КонецФункции
///////////////////////////////////////////////////////////////////
Процедура ЗаполнитьИменаФайлов()
Для Каждого СтрокаОбъектКонфигурации Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
@ -432,38 +442,33 @@
ОписаниеПодсистем = СтруктурыОписаний.ТаблицаОписанияПодсистем();
Для Каждого ФайлыПодсистемы Из СтруктураКаталогов.НайтиФайлыПодсистем() Цикл
ПрочитатьПодсистему(ФайлыПодсистемы, ОписаниеПодсистем, "", "", Неопределено, Неопределено);
Подсистемы = ПолучитьОбъектыТипа("Подсистема");
Для Каждого Подсистема Из Подсистемы Цикл
ПрочитатьПодсистему(ОписаниеПодсистем, Подсистема, Истина, Неопределено, Неопределено);
КонецЦикла;
Возврат ОписаниеПодсистем;
КонецФункции
Процедура ПрочитатьПодсистему(ФайлыПодсистемы, ОписаниеПодсистем, Знач ПодсистемаИмя, Знач ПодсистемаПредставление, Знач Визуальная, Знач Родитель)
Процедура ПрочитатьПодсистему(ОписаниеПодсистем, ОбъектКонфигурации, Знач Визуальная, Знач Родитель, РодительскаяПодсистема)
ТипПодсистема = ТипыОбъектовКонфигурации.ИмяТипаПодсистема();
ИмяФайлаОписание = СтруктураКаталогов.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
СвойстваОписания = ЧитательОписаний.ПрочитатьСвойстваИзФайла(ФайлыПодсистемы.ФайлОписания, СтруктурыОписаний.ОписаниеПодсистемы());
СвойстваОписания = ПрочитатьФайлОписанияОбъекта(ИмяФайлаОписание, ТипПодсистема);
ВКомандномИнтерфейсе = СвойстваОписания.ВключатьВКомандныйИнтерфейс = "true";
ОбъектКонфигурации.Описание = СвойстваОписания;
ОбъектКонфигурации.ПутьКФайлу = ИмяФайлаОписание;
ОбъектКонфигурации.ПутьККаталогу = СтруктураКаталогов.КаталогФайловОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
Визуальная = ?(Визуальная = Неопределено, ВКомандномИнтерфейсе, Мин(Визуальная, ВКомандномИнтерфейсе));
ПодсистемаИмя = ПодсистемаИмя + ?(ПустаяСтрока(ПодсистемаИмя), "", ".") + СвойстваОписания.Наименование;
ПодсистемаПредставление = ПодсистемаПредставление + ?(ПустаяСтрока(ПодсистемаПредставление), "", "/") + СвойстваОписания.Синоним;
Если Родитель <> Неопределено Тогда // В списке объектов конфигурации подсистемы только первого уровня
СтрОбъект = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ЗаполнитьЗначенияСвойств(СтрОбъект, СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию());
СтрОбъект.Тип = "Subsystem";
СтрОбъект.Наименование = ПодсистемаИмя;
СтрОбъект.ПутьКФайлу = ФайлыПодсистемы.ФайлОписания;
СтрОбъект.ПутьККаталогу = ФайлыПодсистемы.КаталогОписания;
СтрОбъект.Описание = СвойстваОписания;
СтрОбъект.Родитель = ОписаниеКонфигурации.ОбъектыКонфигурации.Найти(Родитель.Имя, "Наименование");
Визуальная = Визуальная И СвойстваОписания.ВключатьВКомандныйИнтерфейс;
КонецЕсли;
ПредставлениеПодсистемы = ?(РодительскаяПодсистема = Неопределено, СвойстваОписания.Синоним, РодительскаяПодсистема.Представление + "/" + СвойстваОписания.Синоним);
Если СвойстваОписания.Состав.Количество() Тогда
Состав = СвойстваОписания.Состав;
@ -471,24 +476,29 @@
Состав = Новый Массив();
Состав.Добавить(Неопределено);
КонецЕсли;
Для Каждого ОбъектМетаданных Из Состав Цикл
ЭтаПодсистема = ОписаниеПодсистем.Добавить();
ЭтаПодсистема.Имя = ПодсистемаИмя;
ЭтаПодсистема.Имя = ОбъектКонфигурации.Наименование;
ЭтаПодсистема.ИмяКратко = СвойстваОписания.Наименование;
ЭтаПодсистема.Представление = ПодсистемаПредставление;
ЭтаПодсистема.Представление = ПредставлениеПодсистемы;
ЭтаПодсистема.ПредставлениеКратко = СвойстваОписания.Синоним;
ЭтаПодсистема.ПодсистемаОписание = СвойстваОписания.Комментарий;
ЭтаПодсистема.ОбъектМетаданных = ОбъектМетаданных;
ЭтаПодсистема.Визуальная = Визуальная;
ЭтаПодсистема.Родитель = Родитель;
ЭтаПодсистема.Родитель = РодительскаяПодсистема;
КонецЦикла;
Для Каждого ФайлыВложеннойПодсистемы Из ФайлыПодсистемы.Вложенные Цикл
Для Каждого ПолноеИмяПодсистемы Из СвойстваОписания.Подчиненные Цикл
ВложеннаяПодсистема = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ВложеннаяПодсистема.Тип = ТипПодсистема;
ВложеннаяПодсистема.Наименование = ОбъектКонфигурации.Наименование + "." + СтрРазделить(ПолноеИмяПодсистемы, ".")[1];
ВложеннаяПодсистема.Родитель = ОбъектКонфигурации;
ПрочитатьПодсистему(ФайлыВложеннойПодсистемы, ОписаниеПодсистем, ПодсистемаИмя, ПодсистемаПредставление, Визуальная, ЭтаПодсистема)
ПрочитатьПодсистему(ОписаниеПодсистем, ВложеннаяПодсистема, Визуальная, ОбъектКонфигурации, ЭтаПодсистема)
КонецЦикла;

View File

@ -86,63 +86,6 @@
КонецФункции
// Читает файл Configuration
//
// Параметры:
// ИмяФайла - Строка - Путь к файлу описания
//
// Возвращаемое значение:
// Структура - Описание конфигурации
// * СвойстваКонфигурации - свойства конфигурации
// * ОбъектыКонфигурации - коллекция объектов конфигурации
//
Функция ПрочитатьОписаниеКонфигурации(ИмяФайла) Экспорт
СвойстваКонфигурации = Новый Структура;
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
ПараметрыЧтения = СтруктурыОписаний.ОписаниеКонфигурации();
ЗначенияПоУмолчанию = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию();
СвойстваОписания = ПолучитьСвойства(Утилиты.ПрочитатьФайл(ИмяФайла), ПараметрыЧтения);
Для Каждого Параметр Из ПараметрыЧтения Цикл
Если Параметр.Ключ = "Языки" Тогда // Шлак какой-то там
Продолжить;
КонецЕсли;
Значение = СвойстваОписания[Параметр.Ключ];
Если Параметр.Значение.Коллекция Тогда
Для Каждого ПолноеИмяОбъекта Из Значение Цикл
СтрокаОбъекта = ОбъектыКонфигурации.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъекта, ЗначенияПоУмолчанию);
ЧастиСтроки = СтрРазделить(ПолноеИмяОбъекта, ".");
СтрокаОбъекта.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧастиСтроки[0]);
СтрокаОбъекта.Наименование = ЧастиСтроки[1];
СтрокаОбъекта.ПолноеНаименование = ПолноеИмяОбъекта;
КонецЦикла;
Иначе
СвойстваКонфигурации.Вставить(Параметр.Ключ, Значение);
КонецЕсли;
КонецЦикла;
Возврат Новый Структура("СвойстваКонфигурации, ОбъектыКонфигурации", СвойстваКонфигурации , ОбъектыКонфигурации);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
@ -208,8 +151,6 @@
КонецФункции
#КонецОбласти
// Читает состав подсистемы
//
// Параметры:
@ -218,12 +159,14 @@
// Возвращаемое значение:
// Массив - Состав подсистемы
//
Функция ПрочитатьСостав(Знач Значение) Экспорт
Функция СоставПодсистемы(Знач Значение) Экспорт
Возврат Значение;
КонецФункции
#КонецОбласти
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
@ -264,26 +207,26 @@
КонецЕсли;
Если ТипЗнч(Значение) = Тип("Массив") И ПустаяСтрока(Параметр.ФункцияПреобразования) И НЕ Параметр.Многоязычный Тогда
Если ТипЗнч(Значение) = Тип("Массив") И ПустаяСтрока(Параметр.МетодПреобразования) И НЕ Параметр.Многоязычный Тогда
Возврат Значение;
КонецЕсли;
ФункцияПреобразования = Параметр.ФункцияПреобразования;
МетодПреобразования = Параметр.МетодПреобразования;
Если НЕ ЗначениеЗаполнено(ФункцияПреобразования) И Параметр.Многоязычный Тогда
Если НЕ ЗначениеЗаполнено(МетодПреобразования) И Параметр.Многоязычный Тогда
ФункцияПреобразования = "МногоязычнаяСтрока";
МетодПреобразования = "МногоязычнаяСтрока";
КонецЕсли;
Если ЗначениеЗаполнено(ФункцияПреобразования) Тогда
Если ЗначениеЗаполнено(МетодПреобразования) Тогда
ЗначениеВМассиве = Новый Массив();
ЗначениеВМассиве.Добавить(Значение);
Значение = Рефлектор.ВызватьМетод(ОбъектПреобразователь, ФункцияПреобразования, ЗначениеВМассиве);
Значение = Рефлектор.ВызватьМетод(ОбъектПреобразователь, МетодПреобразования, ЗначениеВМассиве);
КонецЕсли;

View File

@ -23,7 +23,7 @@
// Возвращаемое значение:
// Структура - Данные описания
//
Функция ПолучитьСвойства(ТекстОписания, ПараметрыЧтения = Неопределено) Экспорт
Функция ПолучитьСвойства(ТекстОписания, ПараметрыЧтения) Экспорт
СвойстваОписания = Новый Структура();
@ -34,12 +34,8 @@
ЧтениеXML.Закрыть();
Если ПараметрыЧтения <> Неопределено Тогда
СвойстваОписания = ВыполнитьОбработкуПрочитанныхСвойств(СвойстваОписания, ПараметрыЧтения);
КонецЕсли;
СвойстваОписания = ВыполнитьОбработкуПрочитанныхСвойств(СвойстваОписания, ПараметрыЧтения);
Возврат СвойстваОписания;
КонецФункции
@ -53,7 +49,7 @@
// Возвращаемое значение:
// Структура - Данные описания
//
Функция ПрочитатьСвойстваИзФайла(ИмяФайла, ПараметрыЧтения = Неопределено) Экспорт
Функция ПрочитатьСвойстваИзФайла(ИмяФайла, ПараметрыЧтения) Экспорт
СвойстваОписания = Новый Структура();
@ -64,119 +60,12 @@
ЧтениеXML.Закрыть();
Если ПараметрыЧтения <> Неопределено Тогда
СвойстваОписания = ВыполнитьОбработкуПрочитанныхСвойств(СвойстваОписания, ПараметрыЧтения);
КонецЕсли;
СвойстваОписания = ВыполнитьОбработкуПрочитанныхСвойств(СвойстваОписания, ПараметрыЧтения);
Возврат СвойстваОписания;
КонецФункции
// Читает файл Configuration
//
// Параметры:
// ИмяФайла - Строка - Путь к файлу описания
//
// Возвращаемое значение:
// Структура - Описание конфигурации
// * СвойстваКонфигурации - свойства конфигурации
// * ОбъектыКонфигурации - коллекция объектов конфигурации
//
Функция ПрочитатьОписаниеКонфигурации(ИмяФайла) Экспорт
СвойстваКонфигурации = Новый Структура;
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "Properties" Тогда
// Настройки
Пока НЕ (ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "Properties") Цикл
ЧтениеXML.Прочитать();
КлючСвойства = "";
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Имя = "RequiredMobileApplicationPermissions" Тогда // атрибуты мобильного приложения
Пока НЕ (ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "RequiredMobileApplicationPermissions") Цикл
ЧтениеXML.Прочитать();
КонецЦикла;
Иначе
КлючСвойства = ЧтениеXML.Имя;
ЧтениеXML.Прочитать();
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда // вложенный элемент
Если ЧтениеXML.Имя = "v8:item" Тогда // надо найти элемент с именем v8:content
Пока ЧтениеXML.Имя <> "v8:content" Цикл
ЧтениеXML.Прочитать();
КонецЦикла;
ЧтениеXML.Прочитать();
Иначе // просто ищем значение
Пока ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл
ЧтениеXML.Прочитать();
КонецЦикла;
КонецЕсли;
КонецЕсли;
СвойстваКонфигурации.Вставить(КлючСвойства, ЧтениеXML.Значение);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "ChildObjects" Тогда
ЧтениеXML.Прочитать();
// подчиненные элементы (первый уровень)
Пока ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл
НовСтрока = ОбъектыКонфигурации.Добавить();
ЗаполнитьЗначенияСвойств(НовСтрока, ПустаяСтрокаОбъектКонфигурации);
НовСтрока.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧтениеXML.Имя);
ЧтениеXML.Прочитать();
НовСтрока.Наименование = ЧтениеXML.Значение;
НовСтрока.ПолноеНаименование = НовСтрока.Тип + "." + НовСтрока.Наименование;
ЧтениеXML.Прочитать();
ЧтениеXML.Прочитать();
КонецЦикла
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
Возврат Новый Структура("СвойстваКонфигурации, ОбъектыКонфигурации" ,СвойстваКонфигурации , ОбъектыКонфигурации);
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
@ -251,8 +140,6 @@
КонецФункции
#КонецОбласти
// Читает состав подсистемы
//
// Параметры:
@ -261,7 +148,7 @@
// Возвращаемое значение:
// Массив - Состав подсистемы
//
Функция ПрочитатьСостав(Знач ЧтениеXML) Экспорт
Функция СоставПодсистемы(Знач ЧтениеXML) Экспорт
Значение = Новый Массив();
@ -291,15 +178,46 @@
КонецФункции
// Читает состав подсистемы
//
// Параметры:
// ЧтениеXML - ЧтениеXML - Читатель данных
//
// Возвращаемое значение:
// Массив - Состав подсистемы
//
Функция Подчиненные(Знач ЧтениеXML) Экспорт
Значение = Новый Массив();
Пока ЧтениеXML.Прочитать() И НЕ (ЧтениеXML.Имя = "ChildObjects" И ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента) Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Тип = ЧтениеXML.ЛокальноеИмя;
ЧтениеXML.Прочитать();
Имя = ЧтениеXML.Значение;
Значение.Добавить(СтрШаблон("%1.%2", Тип, Имя));
КонецЕсли;
КонецЦикла;
Возврат Значение;
КонецФункции
#КонецОбласти
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
Функция ВыполнитьОбработкуПрочитанныхСвойств(СырыеДанные, ПараметрыЧтения)
СвойстваОписания = Новый Структура();
Для Каждого Параметр Из ПараметрыЧтения Цикл
СвойстваОписания = СтруктурыОписаний.СоздатьСтруктураОбъекта(ПараметрыЧтения.Тип);
Для Каждого Параметр Из ПараметрыЧтения.Свойства Цикл
Значение = Неопределено;
@ -309,35 +227,17 @@
КонецЕсли;
Значение = ОбработатьСвойство(Значение, Параметр.Значение);
СвойстваОписания.Вставить(Параметр.Ключ, Значение);
КонецЦикла;
Возврат СвойстваОписания;
КонецФункции
Функция ОбработатьСвойство(Значение, Параметр)
Если ПустаяСтрока(Значение) И Параметр.Коллекция Тогда
Если ПараметрыЧтения.ЕстьПодчиненные И СырыеДанные.Свойство("ChildObjects") И ЗначениеЗаполнено(СырыеДанные.ChildObjects) Тогда
Возврат Новый Массив();
СвойстваОписания.Вставить("Подчиненные", СырыеДанные.ChildObjects);
ИначеЕсли ПустаяСтрока(Значение) Тогда
Возврат Значение;
ИначеЕсли Параметр.Коллекция И ТипЗнч(Значение) <> Тип("Массив") Тогда
Результат = Новый Массив();
Результат.Добавить(Значение);
Значение = Результат;
КонецЕсли;
Возврат Значение;
Возврат СвойстваОписания;
КонецФункции
@ -345,24 +245,16 @@
ОбработчикиПолей = Новый Структура();
Если ПараметрыЧтения <> Неопределено Тогда
Для Каждого Элемент Из ПараметрыЧтения.Свойства Цикл
Для Каждого Элемент Из ПараметрыЧтения Цикл
Параметр = Элемент.Значение;
Если НЕ ПустаяСтрока(Параметр.МетодПреобразования) Тогда
Параметр = Элемент.Значение;
Если ПустаяСтрока(Параметр.ФункцияПреобразования) И Параметр.Многоязычный Тогда
ОбработчикиПолей.Вставить(ВРег(Параметр.Поле), "МногоязычнаяСтрока");
ИначеЕсли НЕ ПустаяСтрока(Параметр.ФункцияПреобразования) Тогда
ОбработчикиПолей.Вставить(ВРег(Параметр.Поле), Параметр.ФункцияПреобразования);
КонецЕсли;
ОбработчикиПолей.Вставить(ВРег(Параметр.Поле), Параметр.МетодПреобразования);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Пока ЧтениеXML.Прочитать() Цикл
@ -423,6 +315,10 @@
КонецЕсли;
КонецЦикла;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "ChildObjects" Тогда
Данные.Вставить("ChildObjects", Подчиненные(ЧтениеXML));
КонецЕсли;