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

#ONECICD-148

* Описание методов
* Немного рефакторинга
This commit is contained in:
aleksey.koryakin 2019-05-21 12:36:51 +03:00
parent 94a951caec
commit 4abcd75612
20 changed files with 401 additions and 183 deletions

View File

@ -21,10 +21,16 @@
// Программный интерфейс
///////////////////////////////////////////////////////////////////
// Устанавливает свойства расширения и подготавливает генератор
//
// Параметры:
// ИмяРасширения - Строка - Наименование расширения
// ПредставлениеРасширения - Строка - Синоним расширения
// ПрефиксРасширения - Строка - Префикс расширения
//
Процедура Инициализировать(ИмяРасширения, ПредставлениеРасширения, ПрефиксРасширения) Экспорт
ОписаниеРасширения = СтруктурыОписаний.СоздатьСтруктураОбъекта("Расширение");
ОписаниеРасширения.Наименование = ИмяРасширения;
ОписаниеРасширения = СтруктурыОписаний.СоздатьОбъект("Расширение", ИмяРасширения);
ОписаниеРасширения.Синоним = ПредставлениеРасширения;
ОписаниеРасширения.ПрефиксИмен = ПрефиксРасширения;
ОписаниеРасширения.Принадлежность = "Adopted";
@ -71,6 +77,11 @@
КонецПроцедуры
// Возвращает описание конфигурации
//
// Возвращаемое значение:
// Структура - Описание конфигурации
//
Функция ОписаниеКонфигурации() Экспорт
Возврат ОписаниеКонфигурации;
@ -87,8 +98,7 @@
Если ОписаниеОбъекта = Неопределено И ОбъектКонфигурации.Описание = Неопределено Тогда
ОбъектКонфигурации.Описание = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
ОбъектКонфигурации.Описание.Наименование = ИмяОбъекта;
ОбъектКонфигурации.Описание = СтруктурыОписаний.СоздатьОбъект(ТипОбъекта, ИмяОбъекта);
ЗаписатьОписаниеОбъекта(ОбъектКонфигурации, ОбъектКонфигурации.Описание);
ИначеЕсли ОписаниеОбъекта <> Неопределено И ОбъектКонфигурации.Описание <> ОписаниеОбъекта Тогда
@ -102,6 +112,14 @@
КонецФункции
// Добавляет объект базовой конфигурации в расширение
//
// Параметры:
// ОбъектРодительскойКонфигурации - СтрокаТаблицыЗначений - Описание объекта родительской конфигурации
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта расширения
//
Функция ПеренестиОбъектВРасширение(ОбъектРодительскойКонфигурации) Экспорт
ОбъектКонфигурации = ДобавитьОбъектКонфигурации(ОбъектРодительскойКонфигурации.Наименование, ОбъектРодительскойКонфигурации.Тип);
@ -110,7 +128,7 @@
Возврат Неопределено;
КонецЕсли;
СокращенноеОписание = СтруктурыОписаний.СоздатьСокращеннуюСтруктураОбъекта(ОбъектРодительскойКонфигурации.Тип);
СокращенноеОписание = СтруктурыОписаний.СоздатьСокращеннуюСтруктураОбъекта(ОбъектРодительскойКонфигурации.ПолноеНаименование);
Если ОбъектРодительскойКонфигурации.Описание = Неопределено Тогда
СокращенноеОписание.Наименование = ОбъектКонфигурации.Наименование;
@ -161,6 +179,12 @@
КонецПроцедуры
// Добавляет модуль конфигурации (модуль сеанса, приложения и т.д.)
//
// Параметры:
// ИмяМодуля - Строка - Тип модуля
// ИмяФайла - Строка - Имя файла содержащего текст модуля
//
Процедура ДобавитьМодульКонфигурации(ИмяМодуля, ИмяФайла) Экспорт
ИмяФайлаНазначения = СтруктураКаталоговПриемник.ИмяФайлаМодуля("Configuration", "Configuration", ИмяМодуля);

View File

@ -43,7 +43,8 @@
// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д.
//
// Параметры:
// Имя - Строка - Имя расширения
// ОписаниеРасширения - Структура - Описание расширения, наименование синоним и прочее
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт
@ -81,8 +82,9 @@
// Проверок на существование объекта нет
//
// Параметры:
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
@ -151,7 +153,8 @@
// Создает xml запись описания объекта, прописывает базовые параметры
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
// Возвращаемое значение:
// ЗаписьXML- Поток записи описания

View File

