mirror of
https://github.com/bia-technologies/bsl-parser.git
synced 2025-02-19 20:00:02 +02:00
#ONECICD-148
Генерация описаний расширения
This commit is contained in:
parent
4a2fb068f2
commit
e076f6994f
255
src/ГенераторОписаний/Классы/ГенераторРасширений.os
Normal file
255
src/ГенераторОписаний/Классы/ГенераторРасширений.os
Normal file
@ -0,0 +1,255 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Класс для генерации расширений
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать fs
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем ЗаписьConfiguration;
|
||||
Перем ОписаниеКонфигурации;
|
||||
Перем Лог;
|
||||
Перем СтруктураКаталоговПриемник;
|
||||
Перем ПараметрыГенерации;
|
||||
Перем ГенераторОписаний;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Программный интерфейс
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура Инициализировать(ИмяРасширения, ПредставлениеРасширения, ПрефиксРасширения) Экспорт
|
||||
|
||||
ОписаниеРасширения = СтруктурыОписаний.СоздатьСтруктураОбъекта("Расширение");
|
||||
ОписаниеРасширения.Наименование = ИмяРасширения;
|
||||
ОписаниеРасширения.Синоним = ПредставлениеРасширения;
|
||||
ОписаниеРасширения.ПрефиксИмен = ПрефиксРасширения;
|
||||
ОписаниеРасширения.Принадлежность = "Adopted";
|
||||
ОписаниеРасширения.Назначение = "Customization";
|
||||
|
||||
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
|
||||
ОписаниеКонфигурации = Новый Структура("ОбъектыКонфигурации, СвойстваКонфигурации", ОбъектыКонфигурации, ОписаниеРасширения);
|
||||
|
||||
СтрокаКонфигурация = ОбъектыКонфигурации.Добавить();
|
||||
ПустаяСтрокаОбъектКонфигурации = СтруктурыОписаний.ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию();
|
||||
|
||||
ЗаполнитьЗначенияСвойств(СтрокаКонфигурация, ПустаяСтрокаОбъектКонфигурации);
|
||||
СтрокаКонфигурация.Тип = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации();
|
||||
СтрокаКонфигурация.Наименование = СтрокаКонфигурация.Тип;
|
||||
СтрокаКонфигурация.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияКонфигурации();
|
||||
СтрокаКонфигурация.Описание = ОписаниеРасширения;
|
||||
|
||||
ЗаписьConfiguration = ГенераторОписаний.СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Завершает генерацию расширения и записывает описание корневого файла(configuration.xml)
|
||||
//
|
||||
Процедура Зафиксировать() Экспорт
|
||||
|
||||
ОписаниеКонфигурации.ОбъектыКонфигурации.Сортировать("Тип, Наименование");
|
||||
ТипКонфигурация = ТипыОбъектовКонфигурации.ИмяТипаКонфигурации();
|
||||
|
||||
Для Каждого Стр Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
|
||||
|
||||
Если Стр.Тип <> ТипКонфигурация Тогда
|
||||
|
||||
ГенераторОписаний.ЗарегистрироватьОбъектВКонфигурации(Стр.Наименование, Стр.Тип, ПараметрыГенерации);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Описание = ГенераторОписанийОбщий.ЗакрытьЗапись(ЗаписьConfiguration);
|
||||
|
||||
Утилиты.ЗаписатьФайл(СтруктураКаталоговПриемник.ИмяФайлаОписанияКонфигурации(), Описание);
|
||||
|
||||
Лог.Информация("Расширение создано");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеКонфигурации() Экспорт
|
||||
|
||||
Возврат ОписаниеКонфигурации;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьОбъект(ИмяОбъекта, Знач ТипОбъекта, ОписаниеОбъекта = Неопределено) Экспорт
|
||||
|
||||
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
|
||||
|
||||
НайденныеОбъекты = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Наименование, Тип", ИмяОбъекта, ТипОбъекта));
|
||||
|
||||
Если НайденныеОбъекты.Количество() Тогда
|
||||
|
||||
Описание = НайденныеОбъекты[0];
|
||||
|
||||
Иначе
|
||||
|
||||
Описание = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
|
||||
|
||||
Описание.Наименование = ИмяОбъекта;
|
||||
Описание.Тип = ТипОбъекта;
|
||||
Описание.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта);
|
||||
Описание.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта);
|
||||
Описание.Описание = ОписаниеОбъекта;
|
||||
|
||||
Если ОписаниеОбъекта <> Неопределено Тогда
|
||||
|
||||
ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПеренестиОбъектВРасширение(ИмяОбъекта, Знач ТипОбъекта, ОписаниеОбъекта = Неопределено) Экспорт
|
||||
|
||||
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
|
||||
|
||||
НайденныеОбъекты = ОписаниеКонфигурации.ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Наименование, Тип", ИмяОбъекта, ТипОбъекта));
|
||||
|
||||
Если НайденныеОбъекты.Количество() Тогда
|
||||
|
||||
Описание = НайденныеОбъекты[0];
|
||||
|
||||
Если ОписаниеОбъекта = Неопределено Тогда
|
||||
|
||||
ОписаниеОбъекта = Описание.Описание;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
Описание = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
|
||||
|
||||
Описание.Наименование = ИмяОбъекта;
|
||||
Описание.Тип = ТипОбъекта;
|
||||
Описание.ПутьКФайлу = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ИмяОбъекта, ТипОбъекта);
|
||||
Описание.ПутьККаталогу = СтруктураКаталоговПриемник.КаталогФайловОбъекта(ИмяОбъекта, ТипОбъекта);
|
||||
Описание.Описание = ОписаниеОбъекта;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ОписаниеОбъекта = Неопределено Тогда
|
||||
|
||||
ОписаниеОбъекта = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
|
||||
ОписаниеОбъекта.Наименование = ИмяОбъекта;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОписаниеОбъекта.Вставить("ObjectBelonging", "Adopted");
|
||||
ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет в расширение существующий файл, как общий модуль
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМодуля - Строка - <описание параметра>
|
||||
// ПараметрыМодуля - Структура - Свойства модуля: Клиент, Сервер, ВызовСервера, ВнешнееСоединение, Привилегированный
|
||||
// ИмяФайла - Строка - Путь к добавляемому файлу
|
||||
//
|
||||
Процедура ДобавитьМодульОбъекта(ИмяОбъекта, ТипОбъекта, ИмяМодуля, ИмяФайла, ОписаниеОбъекта = Неопределено) Экспорт
|
||||
|
||||
ДобавитьОбъект(ИмяОбъекта, ТипОбъекта, ОписаниеОбъекта);
|
||||
|
||||
ИмяФайлаНазначения = СтруктураКаталоговПриемник.ИмяФайлаМодуля(ИмяОбъекта, ТипОбъекта, ИмяМодуля);
|
||||
КопироватьФайл(ИмяФайла, ИмяФайлаНазначения);
|
||||
|
||||
Лог.Отладка("Добавлен модуль %3.%1.%2", ИмяОбъекта, ИмяМодуля, ТипОбъекта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Добавляет в расширение существующий файл, как общий модуль
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМодуля - Строка - <описание параметра>
|
||||
// ПараметрыМодуля - Структура - Свойства модуля: Клиент, Сервер, ВызовСервера, ВнешнееСоединение, Привилегированный
|
||||
// ИмяФайла - Строка - Путь к добавляемому файлу
|
||||
//
|
||||
Процедура ДобавитьОбщийМодуль(ПараметрыМодуля, ИмяФайла) Экспорт
|
||||
|
||||
ТипОбщийМодуль = ТипыОбъектовКонфигурации.ИмяТипаОбщийМодуль();
|
||||
|
||||
ДобавитьМодульОбъекта(ПараметрыМодуля.Наименование, ТипОбщийМодуль, "Module", ИмяФайла, ПараметрыМодуля);
|
||||
Лог.Отладка("Добавлен общий модуль %1", ПараметрыМодуля.Наименование);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Добавляет произвольный файл в расширение, без регистрации и смс
|
||||
//
|
||||
// Параметры:
|
||||
// ОтносительныйПуть - Строка - Путь в рамках исходников расширения
|
||||
// ИсходныйФайл - Строка - Полный путь к добавляемому файлу
|
||||
//
|
||||
Процедура ДобавитьФайл(ОтносительныйПуть, ИсходныйФайл) Экспорт
|
||||
|
||||
ПолныйПуть = ОбъединитьПути(СтруктураКаталоговПриемник.КорневойКаталог(), ОтносительныйПуть);
|
||||
Утилиты.СоздатьРекурсивноКаталоги((Новый Файл(ПолныйПуть)).Путь);
|
||||
|
||||
КопироватьФайл(ИсходныйФайл, ПолныйПуть);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Служебный функционал
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура ЗаписатьОписаниеОбъекта(ТипОбъекта, ОписаниеОбъекта)
|
||||
|
||||
Запись = ГенераторОписаний.СоздатьЗапись(ТипОбъекта, ПараметрыГенерации);
|
||||
|
||||
ГенераторОписаний.ЗаписатьПорождаемыеТипы(Запись, ОписаниеОбъекта.Наименование, ТипОбъекта);
|
||||
ГенераторОписаний.ЗаписатьСвойства(Запись, ТипОбъекта, ОписаниеОбъекта);
|
||||
|
||||
ТекстОписания = ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
|
||||
|
||||
ИмяФайла = СтруктураКаталоговПриемник.ИмяФайлаОписанияОбъекта(ОписаниеОбъекта.Наименование, ТипОбъекта);
|
||||
|
||||
Утилиты.ЗаписатьФайл(ИмяФайла, ТекстОписания);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Процедура ПриСозданииОбъекта(Формат, Знач КаталогНазначения)
|
||||
|
||||
Лог = ПараметрыПродукта.ПолучитьЛог();
|
||||
КаталогНазначения = (Новый Файл(КаталогНазначения)).ПолноеИмя;
|
||||
|
||||
Если НЕ ФС.КаталогСуществует(КаталогНазначения) Тогда
|
||||
|
||||
ФС.ОбеспечитьКаталог(КаталогНазначения);
|
||||
|
||||
ИначеЕсли НЕ ФС.КаталогПустой(КаталогНазначения) Тогда
|
||||
|
||||
Лог.Предупреждение("Каталог расширения ""%1"" не пустой. Каталог будет очищен", КаталогНазначения);
|
||||
ФС.ОбеспечитьПустойКаталог(КаталогНазначения);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Лог.Информация("Начало генерации расширения");
|
||||
|
||||
СтруктураКаталоговПриемник = Новый СтруктураКаталоговКонфигурации(КаталогНазначения, Формат, Истина);
|
||||
|
||||
Если СтруктураКаталоговПриемник.ФорматВыгрузки() = "EDT" Тогда
|
||||
|
||||
ГенераторОписаний = ГенераторОписанийEDT;
|
||||
|
||||
Иначе
|
||||
|
||||
ГенераторОписаний = ГенераторОписанийКонфигуратор;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыГенерации = ГенераторОписаний.СоздатьПараметрыГенерации("8.3.10", Истина);
|
||||
|
||||
КонецПроцедуры
|
182
src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os
Normal file
182
src/ГенераторОписаний/Модули/ГенераторОписанийEDT.os
Normal file
@ -0,0 +1,182 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Модуль генерации описаний файлов 1с в формате EDT
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Формирует служебные параметры необходимые для дальнейшей работы генератора
|
||||
//
|
||||
// Параметры:
|
||||
// ВерсияПлатформы - Строка - Версия платформы 1с под которую создается описание
|
||||
// ГенерацияРасширения - Булево - Флаг создания расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Служебные параметры генератора
|
||||
//
|
||||
Функция СоздатьПараметрыГенерации(ВерсияПлатформы, ГенерацияРасширения) Экспорт
|
||||
|
||||
Если Лев(ВерсияПлатформы, 6) = "8.3.10" Тогда
|
||||
|
||||
ВерсияВыгрузки = "2.4";
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Неизвестная версия платформы";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыГенерации = Новый Структура();
|
||||
ПараметрыГенерации.Вставить("ВерсияПлатформы", ВерсияПлатформы);
|
||||
ПараметрыГенерации.Вставить("ВерсияВыгрузки", ВерсияВыгрузки);
|
||||
ПараметрыГенерации.Вставить("ГенерацияРасширения", ГенерацияРасширения = Истина);
|
||||
|
||||
Возврат ПараметрыГенерации;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д.
|
||||
//
|
||||
// Параметры:
|
||||
// Имя - Строка - Имя расширения
|
||||
//
|
||||
Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт
|
||||
|
||||
ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации);
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("extension");
|
||||
ЗаписьConfiguration.ЗаписатьСоответствиеПространстваИмен("type", "mdclassExtension:ConfigurationExtension");
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // extension
|
||||
|
||||
Для Каждого uid из ГенераторОписанийОбщий.ПолучитьUIDДляГенерацииРасширения() Цикл
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("containedObjects");
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "classId", uid);
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "objectId", Строка(Новый УникальныйИдентификатор()));
|
||||
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // containedObjects
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьДанные(ЗаписьConfiguration, ОписаниеРасширения, "Расширение", ЭтотОбъект);
|
||||
|
||||
ПараметрыГенерации.Вставить("ЗаписьConfiguration", ЗаписьConfiguration);
|
||||
|
||||
Возврат ЗаписьConfiguration;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьСвойства(Запись, ТипОбъекта, СвойстваОбъекта) Экспорт
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьДанные(Запись, СвойстваОбъекта, ТипОбъекта, ЭтотОбъект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Метод регистрирует в конфигурации объект метаданных.
|
||||
// Проверок на существование объекта нет
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
|
||||
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
|
||||
//
|
||||
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ВидМетаданного, ИмяМетаданного);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт
|
||||
|
||||
ПорождаемыеТипы = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ПорождаемыеТипы;
|
||||
|
||||
Если ПорождаемыеТипы.Количество() = 0 Тогда
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("producedTypes");
|
||||
|
||||
Для Каждого Тип Из ПорождаемыеТипы Цикл
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента(Тип);
|
||||
Запись.ЗаписатьАтрибут("typeId", Строка(Новый УникальныйИдентификатор()));
|
||||
Запись.ЗаписатьАтрибут("valueTypeId", Строка(Новый УникальныйИдентификатор()));
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область МетодыЗаписиЗначений
|
||||
|
||||
Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "key", "ru");
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "value", Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗначениеБулево(Запись, Значение) Экспорт
|
||||
|
||||
Запись.ЗаписатьТекст(XMLСтрока(Значение));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// Создает xml запись описания объекта, прописывает базовые параметры
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЗаписьXML- Поток записи описания
|
||||
//
|
||||
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации) Экспорт
|
||||
|
||||
Запись = Новый ЗаписьXML();
|
||||
Запись.Отступ = Ложь;
|
||||
Запись.УстановитьСтроку("UTF-8");
|
||||
Запись.ЗаписатьОбъявлениеXML();
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента(СтрШаблон("mdclass:%1", ТипОбъекта));
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("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");
|
||||
КонецЕсли;
|
||||
|
||||
Запись.ЗаписатьАтрибут("uuid", Строка(Новый УникальныйИдентификатор()));
|
||||
|
||||
Возврат Запись;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Закрывает запись описания объекта и всех открытых тэгов
|
||||
//
|
||||
// Параметры:
|
||||
// Запись - ЗаписьXML - запись описания объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - XML описание объекта
|
||||
//
|
||||
Функция ЗакрытьЗапись(Запись)
|
||||
|
||||
Возврат ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
|
||||
|
||||
КонецФункции
|
254
src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os
Normal file
254
src/ГенераторОписаний/Модули/ГенераторОписанийКонфигуратор.os
Normal file
@ -0,0 +1,254 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Модуль помощник, для генерации описаний метаданных 1с
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// Формирует служебные параметры необходимые для дальнейшей работы генератора
|
||||
//
|
||||
// Параметры:
|
||||
// ВерсияПлатформы - Строка - Версия платформы 1с под которую создается описание
|
||||
// ГенерацияРасширения - Булево - Флаг создания расширения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Служебные параметры генератора
|
||||
//
|
||||
Функция СоздатьПараметрыГенерации(ВерсияПлатформы, ГенерацияРасширения) Экспорт
|
||||
|
||||
Если Лев(ВерсияПлатформы, 6) = "8.3.10" Тогда
|
||||
|
||||
ВерсияВыгрузки = "2.4";
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Неизвестная версия платформы";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыГенерации = Новый Структура();
|
||||
ПараметрыГенерации.Вставить("ВерсияПлатформы", ВерсияПлатформы);
|
||||
ПараметрыГенерации.Вставить("ВерсияВыгрузки", ВерсияВыгрузки);
|
||||
ПараметрыГенерации.Вставить("ГенерацияРасширения", ГенерацияРасширения = Истина);
|
||||
|
||||
Возврат ПараметрыГенерации;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д.
|
||||
//
|
||||
// Параметры:
|
||||
// Имя - Строка - Имя расширения
|
||||
//
|
||||
Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт
|
||||
|
||||
ЗаписьConfiguration = СоздатьЗапись("Configuration", ПараметрыГенерации);
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("InternalInfo");
|
||||
|
||||
Для Каждого uid из ГенераторОписанийОбщий.ПолучитьUIDДляГенерацииРасширения() Цикл
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("xr:ContainedObject");
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "xr:ClassId", uid);
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ЗаписьConfiguration, "xr:ObjectId", Строка(Новый УникальныйИдентификатор()));
|
||||
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // xr:ContainedObject
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьКонецЭлемента(); // InternalInfo
|
||||
|
||||
ЗаписатьСвойства(ЗаписьConfiguration, "Расширение", ОписаниеРасширения);
|
||||
|
||||
ЗаписьConfiguration.ЗаписатьНачалоЭлемента("ChildObjects");
|
||||
|
||||
ПараметрыГенерации.Вставить("ЗаписьConfiguration", ЗаписьConfiguration);
|
||||
|
||||
Возврат ЗаписьConfiguration;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьСвойства(Запись, ТипОбъекта, СвойстваОбъекта) Экспорт
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("Properties");
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьДанные(Запись, СвойстваОбъекта, ТипОбъекта, ЭтотОбъект);
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента(); // Properties
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Метод регистрирует в конфигурации объект метаданных.
|
||||
// Проверок на существование объекта нет
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
|
||||
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
|
||||
//
|
||||
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(ПараметрыГенерации.ЗаписьConfiguration, ВидМетаданного, ИмяМетаданного);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт
|
||||
|
||||
ПорождаемыеТипы = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ПорождаемыеТипы;
|
||||
|
||||
Если ПорождаемыеТипы.Количество() = 0 Тогда
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("InternalInfo");
|
||||
|
||||
Для Каждого Тип Из ПорождаемыеТипы Цикл
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("xr:GeneratedType");
|
||||
// TODO Есть типы исключения у которых имя формируется по-другому
|
||||
Запись.ЗаписатьАтрибут("name", СтрШаблон("%1%2.%3", ТипОбъекта, Тип, ИмяОбъекта));
|
||||
Запись.ЗаписатьАтрибут("category", Тип);
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "xr:TypeId", Строка(Новый УникальныйИдентификатор()));
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "xr:ValueId", Строка(Новый УникальныйИдентификатор()));
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область МетодыЗаписиЗначений
|
||||
|
||||
Процедура МногоязычнаяСтрока(Запись, Значение) Экспорт
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("v8:item");
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "v8:lang", "ru");
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "v8:content", Значение);
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗначениеБулево(Запись, Значение) Экспорт
|
||||
|
||||
Запись.ЗаписатьТекст(XMLСтрока(Значение));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// Создает xml запись описания объекта, прописывает базовые параметры
|
||||
//
|
||||
// Параметры:
|
||||
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ЗаписьXML- Поток записи описания
|
||||
//
|
||||
Функция СоздатьЗапись(ТипОбъекта, ПараметрыГенерации) Экспорт
|
||||
|
||||
Запись = Новый ЗаписьXML();
|
||||
Запись.Отступ = Ложь;
|
||||
Запись.УстановитьСтроку("UTF-8");
|
||||
Запись.ЗаписатьОбъявлениеXML();
|
||||
Запись.ЗаписатьНачалоЭлемента("MetaDataObject");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.3/MDClasses");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("app", "http://v8.1c.ru/8.2/managed-application/core");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("cfg", "http://v8.1c.ru/8.1/data/enterprise/current-config");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("cmi", "http://v8.1c.ru/8.2/managed-application/cmi");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("ent", "http://v8.1c.ru/8.1/data/enterprise");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("lf", "http://v8.1c.ru/8.2/managed-application/logform");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("style", "http://v8.1c.ru/8.1/data/ui/style");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("sys", "http://v8.1c.ru/8.1/data/ui/fonts/system");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/core");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("v8ui", "http://v8.1c.ru/8.1/data/ui");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("web", "http://v8.1c.ru/8.1/data/ui/colors/web");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("win", "http://v8.1c.ru/8.1/data/ui/colors/windows");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("xen", "http://v8.1c.ru/8.3/xcf/enums");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("xpr", "http://v8.1c.ru/8.3/xcf/predef");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("xr", "http://v8.1c.ru/8.3/xcf/readable");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
|
||||
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
|
||||
|
||||
Запись.ЗаписатьАтрибут("version", ПараметрыГенерации.ВерсияВыгрузки);
|
||||
Запись.ЗаписатьНачалоЭлемента(ТипОбъекта);
|
||||
Запись.ЗаписатьАтрибут("uuid", Строка(Новый УникальныйИдентификатор()));
|
||||
|
||||
Возврат Запись;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Закрывает запись описания объекта и всех открытых тэгов
|
||||
//
|
||||
// Параметры:
|
||||
// Запись - ЗаписьXML - запись описания объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - XML описание объекта
|
||||
//
|
||||
Функция ЗакрытьЗапись(Запись)
|
||||
|
||||
Возврат ГенераторОписанийОбщий.ЗакрытьЗапись(Запись);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СкопироватьInternalInfo(Запись, ИсходноеОписание)
|
||||
|
||||
Чтение = Новый ЧтениеXML();
|
||||
Чтение.УстановитьСтроку(ИсходноеОписание);
|
||||
|
||||
Переносим = Ложь;
|
||||
|
||||
Пока Чтение.Прочитать() И Чтение.Имя <> "InternalInfo" Цикл // Ищем секцию InternalInfo
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Чтение.Имя <> "InternalInfo" Тогда // Не нашли секцию
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента("InternalInfo");
|
||||
|
||||
Пока Чтение.Прочитать() И Чтение.Имя <> "InternalInfo" Цикл
|
||||
|
||||
Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
|
||||
|
||||
Запись.ЗаписатьТекст(Строка(Новый УникальныйИдентификатор()));
|
||||
|
||||
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента(Чтение.Имя);
|
||||
|
||||
Пока Чтение.СледующийАтрибут() Цикл
|
||||
|
||||
Запись.ЗаписатьАтрибут(Чтение.Имя, Чтение.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Чтение.Закрыть();
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента(); // InternalInfo
|
||||
|
||||
КонецПроцедуры
|
||||
|
129
src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os
Normal file
129
src/ГенераторОписаний/Модули/ГенераторОписанийОбщий.os
Normal file
@ -0,0 +1,129 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Модуль помощник по генерации файлов описаний 1с
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем Рефлектор;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПолучитьUIDДляГенерацииРасширения() Экспорт
|
||||
|
||||
UIDы = Новый Массив();
|
||||
UIDы.Добавить("9cd510cd-abfc-11d4-9434-004095e12fc7");
|
||||
UIDы.Добавить("9fcd25a0-4822-11d4-9414-008048da11f9");
|
||||
UIDы.Добавить("e3687481-0a87-462c-a166-9f34594f9bba");
|
||||
UIDы.Добавить("9de14907-ec23-4a07-96f0-85521cb6b53b");
|
||||
UIDы.Добавить("51f2d5d8-ea4d-4064-8892-82951750031e");
|
||||
UIDы.Добавить("e68182ea-4237-4383-967f-90c1e3370bc7");
|
||||
|
||||
Возврат UIDы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Закрывает запись описания объекта и всех открытых тэгов
|
||||
//
|
||||
// Параметры:
|
||||
// Запись - ЗаписьXML - запись описания объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - XML описание объекта
|
||||
//
|
||||
Функция ЗакрытьЗапись(Запись) Экспорт
|
||||
|
||||
Для Инд = 1 По Запись.КонтекстПространствИмен.Глубина Цикл
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Запись.Закрыть();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьЗначениеXML(Запись, Имя, Значение) Экспорт
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента(Имя);
|
||||
Запись.ЗаписатьТекст(XMLСтрока(Значение));
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПодготовитьДанныеДляЗаписи(Данные, ТипОбъекта, ФорматEDT) Экспорт
|
||||
|
||||
ДанныеДляЗаписи = Новый Структура();
|
||||
Словарь = СтруктурыОписаний.СловарьЗаменыИменРеквизитов(ТипОбъекта, ФорматEDT);
|
||||
|
||||
Для Каждого Реквизит Из Данные Цикл
|
||||
|
||||
ДанныеДляЗаписи.Вставить(Словарь[Реквизит.Ключ], Реквизит.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ДанныеДляЗаписи;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт
|
||||
|
||||
ФорматEDT = Генератор = ГенераторОписанийEDT;
|
||||
СвойстваОбъекта = СтруктурыОписаний.ОписаниеСвойствОбъекта(ТипОбъекта);
|
||||
|
||||
Если СвойстваОбъекта = Неопределено Тогда
|
||||
|
||||
СвойстваОбъекта = СтруктурыОписаний.БазовоеОписаниеСвойствОбъекта();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
АргументыПреобразования = Новый Массив(2);
|
||||
АргументыПреобразования[0] = Запись;
|
||||
|
||||
Для Каждого ОписаниеСвойства Из СвойстваОбъекта Цикл
|
||||
|
||||
Значение = Неопределено;
|
||||
|
||||
Если НЕ Данные.Свойство(ОписаниеСвойства.Наименование, Значение) Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Ключ = ?(ФорматEDT, ОписаниеСвойства.ЭлементEDT, ОписаниеСвойства.ЭлементDesigner);
|
||||
Если ПустаяСтрока(ОписаниеСвойства.МетодПреобразования) Тогда
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, Ключ, Значение);
|
||||
|
||||
Иначе
|
||||
|
||||
Запись.ЗаписатьНачалоЭлемента(Ключ);
|
||||
|
||||
АргументыПреобразования[1] = Значение;
|
||||
|
||||
Рефлектор.ВызватьМетод(Генератор, ОписаниеСвойства.МетодПреобразования, АргументыПреобразования);
|
||||
|
||||
Запись.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если Данные.Свойство("ObjectBelonging") Тогда
|
||||
|
||||
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, "ObjectBelonging", Данные.ObjectBelonging);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Рефлектор = Новый Рефлектор();
|
@ -191,6 +191,34 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъекта(ИмяОбъекта, ТипОбъекта = Неопределено) Экспорт
|
||||
|
||||
Если ТипОбъекта = Неопределено И СтрНайти(ИмяОбъекта, ".") Тогда
|
||||
|
||||
Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.Найти(ИмяОбъекта, "ПолноеНаименование");
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат ОписаниеКонфигурации.ОбъектыКонфигурации.Найти(СтрШаблон("%1.%2", ТипОбъекта, ИмяОбъекта), "ПолноеНаименование");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФорматВыгрузки() Экспорт
|
||||
|
||||
Возврат СтруктураКаталогов.ФорматВыгрузки();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
|
||||
|
||||
ПараметрыЧтения = СтруктурыОписаний.ПолучитьОписаниеСвойствОбъекта(ОбъектКонфигурации.Тип);
|
||||
|
||||
Описание = ЧитательОписаний.ПрочитатьСвойстваИзФайла(ОбъектКонфигурации.ПутьКФайлу, ПараметрыЧтения);
|
||||
ОбъектКонфигурации.Описание = Описание;
|
||||
|
||||
КонецПроцедуры
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -2,50 +2,52 @@
|
||||
|
||||
## Имена
|
||||
|
||||
| Наименование | Наименование коллекции | Name | Collection name |
|
||||
| --------------------------- | ---------------------------- | -------------------------- | --------------------------- |
|
||||
| HTTPСервис | HTTPСервисы | HTTPService | HTTPServices |
|
||||
| WebСервис | WebСервисы | WebService | WebServices |
|
||||
| WSСсылка | WSСсылки | WSReference | WSReferences |
|
||||
| БизнесПроцесс | БизнесПроцессы | BusinessProcess | BusinessProcesses |
|
||||
| ВнешнийИсточникиДанных | ВнешниеИсточникиДанных | ExternalDataSource | ExternalDataSources |
|
||||
| ГруппаКоманд | ГруппыКоманд | CommandGroup | CommandGroups |
|
||||
| Документ | Документы | Document | Documents |
|
||||
| ЖурналДокументов | ЖурналыДокументов | DocumentJournal | DocumentJournals |
|
||||
| Задача | Задачи | Task | Tasks |
|
||||
| Интерфейс | Интерфейсы | Interface | Interfaces |
|
||||
| Константа | Константы | Constant | Constants |
|
||||
| КритерийОтбора | КритерииОтбора | FilterCriterion | FilterCriteria |
|
||||
| НумераторДокументов | НумераторыДокументов | DocumentNumerator | DocumentNumerators |
|
||||
| Обработка | Обработки | DataProcessor | DataProcessors |
|
||||
| ОбщаяКартинка | ОбщиеКартинки | CommonPicture | CommonPictures |
|
||||
| ОбщаяКоманда | ОбщиеКоманды | CommonCommand | CommonCommands |
|
||||
| ОбщийМакет | ОбщиеМакеты | CommonTemplate | CommonTemplates |
|
||||
| ОбщийМодуль | ОбщиеМодули | CommonModule | CommonModules |
|
||||
| ОбщийРеквизит | ОбщиеРеквизиты | CommonAttribute | CommonAttributes |
|
||||
| ОбщаяФорм | ОбщиеФормы | CommonForm | CommonForms |
|
||||
| ОпределяемыйТип | ОпределяемыеТипы | DefinedType | DefinedTypes |
|
||||
| Отчет | Отчеты | Report | Reports |
|
||||
| ПакетXDTO | ПакетыXDTO | XDTOPackage | XDTOPackages |
|
||||
| ПараметрСеанса | ПараметрыСеанса | SessionParameter | SessionParameters |
|
||||
| ПараметрФункциональныхОпций | ПараметрыФункциональныхОпций | FunctionalOptionsParameter | FunctionalOptionsParameters |
|
||||
| Перечисление | Перечисления | Enum | Enums |
|
||||
| ПланВидовРасчета | ПланыВидовРасчета | ChartOfCalculationTypes | ChartsOfCalculationTypes |
|
||||
| ПланВидовХарактеристик | ПланыВидовХарактеристик | ChartOfCharacteristicTypes | ChartsOfCharacteristicTypes |
|
||||
| ПланОбмена | ПланыОбмена | ExchangePlan | ExchangePlans |
|
||||
| ПланСчетов | ПланыСчетов | ChartOfAccounts | ChartsOfAccounts |
|
||||
| ПодпискаНаСобытия | ПодпискиНаСобытия | EventSubscription | EventSubscriptions |
|
||||
| Подсистема | Подсистемы | Subsystem | Subsystems |
|
||||
| Последовательность | Последовательности | Sequence | Sequences |
|
||||
| РегистрБухгалтерии | РегистрыБухгалтерии | AccountingRegister | AccountingRegisters |
|
||||
| РегистрНакопления | РегистрыНакопления | AccumulationRegister | AccumulationRegisters |
|
||||
| РегистрРасчета | РегистрыРасчета | CalculationRegister | CalculationRegisters |
|
||||
| РегистрСведений | РегистрыСведений | InformationRegister | InformationRegisters |
|
||||
| РегламентноеЗадание | РегламентныеЗадания | ScheduledJob | ScheduledJobs |
|
||||
| Роль | Роли | Role | Roles |
|
||||
| Справочник | Справочники | Catalog | Catalogs |
|
||||
| Стиль | Стили | Style | Styles |
|
||||
| ФункциональнаяОпция | ФункциональныеОпции | FunctionalOption | FunctionalOptions |
|
||||
| ХранилищеНастроек | ХранилищаНастроек | SettingsStorage | SettingsStorages |
|
||||
| ЭлементСтиля | ЭлементыСтиля | StyleItem | StyleItems |
|
||||
| Язык | Языки | Language | Languages |
|
||||
| Наименование | НаименованиеКоллекции | Наименование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 | |
|
41
src/Макеты/СвойстваОбъектов.md
Normal file
41
src/Макеты/СвойстваОбъектов.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Свойства объектов конфигурации
|
||||
|
||||
## Реквизиты Default
|
||||
|
||||
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
|
||||
| ------------ | ---------- | --------------- | ------------------- |
|
||||
| Наименование | name | Name | |
|
||||
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
|
||||
|
||||
## Реквизиты Configuration
|
||||
|
||||
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
|
||||
| ------------ | ---------- | --------------- | ------------------- |
|
||||
| Наименование | name | Name | |
|
||||
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
|
||||
|
||||
## Реквизиты Extension
|
||||
|
||||
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
|
||||
| -------------- | ----------------------------- | ----------------------------- | ------------------- |
|
||||
| Наименование | name | Name | |
|
||||
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
|
||||
| Принадлежность | objectBelonging | ObjectBelonging | |
|
||||
| ПрефиксИмен | namePrefix | NamePrefix | |
|
||||
| Назначение | ConfigurationExtensionPurpose | ConfigurationExtensionPurpose | |
|
||||
|
||||
## Реквизиты 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 |
|
17
src/Модули/ГенераторBSL.os
Normal file
17
src/Модули/ГенераторBSL.os
Normal file
@ -0,0 +1,17 @@
|
||||
#Использовать "..\ГенераторОписаний"
|
||||
|
||||
Функция СоздатьРасширение(Формат, КаталогИсходниковРасширения) Экспорт
|
||||
|
||||
Генератор = Новый ГенераторРасширений(Формат, КаталогИсходниковРасширения);
|
||||
|
||||
Возврат Генератор;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОписаниеОбъекта(ТипОбъекта) Экспорт
|
||||
|
||||
ОписаниеОбъекта = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
|
||||
|
||||
Возврат ОписаниеОбъекта;
|
||||
|
||||
КонецФункции
|
54
src/Модули/ГенерацияФайла.os
Normal file
54
src/Модули/ГенерацияФайла.os
Normal file
@ -0,0 +1,54 @@
|
||||
|
||||
Процедура ЗаписатьОписаниеКонфигурацииXML(ОписаниеКонфигурации, ИмяФайла) Экспорт
|
||||
|
||||
ЗаписьXML = Новый ЗаписьXML();
|
||||
ЗаписьXML.УстановитьСтроку("UTF-8");
|
||||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента("configuration");
|
||||
ЗаписатьЗначениеXML(ЗаписьXML, ОписаниеКонфигурации);
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
|
||||
Текст = ЗаписьXML.Закрыть();
|
||||
ТекстовыйДокумент = Новый ТекстовыйДокумент();
|
||||
ТекстовыйДокумент.УстановитьТекст(Текст);
|
||||
ТекстовыйДокумент.Записать(ИмяФайла);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьЗначениеXML(ЗаписьXML, Знач Значение)
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Структура") ИЛИ ТипЗнч(Значение) = Тип("Соответствие") Тогда
|
||||
|
||||
Для Каждого Поле Из Значение Цикл
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента(Поле.Ключ);
|
||||
ЗаписатьЗначениеXML(ЗаписьXML, Поле.Значение);
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
|
||||
Для Каждого Поле Из Значение Цикл
|
||||
ЗаписатьЗначениеXML(ЗаписьXML, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли ТипЗнч(Значение) = Тип("ТаблицаЗначений") Тогда
|
||||
|
||||
Для Каждого Поле Из Значение Цикл
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента("row");
|
||||
|
||||
Для Каждого Колонка Из Значение.Колонки Цикл
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента(Колонка.Имя);
|
||||
ЗаписатьЗначениеXML(ЗаписьXML, Поле[Колонка.Имя]);
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ЗаписьXML.ЗаписатьТекст(XMLСтрока(Значение));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
@ -4,6 +4,8 @@
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем СвойстваОбъектов;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -15,12 +17,13 @@
|
||||
ОбъектыКонфигурации = Новый ТаблицаЗначений;
|
||||
ОбъектыКонфигурации.Колонки.Добавить("Наименование");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("Тип");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("ПолноеНаименование");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("ПутьКФайлу");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("ПутьККаталогу");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("Подсистемы");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("Описание");
|
||||
ОбъектыКонфигурации.Колонки.Добавить("Родитель");
|
||||
|
||||
|
||||
Возврат ОбъектыКонфигурации;
|
||||
|
||||
КонецФункции
|
||||
@ -42,7 +45,7 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ТаблицаОписанияПодсистем() Экспорт
|
||||
|
||||
|
||||
ОписаниеПодсистем = Новый ТаблицаЗначений;
|
||||
ОписаниеПодсистем.Колонки.Добавить("ОбъектМетаданных");
|
||||
ОписаниеПодсистем.Колонки.Добавить("Имя");
|
||||
@ -177,7 +180,7 @@
|
||||
ДобавитьВОписание(ДанныеОписания, "ХранилищаНастроек", "SettingsStorages", , , Истина);
|
||||
ДобавитьВОписание(ДанныеОписания, "ЭлементыСтиля", "StyleItems", , , Истина);
|
||||
ДобавитьВОписание(ДанныеОписания, "Языки", "Languages", , , Истина);
|
||||
|
||||
|
||||
Возврат ДанныеОписания;
|
||||
|
||||
КонецФункции
|
||||
@ -191,12 +194,12 @@
|
||||
ДобавитьВОписание(ДанныеОписания, "Пояснение", "Explanation", Истина);
|
||||
ДобавитьВОписание(ДанныеОписания, "Картинка", "Picture");
|
||||
ДобавитьВОписание(ДанныеОписания, "Состав", "Content", , "ПрочитатьСостав", Истина);
|
||||
|
||||
|
||||
Возврат ДанныеОписания;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция БазовоеОписание()
|
||||
Функция БазовоеОписание() Экспорт
|
||||
|
||||
ДанныеОписания = Новый Структура();
|
||||
ДобавитьВОписание(ДанныеОписания, "Наименование", "Name");
|
||||
@ -207,6 +210,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
|
||||
|
||||
ДанныеОписания = Новый Структура();
|
||||
|
||||
Для Каждого Стр Из ОписаниеСвойствОбъекта(ТипОбъекта) Цикл
|
||||
|
||||
ДобавитьВОписание(ДанныеОписания, Стр.Наименование, Стр.ЭлементDesigner, , Стр.МетодПреобразования);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ДанныеОписания;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ИменаТиповМетаданных() Экспорт
|
||||
@ -246,11 +263,57 @@
|
||||
Функция ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию() Экспорт
|
||||
|
||||
Возврат Новый Структура(
|
||||
"Наименование, Тип, ПутьКФайлу, ПутьККаталогу, Подсистемы, Описание, Родитель",
|
||||
"", "", "", "", Новый Массив);
|
||||
"Наименование, Тип, ПолноеНаименование, ПутьКФайлу, ПутьККаталогу, Подсистемы, Описание, Родитель",
|
||||
"", "", "", "", "", Новый Массив);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьСтруктураОбъекта(ТипОбъекта) Экспорт
|
||||
|
||||
Свойства = ОписаниеСвойствОбъекта(ТипОбъекта);
|
||||
|
||||
Если Свойства = Неопределено Тогда
|
||||
|
||||
Свойства = БазовоеОписаниеСвойствОбъекта();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЕстьЗначенияПоУмолчанию = Свойства.Колонки.Найти("ЗначениеПоУмолчанию") <> Неопределено;
|
||||
|
||||
Данные = Новый Структура();
|
||||
|
||||
Для Каждого Описание Из Свойства Цикл
|
||||
|
||||
Если ЕстьЗначенияПоУмолчанию Тогда
|
||||
|
||||
Данные.Вставить(Описание.Наименование, Описание.ЗначениеПоУмолчанию);
|
||||
|
||||
Иначе
|
||||
|
||||
Данные.Вставить(Описание.Наименование);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Данные;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
|
||||
|
||||
Возврат СвойстваОбъектов[ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта)];
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция БазовоеОписаниеСвойствОбъекта() Экспорт
|
||||
|
||||
Возврат СвойстваОбъектов["Default"];
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -259,4 +322,38 @@
|
||||
|
||||
Описание.Вставить(Имя, Новый Структура("Поле, Многоязычный, ФункцияПреобразования, Коллекция", ИмяПоля, Многоязычный, ФункцияПреобразования, Коллекция));
|
||||
|
||||
КонецПроцедуры
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗагрузитьСвойстваОбъектов()
|
||||
|
||||
ФайлОписаний = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "Макеты", "СвойстваОбъектов.md");
|
||||
|
||||
Чтение = Новый ЧтениеТекста();
|
||||
Чтение.Открыть(ФайлОписаний, КодировкаТекста.UTF8);
|
||||
|
||||
СвойстваОбъектов = Новый Соответствие();
|
||||
|
||||
Пока Истина Цикл
|
||||
|
||||
СтрокаЗаголовка = Утилиты.НайтиСледующийЗаголовокMarkdown(Чтение, "## Реквизиты");
|
||||
|
||||
Если СтрокаЗаголовка = Неопределено Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИмяТипа = СокрЛП(Сред(СтрокаЗаголовка, 13));
|
||||
ИмяТипа = ТипыОбъектовКонфигурации.НормализоватьИмя(ИмяТипа);
|
||||
|
||||
Свойства = Утилиты.ПрочитатьТаблицуMarkdown(Чтение);
|
||||
|
||||
СвойстваОбъектов.Вставить(ИмяТипа, Свойства);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Чтение.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
ЗагрузитьСвойстваОбъектов();
|
@ -24,7 +24,7 @@
|
||||
// * НаименованиеКоллекцииEng - Английское наименование типа во множественном числе
|
||||
//
|
||||
Функция ОписаниеТипаПоИмени(ИмяТипаОбъектаКонфигурации) Экспорт
|
||||
|
||||
|
||||
Возврат ХэшПоиска[ВРег(ИмяТипаОбъектаКонфигурации)];
|
||||
|
||||
КонецФункции
|
||||
@ -40,6 +40,8 @@
|
||||
//
|
||||
Функция НормализоватьИмя(ИмяТипаОбъектаКонфигурации) Экспорт
|
||||
|
||||
ЗагрузитьОписаниеТиповОбъектовКонфигурации();
|
||||
|
||||
Описание = ХэшПоиска[ВРег(ИмяТипаОбъектаКонфигурации)];
|
||||
|
||||
Если Описание = Неопределено Тогда
|
||||
@ -72,6 +74,17 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает имя типа общего модуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя типа
|
||||
//
|
||||
Функция ИмяТипаОбщийМодуль() Экспорт
|
||||
|
||||
Возврат НормализоватьИмя("ОбщийМодуль");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает имя типа конфигурации
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -105,61 +118,31 @@
|
||||
|
||||
Процедура ЗагрузитьОписаниеТиповОбъектовКонфигурации()
|
||||
|
||||
ОбъектыКонфигурации = Новый Массив();
|
||||
ХэшПоиска = Новый Соответствие();
|
||||
|
||||
Если ОбъектыКонфигурации <> Неопределено Тогда
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ФайлОписаний = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "Макеты", "ОбъектыКонфигурации.md");
|
||||
|
||||
Чтение = Новый ЧтениеТекста();
|
||||
Чтение.Открыть(ФайлОписаний, КодировкаТекста.UTF8);
|
||||
|
||||
Пока Истина Цикл // Позиционируемся на нужную строку
|
||||
Утилиты.НайтиСледующийЗаголовокMarkdown(Чтение, "## Имена");
|
||||
|
||||
ОбъектыКонфигурации = Утилиты.ПрочитатьТаблицуMarkdown(Чтение);
|
||||
|
||||
ХэшПоиска = Новый Соответствие();
|
||||
|
||||
Для Каждого СтрокаОписание Из ОбъектыКонфигурации Цикл
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
СтрокаОписание.ПорождаемыеТипы = СтрРазделить(СтрокаОписание.ПорождаемыеТипы, " ", Ложь);
|
||||
|
||||
Если Строка = Неопределено Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Строка = "## Имена" Тогда
|
||||
|
||||
Чтение.ПрочитатьСтроку(); // Пропускаем пустую строку
|
||||
Чтение.ПрочитатьСтроку(); // Пропускаем заголовок таблицы
|
||||
Чтение.ПрочитатьСтроку(); // Пропускаем заголовок таблицы
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Пока Истина Цикл
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
|
||||
Если Строка = Неопределено Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ СтрНачинаетсяС(Строка, "|") Тогда
|
||||
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Строка, "|");
|
||||
|
||||
Описание = Новый Структура("Наименование, НаименованиеКоллекции, НаименованиеEng, НаименованиеКоллекцииEng",
|
||||
СокрЛП(ЧастиСтроки[1]), СокрЛП(ЧастиСтроки[2]), СокрЛП(ЧастиСтроки[3]), СокрЛП(ЧастиСтроки[4]));
|
||||
|
||||
ОбъектыКонфигурации.Добавить(Описание);
|
||||
ХэшПоиска.Вставить(ВРег(Описание.Наименование), Описание);
|
||||
ХэшПоиска.Вставить(ВРег(Описание.НаименованиеКоллекции), Описание);
|
||||
ХэшПоиска.Вставить(ВРег(Описание.НаименованиеEng), Описание);
|
||||
ХэшПоиска.Вставить(ВРег(Описание.НаименованиеКоллекцииEng), Описание);
|
||||
ХэшПоиска.Вставить(ВРег(СтрокаОписание.Наименование), СтрокаОписание);
|
||||
ХэшПоиска.Вставить(ВРег(СтрокаОписание.НаименованиеКоллекции), СтрокаОписание);
|
||||
ХэшПоиска.Вставить(ВРег(СтрокаОписание.НаименованиеEng), СтрокаОписание);
|
||||
ХэшПоиска.Вставить(ВРег(СтрокаОписание.НаименованиеКоллекцииEng), СтрокаОписание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
@ -29,6 +29,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Записывает текст в файл
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяФайла - Строка - Путь к файлу
|
||||
// Текст - Строка - Записываемый текст
|
||||
//
|
||||
Процедура ЗаписатьФайл(ИмяФайла, Текст) Экспорт
|
||||
|
||||
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8NoBOM);
|
||||
Запись.Записать(Текст);
|
||||
|
||||
Запись.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает все необходимы каталоги по пути
|
||||
//
|
||||
// Параметры:
|
||||
@ -91,6 +106,100 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПрочитатьТаблицуMarkdown(Чтение) Экспорт
|
||||
|
||||
ЗаголовокЗагружен = Ложь;
|
||||
ТаблицаДанных = Новый ТаблицаЗначений();
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
|
||||
Пока Строка = "" Цикл
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Пока Истина Цикл
|
||||
|
||||
Если Строка = Неопределено Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ СтрНачинаетсяС(Строка, "|") Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Строка, "|");
|
||||
|
||||
Если НЕ ЗаголовокЗагружен Тогда
|
||||
|
||||
Для Инд = 1 По ЧастиСтроки.ВГраница() Цикл
|
||||
|
||||
ТаблицаДанных.Колонки.Добавить(СокрЛП(ЧастиСтроки[Инд]));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗаголовокЗагружен = Истина;
|
||||
Чтение.ПрочитатьСтроку();
|
||||
|
||||
Иначе
|
||||
|
||||
ЧастиСтроки = СтрРазделить(Строка, "|");
|
||||
|
||||
СтрокаДанных = ТаблицаДанных.Добавить();
|
||||
|
||||
Для Инд = 1 По ЧастиСтроки.ВГраница() Цикл
|
||||
|
||||
СтрокаДанных[Инд - 1] = СокрЛП(ЧастиСтроки[Инд]);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ТаблицаДанных;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НайтиСледующийЗаголовокMarkdown(Чтение, ТекстЗаголовка = Неопределено) Экспорт
|
||||
|
||||
Если ТекстЗаголовка = Неопределено Тогда
|
||||
|
||||
СтрокаПоиска = "#";
|
||||
|
||||
Иначе
|
||||
|
||||
СтрокаПоиска = ТекстЗаголовка;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Пока Истина Цикл // Позиционируемся на нужную строку
|
||||
|
||||
Строка = Чтение.ПрочитатьСтроку();
|
||||
|
||||
Если Строка = Неопределено Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНачинаетсяС(Строка, СтрокаПоиска) Тогда
|
||||
|
||||
Возврат Строка;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Служебный функционал
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
@ -127,6 +127,7 @@
|
||||
ЧастиСтроки = СтрРазделить(ПолноеИмяОбъекта, ".");
|
||||
СтрокаОбъекта.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧастиСтроки[0]);
|
||||
СтрокаОбъекта.Наименование = ЧастиСтроки[1];
|
||||
СтрокаОбъекта.ПолноеНаименование = ПолноеИмяОбъекта;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -146,6 +147,7 @@
|
||||
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область МетодыЧтения
|
||||
// Читает строку на разных языках
|
||||
//
|
||||
// Параметры:
|
||||
@ -154,9 +156,9 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка - Данные строки
|
||||
//
|
||||
Функция МногоЯзыковаяСтрока(Знач Значение) Экспорт
|
||||
Функция МногоязычнаяСтрока(Знач Значение) Экспорт
|
||||
|
||||
Регулярка = РегулярныеВыражения.МногоЯзыковаяСтрока;
|
||||
Регулярка = РегулярныеВыражения.МногоязычнаяСтрока;
|
||||
Совпадения = Регулярка.НайтиСовпадения(Значение);
|
||||
|
||||
Если Совпадения.Количество() Тогда
|
||||
@ -200,6 +202,14 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеБулево(Знач Значение) Экспорт
|
||||
|
||||
Возврат СтрСравнить(Значение, "true") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// Читает состав подсистемы
|
||||
//
|
||||
// Параметры:
|
||||
@ -264,7 +274,7 @@
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ФункцияПреобразования) И Параметр.Многоязычный Тогда
|
||||
|
||||
ФункцияПреобразования = "МногоЯзыковаяСтрока";
|
||||
ФункцияПреобразования = "МногоязычнаяСтрока";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@ -294,5 +304,5 @@
|
||||
|
||||
РегулярныеВыражения = Новый Структура();
|
||||
РегулярныеВыражения.Вставить("СвойстваОписания", Новый РегулярноеВыражение("<([a-zA-Z]+)\b[^>]*>([\s\S]*?)<\/\1>"));
|
||||
РегулярныеВыражения.Вставить("МногоЯзыковаяСтрока", Новый РегулярноеВыражение("<value>([\s\S]*)<\/value>"));
|
||||
РегулярныеВыражения.Вставить("МногоязычнаяСтрока", Новый РегулярноеВыражение("<value>([\s\S]*)<\/value>"));
|
||||
РегулярныеВыражения.Вставить("ПолучитьТип", Новый РегулярноеВыражение("<types>([\s\S]*)<\/types>"));
|
@ -161,6 +161,7 @@
|
||||
НовСтрока.Тип = ТипыОбъектовКонфигурации.НормализоватьИмя(ЧтениеXML.Имя);
|
||||
ЧтениеXML.Прочитать();
|
||||
НовСтрока.Наименование = ЧтениеXML.Значение;
|
||||
НовСтрока.ПолноеНаименование = НовСтрока.Тип + "." + НовСтрока.Наименование;
|
||||
ЧтениеXML.Прочитать();
|
||||
ЧтениеXML.Прочитать();
|
||||
|
||||
@ -180,6 +181,8 @@
|
||||
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область МетодыЧтения
|
||||
|
||||
// Читает строку на разных языках
|
||||
//
|
||||
// Параметры:
|
||||
@ -188,7 +191,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка - Данные строки
|
||||
//
|
||||
Функция МногоЯзыковаяСтрока(Знач ЧтениеXML) Экспорт
|
||||
Функция МногоязычнаяСтрока(Знач ЧтениеXML) Экспорт
|
||||
|
||||
Имя = ЧтениеXML.Имя;
|
||||
|
||||
@ -242,6 +245,14 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеБулево(Знач Значение) Экспорт
|
||||
|
||||
Возврат СтрСравнить(Значение, "true") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// Читает состав подсистемы
|
||||
//
|
||||
// Параметры:
|
||||
@ -341,7 +352,7 @@
|
||||
Параметр = Элемент.Значение;
|
||||
Если ПустаяСтрока(Параметр.ФункцияПреобразования) И Параметр.Многоязычный Тогда
|
||||
|
||||
ОбработчикиПолей.Вставить(ВРег(Параметр.Поле), "МногоЯзыковаяСтрока");
|
||||
ОбработчикиПолей.Вставить(ВРег(Параметр.Поле), "МногоязычнаяСтрока");
|
||||
|
||||
ИначеЕсли НЕ ПустаяСтрока(Параметр.ФункцияПреобразования) Тогда
|
||||
|
||||
|
5
src/Общее/Модули/ФорматыВыгрузки.os
Normal file
5
src/Общее/Модули/ФорматыВыгрузки.os
Normal file
@ -0,0 +1,5 @@
|
||||
Перем EDT Экспорт;
|
||||
Перем Конфигуратор_2_4 Экспорт;
|
||||
|
||||
EDT = "EDT";
|
||||
Конфигуратор2_4 = "Designer 2.4";
|
Loading…
x
Reference in New Issue
Block a user