An open API service indexing awesome lists of open source software.

https://github.com/autumn-library/autumn-annotation-types

Набор аннотаций ОСени, для удобной инициализации стандартных типов
https://github.com/autumn-library/autumn-annotation-types

autumn hacktoberfest oscript

Last synced: 4 months ago
JSON representation

Набор аннотаций ОСени, для удобной инициализации стандартных типов

Awesome Lists containing this project

README

          

# autumn-annotation-types - набор аннотаций ОСени, для удобной инициализации стандартных типов.

## Что это и зачем ?

Очень часто приходится писать вот такой код:

```bsl
Перем МойМассив;

&Желудь
Процедура ПриСозданииОбъекта()
МойМассив = Новый Массив;
КонецПроцедуры
```

Мы обозначаем переменные(поля класса), и где-то из конструктора инициализируем значения. Данная библиотека содержит набор аннотаций, которые помогают сократить написание количество кода, и его читаемость. Благодаря этим аннотациям ОСень берет на себя всю работу по инициализации полей.

```bsl
&Массив
Перем МойМассив;

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
```

## Поддерживаемые типы

### Массив

```&Массив(Размер)``` - В поле внедряется новый массив. Параметр ```Размер``` необязательный, позволяет задать размер массива.

Допускается добавление элементов аннотацией ```Элемент(ЗначениеЭлемента)```

Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную

```bsl
&Фиксированный
&Массив
&Элемент("Элемент массива")
Перем ФиксированныйМассив Экспорт;
```

### Соответствие

```&Соответствие``` - В поле внедряется новое соответствие.

Допускается вставка элементов через аннотацию ```&КлючИЗначение("ИмяКлюча", Значение)```

Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную

```bsl
&Соответствие
&Фиксированный
&КлючИЗначение("Ключ", 1)
Перем ФиксированноеСоответствие Экспорт;
```

### Структура

```&Структура(Ключи)``` - В поле внедряется новая структура. Параметр ```Ключи``` необязательный. Строка, содержащая список ключей структуры, разделенные запятой "```,```"

Допускается вставка элементов через аннотацию ```&КлючИЗначение("ИмяКлюча", Значение)```

Добавление аннотации ```&Фиксированный``` превращает коллекцию в фиксированную

```bsl
&Структура
&Фиксированный
&КлючИЗначение("Ключ", 1)
Перем ФиксированнаяСтруктура Экспорт;
```

### ТаблицаЗначений

```&ТаблицаЗначений(Колонки)``` - В поле внедряется новая таблица значений. Параметр ```Колонки``` необязательный. Строка, содержащая список имен колонок, разделенных запятой "```,```"

В конструкторе аннотации можно задать индексы таблицы значений:
```bsl
&ТаблицаЗначений(
Колонки = "Колонка1, Колонка2",
Индекс = "Колонка1, Колонка2",
Индекс = "Колонка1"
)
```

Альтернативный способ добавления колонки, через аннотацию ```&Колонка("ИмяКолонки")```.

Есть возможность добавить строки таблицы через аннотацию ```&СтрокаТаблицы(ИмяКолонки1 = "Значение 1", ИмяКолонки2 = "Еще значение")```.

```bsl
&ТаблицаЗначений
&Колонка("ДеньНедели")
&Колонка("НомерДня")
&СтрокаТаблицы(ДеньНедели = "Понедельник", НомерДня = 1)
&СтрокаТаблицы(ДеньНедели = "Вторник", НомерДня = 2)
Перем ЗаполненнаяТаблица Экспорт;
```

## Подключение и использование

В точке входа вашего приложения подключить библиотеку

```bsl
#Использовать autumn
#Использовать autumn-annotation-types

Поделка = Новый Поделка();
. . .
```

Пример внедрения типов в поля желудя:

```bsl

&Массив
Перем ПустойМассив Экспорт;

&ТаблицаЗначений("Колонка1, Колонка2")
&Колонка("Колонка2")
&Колонка("Колонка3")
Перем ТЗ Экспорт;

&ТаблицаЗначений
&Колонка("ДеньНедели")
&Колонка("НомерДня")
&СтрокаТаблицы(ДеньНедели = "Понедельник", НомерДня = 1)
&СтрокаТаблицы(ДеньНедели = "Вторник", НомерДня = 2)
Перем ЗаполненнаяТаблица Экспорт;

&ТаблицаЗначений
Перем ТЗБезКолонок Экспорт;

&Соответствие
Перем Соответствие Экспорт;

&Соответствие
&КлючИЗначение("Ключ1", 1)
&КлючИЗначение("Ключ2", "2")
Перем ЗаполненноеСоответствие Экспорт;

&Структура("Ключ1, Ключ2")
&КлючИЗначение("Ключ2", 2)
&КлючИЗначение("Ключ3", "3")
Перем СтруктураСКлючами Экспорт;

&Структура
Перем ПустаяСтруктура Экспорт;

Перем МассивСРазмером1 Экспорт;

&Массив(1)
&Элемент("а")
&Элемент(1)
Перем ЗаполненныйМассив Экспорт;

&Фиксированный
&Массив
&Элемент(1)
Перем ФиксированныйМассив Экспорт;

&Структура
&Фиксированный
&КлючИЗначение("Ключ", 1)
Перем ФиксированнаяСтруктура Экспорт;

&Соответствие
&Фиксированный
&КлючИЗначение("Ключ", 1)
Перем ФиксированноеСоответствие Экспорт;

&Желудь
Процедура ПриСозданииОбъекта(&Массив(1) _Массив)
МассивСРазмером1 = _Массив;
КонецПроцедуры
```