@ -41,7 +41,8 @@
// Метод создает базовое описание расширения, в которое потом можно добавлять объекты и т.д.
//
// Параметры:
// Имя - Строка - Имя расширения
// ОписаниеРасширения - Структура - Описание расширения, наименование синоним и прочее
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Функция СоздатьОписаниеРасширения(ОписаниеРасширения, ПараметрыГенерации) Экспорт
@ -70,6 +71,13 @@
КонецФункции
// Записывает свойства объекта в XML
//
// Параметры:
// Запись - ЗаписьXML - Поток записи
// ТипОбъекта - Строка - Тип объекта конфигурации
// СвойстваОбъекта - Структура - Данные объекта
//
Процедура ЗаписатьСвойства(Запись, ТипОбъекта, СвойстваОбъекта) Экспорт
Запись.ЗаписатьНачалоЭлемента("Properties");
@ -86,6 +94,7 @@
// Параметры:
// ИмяМетаданного - Строка - Имя регистрируемого метаданного, например, Пользователи
// ВидМетаданного - Строка - Вид регистрируемого метаданного, например, Catalog
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
Процедура ЗарегистрироватьОбъектВКонфигурации(ИмяМетаданного, ВидМетаданного, ПараметрыГенерации) Экспорт
@ -93,6 +102,13 @@
КонецПроцедуры
// Записывает служебную информацию об уидах платформенных типов
//
// Параметры:
// Запись - ЗаписьXML - Поток записи
// ИмяОбъекта - Строка - Имя объекта конфигурации
// ТипОбъекта - Строка - Тип объекта конфигурации
//
Процедура ЗаписатьПорождаемыеТипы(Запись, ИмяОбъекта, ТипОбъекта) Экспорт
ПорождаемыеТипы = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ПорождаемыеТипы;
@ -191,7 +207,8 @@
// Создает xml запись описания объекта, прописывает базовые параметры
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
// ТипОбъекта - Строка - Тип объекта конфигурации на английском, например, Catalog, Configuration и т.д.
// ПараметрыГенерации - Структура - Общие данные/настройки необходимые для генерации
//
// Возвращаемое значение:
// ЗаписьXML- Поток записи описания

View File

@ -14,6 +14,11 @@
// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Список предопределенных UIDов необходимых для создания файла описания
//
// Возвращаемое значение:
// Массив - Список UIDов
//
Функция ПолучитьUIDДляГенерацииРасширения() Экспорт
UIDы = Новый Массив();
@ -28,34 +33,6 @@
КонецФункции
// Закрывает запись описания объекта и всех открытых тэгов
//
// Параметры:
// Запись - ЗаписьXML - запись описания объекта
//
// Возвращаемое значение:
// Строка - XML описание объекта
//
Функция ЗакрытьЗапись(Запись) Экспорт
Для Инд = 1 По Запись.КонтекстПространствИмен.Глубина Цикл
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Возврат Запись.Закрыть();
КонецФункции
Процедура ЗаписатьЗначениеXML(Запись, Имя, Значение) Экспорт
Запись.ЗаписатьНачалоЭлемента(Имя);
Запись.ЗаписатьТекст(XMLСтрока(Значение));
Запись.ЗаписатьКонецЭлемента();
КонецПроцедуры
Функция ЗаписатьДанные(Запись, Данные, ТипОбъекта, Генератор) Экспорт
ФорматEDT = Генератор = ГенераторОписанийEDT;
@ -102,6 +79,45 @@
КонецФункции
#Область РаботаСXML
// Закрывает запись описания объекта и всех открытых тэгов
//
// Параметры:
// Запись - ЗаписьXML - запись описания объекта
//
// Возвращаемое значение:
// Строка - XML описание объекта
//
Функция ЗакрытьЗапись(Запись) Экспорт
Для Инд = 1 По Запись.КонтекстПространствИмен.Глубина Цикл
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Возврат Запись.Закрыть();
КонецФункции
// Записывает произвольное значение в XML поток
//
// Параметры:
// Запись - ЗаписьXML - Поток записи XML
// Имя - Строка - Имя реквизита, тэг
// Значение - Произвольный - Записываемое значение
//
Процедура ЗаписатьЗначениеXML(Запись, Имя, Значение) Экспорт
Запись.ЗаписатьНачалоЭлемента(Имя);
Запись.ЗаписатьТекст(XMLСтрока(Значение));
Запись.ЗаписатьКонецЭлемента();
КонецПроцедуры
#КонецОбласти
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////

View File

@ -1,5 +1,7 @@
# Объекты конфигурации
Список всех объектов конфигурации и их свойства
## Имена
| Наименование | НаименованиеКоллекции | НаименованиеEng | НаименованиеКоллекцииEng | ЕстьПодчиненные | ПорождаемыеТипы |

View File

@ -1,5 +1,15 @@
# Свойства объектов конфигурации
Свойства объектов конфигурации.
Возможные колонки:
* Наименование - Имя свойства. Обязательное.
* ЭлементEDT - Имя поля в файле описаний выгрузки EDT. Обязательное.
* ЭлементDesigner - Имя поля в файле описаний выгрузки конфигуратора. Обязательное.
* МетодПреобразования - Имя метода для кастомного чтения свойства. Не обязательное.
* ЗначениеПоУмолчанию - Строковое представление значения по-умолчанию. Не обязательное.
* ТипЗначения - Имя типа значения. Не обязательное.
## Реквизиты Default
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |

View File

@ -1,6 +1,15 @@
#Использовать "..\ГенераторОписаний"
#Использовать "..\Общее"
// Создает генератор для формирования описания расширения
//
// Параметры:
// Формат - Строка - Формат описания
// КаталогИсходниковРасширения - Строка - Каталог, в который записываются описания
//
// Возвращаемое значение:
// ГенераторРасширения - Объект для формирования описания
//
Функция СоздатьРасширение(Формат, КаталогИсходниковРасширения) Экспорт
Генератор = Новый ГенераторРасширений(Формат, КаталогИсходниковРасширения);
@ -9,9 +18,18 @@
КонецФункции
Функция ПолучитьОписаниеОбъекта(ТипОбъекта) Экспорт
// Создает структуру данных объекта
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта
// Наименование - Строка - Имя объекта
//
// Возвращаемое значение:
// Структура - Пустышка описания объекта
//
Функция ПолучитьОписаниеОбъекта(ТипОбъекта, Наименование = Неопределено) Экспорт
ОписаниеОбъекта = СтруктурыОписаний.СоздатьСтруктураОбъекта(ТипОбъекта);
ОписаниеОбъекта = СтруктурыОписаний.СоздатьОбъект(ТипОбъекта, Наименование);
Возврат ОписаниеОбъекта;

View File

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

View File

@ -8,12 +8,46 @@
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Формирует параметры для чтения описания объекта конкретного типа
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта
// Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
//
// Возвращаемое значение:
// Структура - Параметры для чтения описания объекта
// * Тип - Строка - Имя типа
// * ЕстьПодчиненные - Булево - Тип содержит подчиненные элементы
// * ЕстьЗначенияПоУмолчанию - Булево - У свойств есть значения по-умолчанию
// * Свойства - Массив - Коллекция свойств объекта. Структура свойства
// * Наименование - Имя свойства
// * МетодПреобразования - Имя метода чтения
// * Поле - Имя тэга файла описаний
// * ЭтоКоллекция - Содержит несколько значений
//
Функция ПараметрыЧтения(ТипОбъекта, Формат) Экспорт
Возврат ПараметрыСериализации(ТипОбъекта, Формат, Истина);
КонецФункции // ПараметрыЧтения
// Формирует параметры для записи описания объекта конкретного типа
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта
// Формат - Строка - Формат выгрузки. Значение перечисления ФорматыВыгрузки
//
// Возвращаемое значение:
// Структура - Параметры для записи описания объекта
// * Тип - Строка - Имя типа
// * ЕстьПодчиненные - Булево - Тип содержит подчиненные элементы
// * ЕстьЗначенияПоУмолчанию - Булево - У свойств есть значения по-умолчанию
// * Свойства - Массив - Коллекция свойств объекта. Структура свойства
// * Наименование - Имя свойства
// * МетодПреобразования - Имя метода записи
// * Поле - Имя тэга файла описаний
// * ЭтоКоллекция - Содержит несколько значений
//
Функция ПараметрыЗаписи(ТипОбъекта, Формат) Экспорт
Возврат ПараметрыСериализации(ТипОбъекта, Формат, Ложь);

View File

@ -13,6 +13,19 @@
#Область КоллекцииОбъектов
// Таблица объектов конфигурации
//
// Возвращаемое значение:
// ТаблицаЗначений -
// * Наименование - Наименование объекта конфигурации
// * Тип - Тип объекта конфигурации
// * ПолноеНаименование - Полное наименование объекта конфигурации. Тип + "." + Наименование
// * ПутьКФайлу - Имя файла описания
// * ПутьККаталогу - Каталог файлов описаний и прочих данных
// * Подсистемы - Коллекция подсистем, в которых был замечен объект
// * Описание - Структура описания объекта
// * Родитель - Ссылка на родительский описание родительского объекта. Если объект подчиненн.
//
Функция ТаблицаОписанияОбъектовКонфигурации() Экспорт
ОбъектыКонфигурации = Новый ТаблицаЗначений;
@ -29,6 +42,19 @@
КонецФункции
// Таблица модулей конфигурации
//
// Возвращаемое значение:
// ТаблицаЗначений -
// * ТипМодуля - Тип модуля. Значение перечисления ТипМодуля
// * Родитель - Объект конфигурации, которому принадлежит модель
// * ПутьКФайлу - Имя файла модуля
// * НаборБлоков - Структура модуля. Области, методы, операторы...
// * Содержимое - Текст модуля
// * РодительФорма - Описание формы, которой принадлежит модуль
// * РодительКоманда - Описание команды, которой принадлежит модуль
// * ОписаниеМодуля - Структура свойств модуля, актуально для общих модулей
//
Функция ТаблицаОписанияМодулей() Экспорт
МодулиКонфигурации = Новый ТаблицаЗначений;
@ -45,6 +71,19 @@
КонецФункции
// Таблица соответствия подсистем и объектов включенных в них
//
// Возвращаемое значение:
// ТаблицаЗначений -
// * ОбъектМетаданных - Полное имя объекта конфигурации
// * Имя - Имя подсистемы с учетом вложенности. ИмяРодительскойПодсистемы.ИмяПодсистемы
// * Представление - Синоним подсистемы с учетом вложенности. СинонимРодительскойПодсистемы.СинонимПодсистемы
// * ПодсистемаОписание - Комментарий подсистемы
// * Визуальная - Подсистема выведена в интерфейс конфигурации
// * Родитель - Описание родительской подсистемы
// * ПредставлениеКратко - Синоним подсистемы без иерархии
// * ИмяКратко - Имя подсистемы без иерархии
//
Функция ТаблицаОписанияПодсистем() Экспорт
ОписаниеПодсистем = Новый ТаблицаЗначений;
@ -63,6 +102,11 @@
#КонецОбласти
// <Описание функции>
//
// Возвращаемое значение:
// <Тип.Вид> - <описание возвращаемого значения>
//
Функция ОписаниеОбъектаКонфигурацииЗначенияПоУмолчанию() Экспорт
Возврат Новый Структура(
@ -71,7 +115,31 @@
КонецФункции
Функция СоздатьСтруктураОбъекта(ТипОбъекта) Экспорт
// Создает пустышку описания объекта
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта или полное наименование (Тип.Наименование)
// Наименование - Строка - Имя объекта.
//
// Возвращаемое значение:
// Структура - Данные описания объекта
//
Функция СоздатьОбъект(Знач ТипОбъекта, Знач Наименование = Неопределено) Экспорт
Если Наименование = Неопределено
И СтрНайти(ТипОбъекта, ".")
И ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(Лев(ТипОбъекта, СтрНайти(ТипОбъекта, "."))) <> Неопределено Тогда
ТипОбъекта = Лев(ТипОбъекта, СтрНайти(ТипОбъекта, "."));
Наименование = Сред(ТипОбъекта, Лев(ТипОбъекта, СтрНайти(ТипОбъекта, ".")) + 1);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Наименование) Тогда
ВызватьИсключение "Не указано наименование создаваемого объекта. Имя - обязательный атрибут";
КонецЕсли;
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
@ -100,12 +168,38 @@
Данные.Вставить("Подчиненные", Новый Массив());
КонецЕсли;
Данные.Наименование = Наименование;
Возврат Данные;
КонецФункции
Функция СоздатьСокращеннуюСтруктураОбъекта(ТипОбъекта) Экспорт
// Создает минимальное описание объекта
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта или полное наименование (Тип.Наименование)
// Наименование - Строка - Имя объекта.
//
// Возвращаемое значение:
// Структура - минимальное описание объекта
//
Функция СоздатьСокращеннуюСтруктураОбъекта(Знач ТипОбъекта, Знач Наименование = Неопределено) Экспорт
Если Наименование = Неопределено
И СтрНайти(ТипОбъекта, ".")
И ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(Лев(ТипОбъекта, СтрНайти(ТипОбъекта, ".") - 1)) <> Неопределено Тогда
ТипОбъекта = Лев(ТипОбъекта, СтрНайти(ТипОбъекта, ".") - 1);
Наименование = Сред(ТипОбъекта, СтрНайти(ТипОбъекта, ".") + 1);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Наименование) Тогда
ВызватьИсключение "Не указано наименование создаваемого объекта. Имя - обязательный атрибут";
КонецЕсли;
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
@ -121,6 +215,14 @@
КонецФункции
// Метаданные объекта конфигурации
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации
//
// Возвращаемое значение:
// Структура - Описание структуры и свойств объекта конфигурации
//
Функция ОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
Если ПолученныеОписанияОбъектов[ТипОбъекта] <> Неопределено Тогда
@ -167,16 +269,16 @@
КонецФункции
Функция БазовоеОписаниеСвойствОбъекта() Экспорт
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
Функция БазовоеОписаниеСвойствОбъекта()
Возврат СвойстваОбъектов["Default"];
КонецФункции
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
Процедура ЗагрузитьСвойстваОбъектов()
ФайлОписаний = ОбъединитьПути(Утилиты.КаталогМакеты(), "СвойстваОбъектов.md");

View File

@ -18,6 +18,14 @@
///////////////////////////////////////////////////////////////////////////////////////////////
// Определяет тип модуля по имени файла
//
// Параметры:
// ПолноеИмяФайла - Строка - Имя файла
//
// Возвращаемое значение:
// Строка - Тип модуля
//
Функция ТипМодуляПоИмениФайла(ПолноеИмяФайла) Экспорт
Файл = Новый Файл(ПолноеИмяФайла);
@ -79,9 +87,17 @@
КонецФункции
// Определяет относится ли модуль к форме
//
// Параметры:
// ТипПереданногоМодуля - Строка - Значение перечисления ТипыМодулей
//
// Возвращаемое значение:
// Булево - Признак принадлежности модуля к форме
//
Функция ЭтоМодульФормы(ТипПереданногоМодуля) Экспорт
Возврат ТипПереданногоМодуля = ТипМодуля.МодульУправляемойФормы ИЛИ ТипПереданногоМодуля = ТипМодуля.МодульОбычнойФормы;
Возврат ТипПереданногоМодуля = ТипыМодуля.МодульУправляемойФормы ИЛИ ТипПереданногоМодуля = ТипыМодуля.МодульОбычнойФормы;
КонецФункции

View File

@ -103,6 +103,11 @@
КонецФункции
// Возвращает имя типа плана обмена
//
// Возвращаемое значение:
// Строка - Имя типа
//
Функция ИмяТипаПланОбмена() Экспорт
Возврат НормализоватьИмя("ПланОбмена");

View File

@ -106,6 +106,14 @@
КонецФункции
// Считывает таблицу из файла Markdown
//
// Параметры:
// Чтение - ЧтениеТекст - Поток чтения
//
// Возвращаемое значение:
// ТаблицаЗначений- Считанные данные
//
Функция ПрочитатьТаблицуMarkdown(Чтение) Экспорт
ЗаголовокЗагружен = Ложь;
@ -168,6 +176,15 @@
КонецФункции
// Выполняет поиск заголовка по файлу описаний Markdown
//
// Параметры:
// Чтение - ЧтениеТекст - Поток чтения
// ТекстЗаголовка - Строка - Текст заголовка
//
// Возвращаемое значение:
// Строка - Текст найденного заголовка
//
Функция НайтиСледующийЗаголовокMarkdown(Чтение, ТекстЗаголовка = Неопределено) Экспорт
Если ТекстЗаголовка = Неопределено Тогда
@ -200,6 +217,11 @@
КонецФункции
// Каталог макетов приложения
//
// Возвращаемое значение:
// Строка - Путь до макетов
//
Функция КаталогМакеты() Экспорт
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", "Макеты");

View File

@ -1,5 +1,13 @@
///////////////////////////////////////////////////////////////////////////////
//
// Перечисление, форматы выгрузки исходников конфигураций
//
///////////////////////////////////////////////////////////////////////////////
Перем EDT Экспорт;
Перем Конфигуратор_8_3_10 Экспорт;
///////////////////////////////////////////////////////////////////////////////
EDT = "EDT";
Конфигуратор_8_3_10 = "Designer 8.3.10";

View File

@ -140,7 +140,7 @@
СтрокаМодуль.Содержимое = СодержимоеМодуля.Содержимое;
СтрокаМодуль.НаборБлоков = СодержимоеМодуля.БлокиМодуля;
Если СтрокаМодуль.ТипМодуля = ТипМодуля.ОбщийМодуль Тогда
Если СтрокаМодуль.ТипМодуля = ТипыМодуля.ОбщийМодуль Тогда
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(СтрокаМодуль.Родитель.ПутьКФайлу);
@ -187,6 +187,15 @@
КонецФункции
// Ищет описание объекта по имени и типу
//
// Параметры:
// ИмяОбъекта - Строка - Наименование или полное наименование объекта
// ТипОбъекта - Строка - Тип объекта
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Строка описания объекта конфигурации
//
Функция ОписаниеОбъекта(ИмяОбъекта, ТипОбъекта = Неопределено) Экспорт
Если ТипОбъекта = Неопределено И СтрНайти(ИмяОбъекта, ".") Тогда
@ -201,17 +210,28 @@
КонецФункции
// Формат выгрузки исходников
//
// Возвращаемое значение:
// Строка - Значение перечисления ФорматыВыгрузки
//
Функция ФорматВыгрузки() Экспорт
Возврат СтруктураКаталогов.ФорматВыгрузки();
КонецФункции
// Читает описание объекта конфигурации
//
// Параметры:
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Строка описания объекта конфигурации
//
Процедура ПрочитатьОписаниеОбъекта(ОбъектКонфигурации) Экспорт
ОбъектКонфигурации.Описание = ПрочитатьФайлОписанияОбъекта(ОбъектКонфигурации.ПутьКФайлу, ОбъектКонфигурации.Тип);
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////
@ -304,29 +324,29 @@
"ПутьКФайлу, ТипМодуля, ОписаниеМодуля, Родитель, РодительФорма, РодительКоманда, НаборБлоков, Содержимое",
"", "", Новый Структура, Неопределено, Неопределено, Неопределено, Неопределено, Неопределено);
ТипЭтогоМодуля = ТипМодуля.ТипМодуляПоИмениФайла(ИмяФайлаМодуля);
ТипЭтогоМодуля = ТипыМодуля.ТипМодуляПоИмениФайла(ИмяФайлаМодуля);
Если Не ПустаяСтрока(ТипЭтогоМодуля) Тогда
ФормаОбъекта = Неопределено;
КомандаОбъекта = Неопределено;
Если ТипЭтогоМодуля = ТипМодуля.МодульОбъекта
ИЛИ ТипЭтогоМодуля = ТипМодуля.МодульМенеджера
ИЛИ ТипЭтогоМодуля = ТипМодуля.ОбщийМодуль
ИЛИ ТипЭтогоМодуля = ТипМодуля.МодульУправляемогоПриложения
ИЛИ ТипЭтогоМодуля = ТипМодуля.МодульСеанса
ИЛИ ТипЭтогоМодуля = ТипМодуля.МодульВнешнегоСоединения
ИЛИ ТипЭтогоМодуля = ТипМодуля.МодульОбычногоПриложения Тогда
Если ТипЭтогоМодуля = ТипыМодуля.МодульОбъекта
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульМенеджера
ИЛИ ТипЭтогоМодуля = ТипыМодуля.ОбщийМодуль
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульУправляемогоПриложения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульСеанса
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульВнешнегоСоединения
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульОбычногоПриложения Тогда
ИначеЕсли ТипМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
ИначеЕсли ТипыМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
ФормаОбъекта = ОписаниеКонфигурации.ФормыКонфигурации.Добавить();
ФормаОбъекта.Родитель = ОбъектКонфигурации;
ФормаОбъекта.ЭтоУправляемаяФорма = ТипЭтогоМодуля = ТипМодуля.МодульУправляемойФормы;
ФормаОбъекта.ЭтоУправляемаяФорма = ТипЭтогоМодуля = ТипыМодуля.МодульУправляемойФормы;
ФормаОбъекта.Наименование = ПолучитьИмяФормыИзИмениФайлаМодуля(ИмяФайлаМодуля);
ИначеЕсли ТипЭтогоМодуля = ТипМодуля.МодульКоманды Тогда
ИначеЕсли ТипЭтогоМодуля = ТипыМодуля.МодульКоманды Тогда
КомандаОбъекта = ОписаниеКонфигурации.КомандыКонфигурации.Добавить();
КомандаОбъекта.Родитель = ОбъектКонфигурации;
@ -492,9 +512,12 @@
Для Каждого ПолноеИмяПодсистемы Из СвойстваОписания.Подчиненные Цикл
ИмяПодсистемы = СтрРазделить(ПолноеИмяПодсистемы, ".")[1];
ВложеннаяПодсистема = ОписаниеКонфигурации.ОбъектыКонфигурации.Добавить();
ВложеннаяПодсистема.Тип = ТипПодсистема;
ВложеннаяПодсистема.Наименование = ОбъектКонфигурации.Наименование + "." + СтрРазделить(ПолноеИмяПодсистемы, ".")[1];
ВложеннаяПодсистема.Наименование = ОбъектКонфигурации.Наименование + "." + ИмяПодсистемы;
ВложеннаяПодсистема.ПолноеНаименование = СтрШаблон("%1.%2", ТипПодсистема, ИмяПодсистемы);
ВложеннаяПодсистема.Родитель = ОбъектКонфигурации;
ПрочитатьПодсистему(ОписаниеПодсистем, ВложеннаяПодсистема, Визуальная, ОбъектКонфигурации, ЭтаПодсистема)

View File

@ -43,13 +43,13 @@
Если НЕ ЭтоКонецБлока Тогда
НовыйБлок = ТекущийБлок;
Если НовыйБлок = ТипБлоковМодуля.ОписаниеПеременной Тогда
Если НовыйБлок = ТипыБлоковМодуля.ОписаниеПеременной Тогда
УдалитьКомментарийИзСтроки(СтрокаМодуля);
ЭтоКонецБлока = СтрНайти(СтрокаМодуля, ";") > 0;
ИначеЕсли НовыйБлок = ТипБлоковМодуля.ЗаголовокПроцедуры
ИЛИ НовыйБлок = ТипБлоковМодуля.ЗаголовокФункции Тогда
ИначеЕсли НовыйБлок = ТипыБлоковМодуля.ЗаголовокПроцедуры
ИЛИ НовыйБлок = ТипыБлоковМодуля.ЗаголовокФункции Тогда
УдалитьКомментарийИзСтроки(СтрокаМодуля);
ПозицияСкобки = СтрНайти(СтрокаМодуля, ")") > 0;
@ -64,7 +64,7 @@
ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "#ОБЛАСТЬ")
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "// #ОБЛАСТЬ") Тогда
НовыйБлок = ТипБлоковМодуля.НачалоОбласти;
НовыйБлок = ТипыБлоковМодуля.НачалоОбласти;
ЭтоКонецБлока = Истина;
Если СтрНачинаетсяС(СтрокаМодуля, "//") Тогда
@ -76,7 +76,7 @@
ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "#КОНЕЦОБЛАСТИ")
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "// #КОНЕЦОБЛАСТИ") Тогда
НовыйБлок = ТипБлоковМодуля.КонецОбласти;
НовыйБлок = ТипыБлоковМодуля.КонецОбласти;
ЭтоКонецБлока = Истина;
Если СтрНачинаетсяС(СтрокаМодуля, "//") Тогда
@ -87,17 +87,17 @@
ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "//") Тогда
НовыйБлок = ТипБлоковМодуля.Комментарий;
НовыйБлок = ТипыБлоковМодуля.Комментарий;
ЭтоКонецБлока = Истина;
ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "&") Тогда
НовыйБлок = ТипБлоковМодуля.ДирективаКомпиляции;
НовыйБлок = ТипыБлоковМодуля.ДирективаКомпиляции;
ЭтоКонецБлока = Истина;
ИначеЕсли СтрНачинаетсяС(СтрокаМодуля, "ПЕРЕМ") Тогда
НовыйБлок = ТипБлоковМодуля.ОписаниеПеременной;
НовыйБлок = ТипыБлоковМодуля.ОписаниеПеременной;
УдалитьКомментарийИзСтроки(СтрокаМодуля);
ЭтоКонецБлока = СтрНайти(СтрокаМодуля, ";") > 0;
@ -108,7 +108,7 @@
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "ФУНКЦИЯ")
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "FUNCTION") Тогда
НовыйБлок = ?(СтрНачинаетсяС(СтрокаМодуля, "ПРОЦЕДУРА"), ТипБлоковМодуля.ЗаголовокПроцедуры, ТипБлоковМодуля.ЗаголовокФункции);
НовыйБлок = ?(СтрНачинаетсяС(СтрокаМодуля, "ПРОЦЕДУРА"), ТипыБлоковМодуля.ЗаголовокПроцедуры, ТипыБлоковМодуля.ЗаголовокФункции);
УдалитьКомментарийИзСтроки(СтрокаМодуля);
ПозицияСкобки = СтрНайти(СтрокаМодуля, ")");
@ -118,18 +118,18 @@
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦФУНКЦИИ")
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "ENDFUNCTION") Тогда
НовыйБлок = ?(СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦПРОЦЕДУРЫ"), ТипБлоковМодуля.ОкончаниеПроцедуры, ТипБлоковМодуля.ОкончаниеФункции);
НовыйБлок = ?(СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦПРОЦЕДУРЫ"), ТипыБлоковМодуля.ОкончаниеПроцедуры, ТипыБлоковМодуля.ОкончаниеФункции);
ЭтоКонецБлока = Истина;
УдалитьКомментарийИзСтроки(СтрокаМодуля);
ИначеЕсли ПустаяСтрока(СтрокаМодуля) И ТекущийБлок <> ТипБлоковМодуля.Операторы Тогда
ИначеЕсли ПустаяСтрока(СтрокаМодуля) И ТекущийБлок <> ТипыБлоковМодуля.Операторы Тогда
НовыйБлок = ТипБлоковМодуля.ПустаяСтрока;
НовыйБлок = ТипыБлоковМодуля.ПустаяСтрока;
ЭтоКонецБлока = Истина;
Иначе
НовыйБлок = ТипБлоковМодуля.Операторы;
НовыйБлок = ТипыБлоковМодуля.Операторы;
ЭтоКонецБлока = Истина;
КонецЕсли;
@ -392,20 +392,20 @@
КонецЕсли;
Если Блок.ТипБлока = ТипБлоковМодуля.ПустаяСтрока Тогда
Если Блок.ТипБлока = ТипыБлоковМодуля.ПустаяСтрока Тогда
Продолжить;
КонецЕсли;
Если Блок.ТипБлока <> ТипБлоковМодуля.Комментарий Тогда
Если Блок.ТипБлока <> ТипыБлоковМодуля.Комментарий Тогда
// если комментарий не первый, значит уже и нет смысла искать описания
НазначениеМодуляПрошли = Истина;
КонецЕсли;
Если Блок.ТипБлока = ТипБлоковМодуля.Комментарий Тогда
Если Блок.ТипБлока = ТипыБлоковМодуля.Комментарий Тогда
Если НЕ НазначениеМодуляПрошли Тогда
@ -413,7 +413,7 @@
НазначениеМодуляПрошли = Истина;
Назначение = ПолучитьНазначениеБлока(Файл, Блок.НачальнаяСтрока, Блок.КонечнаяСтрока);
Блок.ТипБлока = ТипБлоковМодуля.Описание;
Блок.ТипБлока = ТипыБлоковМодуля.Описание;
ОписаниеМодуля.ЕстьНазначениеМодуля = НЕ ПустаяСтрока(Назначение);
ОписаниеМодуля.Назначение = Назначение;
@ -423,19 +423,19 @@
КонецЕсли;
ИначеЕсли Блок.ТипБлока = ТипБлоковМодуля.НачалоОбласти Тогда
ИначеЕсли Блок.ТипБлока = ТипыБлоковМодуля.НачалоОбласти Тогда
СтрокаМодуля = СокрЛП(Файл.ПолучитьСтроку(Блок.НачальнаяСтрока));
ИмяОбласти = СокрЛП(Сред(СтрокаМодуля, СтрДлина("#Область") + 1));
ЭтоРаздел = Ложь;
Если Модуль.ТипМодуля = ТипМодуля.ОбщийМодуль Тогда
Если Модуль.ТипМодуля = ТипыМодуля.ОбщийМодуль Тогда
ЭтоРаздел = ТипОбласти.РазделыОбщегоМодуля.Найти(ИмяОбласти) <> Неопределено;
ЭтоРаздел = ТипыОбласти.РазделыОбщегоМодуля.Найти(ИмяОбласти) <> Неопределено;
ИначеЕсли Модуль.ТипМодуля = ТипМодуля.МодульМенеджера Тогда
ИначеЕсли Модуль.ТипМодуля = ТипыМодуля.МодульМенеджера Тогда
ЭтоРаздел = ТипОбласти.РазделыМодуляМенеджера.Найти(ИмяОбласти) <> Неопределено;
ЭтоРаздел = ТипыОбласти.РазделыМодуляМенеджера.Найти(ИмяОбласти) <> Неопределено;
КонецЕсли;
@ -472,7 +472,7 @@
Блок.ОписаниеБлока.Вставить("НазначениеРаздела", Назначение);
Если НЕ ПустаяСтрока(Назначение) Тогда
ПоследнийБлокКомментария.ТипБлока = ТипБлоковМодуля.Описание;
ПоследнийБлокКомментария.ТипБлока = ТипыБлоковМодуля.Описание;
КонецЕсли;
@ -487,7 +487,7 @@
КонецЕсли;
ИначеЕсли Блок.ТипБлока = ТипБлоковМодуля.КонецОбласти Тогда
ИначеЕсли Блок.ТипБлока = ТипыБлоковМодуля.КонецОбласти Тогда
ПоследнийБлокКомментария = Неопределено;
@ -507,8 +507,8 @@
КонецЕсли;
ИначеЕсли Блок.ТипБлока = ТипБлоковМодуля.ЗаголовокПроцедуры
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.ЗаголовокФункции Тогда
ИначеЕсли Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокПроцедуры
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокФункции Тогда
Блок.ОписаниеБлока.Вставить("ИмяРаздела", ТекущийРаздел);
Если Области.Количество() Тогда
@ -527,7 +527,7 @@
// получим имя метода
Заголовок = СтрЗаменить(Блок.Содержимое, Символы.ПС, " ");
Заголовок = СокрЛП(СтрЗаменить(Заголовок, Символы.Таб, " "));
Если Блок.ТипБлока = ТипБлоковМодуля.ЗаголовокПроцедуры Тогда
Если Блок.ТипБлока = ТипыБлоковМодуля.ЗаголовокПроцедуры Тогда
Заголовок = СокрЛП(Сред(Заголовок, СтрДлина("Процедура") + 1))
@ -567,7 +567,7 @@
СтрокаКомментария = СокрЛП(Сред(СтрокаКомментария, 3));
Если СтрНайти(СтрокаКомментария, ИмяМетода) Тогда
ПоследнийБлокКомментария.ТипБлока = ТипБлоковМодуля.Описание;
ПоследнийБлокКомментария.ТипБлока = ТипыБлоковМодуля.Описание;
Назначение = "";
НомерСтрокиПараметры = Неопределено;
НомерСтрокиВозвращаемоеЗначение = Неопределено;
@ -772,8 +772,8 @@
КонецЕсли;
ИначеЕсли Блок.ТипБлока = ТипБлоковМодуля.ОкончаниеПроцедуры
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.ОкончаниеФункции Тогда
ИначеЕсли Блок.ТипБлока = ТипыБлоковМодуля.ОкончаниеПроцедуры
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ОкончаниеФункции Тогда
МетодОткрыт = Ложь;
ПоследнийБлокКомментария = Неопределено;
@ -801,11 +801,11 @@
Для Ит = 0 По КоличествоБлоков Цикл
Блок = БлокиМодуля[КоличествоБлоков - Ит];
Если Блок.ТипБлока = ТипБлоковМодуля.ОкончаниеПроцедуры
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.ОкончаниеФункции
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.КонецОбласти
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.Описание
ИЛИ Блок.ТипБлока = ТипБлоковМодуля.ПустаяСтрока Тогда
Если Блок.ТипБлока = ТипыБлоковМодуля.ОкончаниеПроцедуры
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ОкончаниеФункции
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.КонецОбласти
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.Описание
ИЛИ Блок.ТипБлока = ТипыБлоковМодуля.ПустаяСтрока Тогда
БлокиМодуля.Удалить(Блок);

View File

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

View File

@ -48,11 +48,6 @@
Генератор = ГенераторBSL.СоздатьРасширение(ФорматыВыгрузки.Конфигуратор_8_3_10, КаталогРасширения);
Генератор.Инициализировать("Simple", "Простое расширение", "smpl_");
ПараметрыОбщегоМодуля = ГенераторBSL.ПолучитьОписаниеОбъекта("ОбщийМодуль");
ПараметрыОбщегоМодуля.Наименование = "Логирование";
ПараметрыОбщегоМодуля.Сервер = Истина;
ПараметрыОбщегоМодуля.Клиент = Истина;
Парсер = ПарсерBSL.ПарсерКонфигурации(КаталогКонфигурации);
Парсер.ПрочитатьСтруктуруКонфигурации();
@ -134,7 +129,7 @@
Генератор.Зафиксировать();
КонецПроцедуры // Введите имя процедуры()
КонецПроцедуры
Функция КаталогФикстур()