Описание публичного интерфейса библиотеки
========================
<!-- TOC insertAnchor:true -->

- [Класс РефлекторОбъекта:](#класс-рефлекторобъекта)
    - [Публичные методы и функции](#публичные-методы-и-функции)
        - [УстановитьОбъект](#установитьобъект)
        - [ЕстьФункция](#естьфункция)
        - [ЕстьПроцедура](#естьпроцедура)
        - [ОбязательнаяФункция](#обязательнаяфункция)
        - [ОбязательнаяПроцедура](#обязательнаяпроцедура)
        - [РеализуетИнтерфейс](#реализуетинтерфейс)
        - [РеализованныеМетодыИнтерфейса](#реализованныеметодыинтерфейса)
        - [ЕстьСвойство](#естьсвойство)
        - [ПолучитьТаблицуМетодов](#получитьтаблицуметодов)
        - [ПолучитьТаблицуСвойств](#получитьтаблицусвойств)
- [Класс ИнтерфейсОбъекта:](#класс-интерфейсобъекта)
    - [Публичные методы и функции](#публичные-методы-и-функции-1)
        - [Реализован](#реализован)
        - [РеализованныеМетоды](#реализованныеметоды)
        - [ИзОбъекта](#изобъекта)
        - [ИзИнтерфейса](#изинтерфейса)
        - [ПолучитьКартуИнтерфейса](#получитькартуинтерфейса)
        - [ПроцедураИнтерфейса](#процедураинтерфейса)
        - [П](#п)
        - [ФункцияИнтерфейса](#функцияинтерфейса)
        - [Ф](#ф)

<!-- /TOC -->


<a id="markdown-класс-рефлекторобъекта" name="класс-рефлекторобъекта"></a>
### Класс РефлекторОбъекта:
> Основной класс работы с встроенным объектом `Рефлектор`

При создании объекта, необходимо передать 1 параметры - объект/класс с которым будет работать `Рефлектор`

<a id="markdown-публичные-методы-и-функции" name="публичные-методы-и-функции"></a>
#### Публичные методы и функции

<a id="markdown-установитьобъект" name="установитьобъект"></a>
##### УстановитьОбъект

```bsl
// Устанавливает объект проверки для рефлектора
//
// Параметры:
//   НовыйОбъектПроверки - Объект, Произвольный - объект для проверки
//
```

<a id="markdown-естьфункция" name="естьфункция"></a>
##### ЕстьФункция

```bsl
// Выполняет проверку на наличии у объекта функции
//
// Параметры:
//   ИмяФункции - Строка - имя проверяемой функции
//   КоличествоПараметров - Число - количество требуемых параметров
//
// Возвращаемое значение:
//   булево - Истина, если функция существует
//
```

<a id="markdown-естьпроцедура" name="естьпроцедура"></a>
##### ЕстьПроцедура

```bsl
// Выполняет проверку на наличии у объекта процедуры
//
// Параметры:
//   ИмяПроцедуры - Строка - имя проверяемой процедуры
//   КоличествоПараметров - Число - количество требуемых параметров
//
// Возвращаемое значение:
//   булево - Истина, если процедура существует
//
```

<a id="markdown-обязательнаяфункция" name="обязательнаяфункция"></a>
##### ОбязательнаяФункция

```bsl
// Выполняет проверку на обязательность функции у объекта
// Вызывает исключение, в случае отсутствия
//
// Параметры:
//   ИмяФункции - Строка - имя проверяемой функции
//   КоличествоПараметров - Число - количество требуемых параметров
//
```

<a id="markdown-обязательнаяпроцедура" name="обязательнаяпроцедура"></a>
##### ОбязательнаяПроцедура

```bsl
// Выполняет проверку на обязательность процедуры у объекта
// Вызывает исключение, в случае отсутствия
//
// Параметры:
//   ИмяПроцедуры - Строка - имя проверяемой процедуры
//   КоличествоПараметров - Число - количество требуемых параметров
//
```

<a id="markdown-реализуетинтерфейс" name="реализуетинтерфейс"></a>
##### РеализуетИнтерфейс

```bsl
// Выполняет проверку, что объект реализует требуемый интерфейс класса
//
// Параметры:
//   Интерфейс - Объект.ИнтерфейсОбъекта - ссылка на класс ИнтерфейсОбъекта
//   ВызватьИсключениеРеализации - Булево - признак необходимости вызова исключения при проверке. (по умолчанию <ложь>)
//
//  Возвращаемое значение:
//   булево - Истина, если интерфейс реализован
//
```

<a id="markdown-реализованныеметодыинтерфейса" name="реализованныеметодыинтерфейса"></a>
##### РеализованныеМетодыИнтерфейса

```bsl
// Возвращает реализованные методы согласно интерфейсу класса
//
// Параметры:
//   Интерфейс - Объект.ИнтерфейсОбъекта - ссылка на класс ИнтерфейсОбъекта
//
//  Возвращаемое значение:
//   Структура - набор методов класса с признаком реализации
//    * Ключ - Строка - имя метода
//    * Значение - Булево - Истина, есть метод реализован, иначе Ложь
//
```


<a id="markdown-естьсвойство" name="естьсвойство"></a>
##### ЕстьСвойство 
> Только для версии oscript 1.0.20 и выше

```bsl
// Выполняет проверку на наличии у объекта свойства
// Только для версии OneScript 1.0.20 и выше
//
// Параметры:
//   ИмяСвойства - Строка - имя проверяемого свойства
//
// Возвращаемое значение:
//   булево - Истина, если свойство существует
//
```
<a id="markdown-получитьтаблицуметодов" name="получитьтаблицуметодов"></a>
##### ПолучитьТаблицуМетодов

```bsl
// Возвращает прочитанную таблицу методов объекта
//
// Параметры:
//   АннотацияФильтр - Строка - аннотация метода для использования фильтра
//
//  Возвращаемое значение:
//   ТаблицаЗначений - таблица содержащая экспортные методы объекта, доступны следующие колонки
//    * Имя                  - Строка - имя метода объекта
//    * КоличествоПараметров - Число  - число параметров в методе
//    * ЭтоФункция           - Булево - признак, что метод является функцией
//    Для версии OneScript 1.0.20 и выше доступны дополнительные колонки:
//    * Аннотации            - Неопределено, ТаблицаЗначений - Таблица аннотаций со следующими колонками
//       * Имя       - строка - имя аннотации
//       * Параметры - Неопределено, ТаблицаЗначений - таблица параметров аннотации
//          * Имя      - строка - имя параметра аннотации
//          * Значение - строка - значение параметра аннотации
//    * Параметры            - Неопределено, ТаблицаЗначений - Таблица параметров в методе
//       * Имя                     - Строка - Имя параметра
//       * ПоЗначению              - Булево - Признак наличия значения по умолчанию
//       * ЕстьЗначениеПоУмолчанию - Булево - Признак наличия значения по умолчанию
//       * Аннотации               - Неопределено, ТаблицаЗначений - Таблица аннотаций со следующими колонками
//          * Имя       - строка - имя аннотации
//          * Параметры - Неопределено, ТаблицаЗначений - таблица параметров аннотации
//             * Имя      - строка - имя параметра аннотации
//             * Значение - строка - значение параметра аннотации
//
```

<a id="markdown-получитьтаблицусвойств" name="получитьтаблицусвойств"></a>
##### ПолучитьТаблицуСвойств

```bsl
// Возвращает прочитанную таблицу свойств объекта
// Только для версии OneScript 1.0.20 и выше
//
//  Возвращаемое значение:
//   ТаблицаЗначений - таблица содержащая экспортные свойства объекта, доступны следующие колонки
//    * Имя                  - Строка - имя свойства объекта
//    * Аннотации            - Неопределено, ТаблицаЗначений - Таблица аннотаций со следующими колонками
//       * Имя       - строка - имя аннотации
//       * Параметры - Неопределено, ТаблицаЗначений - таблица параметров аннотации
//          * Имя      - строка - имя параметра аннотации
//          * Значение - строка - значение параметра аннотации
//
```

<a id="markdown-класс-интерфейсобъекта" name="класс-интерфейсобъекта"></a>
### Класс ИнтерфейсОбъекта:

> Основной класс работы с виртуальными интерфейсами объекта

<a id="markdown-публичные-методы-и-функции-1" name="публичные-методы-и-функции-1"></a>
#### Публичные методы и функции

<a id="markdown-реализован" name="реализован"></a>
##### Реализован

```bsl
// Проверяет переданную карту класса на реализацию текущего интерфейса
//
// Параметры:
//   КартаКласса - ТаблицаЗначений - таблица значений карты проверяемого объекта, колонки:
//    * Имя                  - Строка - имя метода объекта
//    * КоличествоПараметров - Число  - число параметров в методе
//    * ЭтоФункция           - Булево - признак, что метод является функцией
//   СообщитьОшибки - Булево - признак. вывода ошибки (по умолчанию Истина)
//
//  Возвращаемое значение:
//   Булево - Истина, если интерфейс реализован в переданной карте класса
//
```

<a id="markdown-реализованныеметоды" name="реализованныеметоды"></a>
##### РеализованныеМетоды

```bsl
// Возвращает реализованные методы согласно интерфейсу класса
//
// Параметры:
//   КартаКласса - ТаблицаЗначений - таблица значений карты проверяемого объекта, колонки:
//    * Имя                  - Строка - имя метода объекта
//    * КоличествоПараметров - Число  - число параметров в методе
//    * ЭтоФункция           - Булево - признак, что метод является функцией
//
//  Возвращаемое значение:
//   Структура - набор методов класса с признаком реализации
//    * Ключ - Строка - имя метода
//    * Значение - Булево - Истина, есть метод реализован, иначе Ложь
//
```

<a id="markdown-изобъекта" name="изобъекта"></a>
##### ИзОбъекта

```bsl
// Заполняет карту интерфейса из произвольного объекта
//
// Параметры:
//   ОбъектИнтерфейса - произвольный - произвольны объект для получения его карты интерфейса
//
```

<a id="markdown-изинтерфейса" name="изинтерфейса"></a>
##### ИзИнтерфейса

```bsl
// Заполняет карту интерфейса из другого интерфейса
//
// Параметры:
//   ВходящийИнтерфейс - Объект.ИнтерфейсОбъекта - ссылка на экземпляр класса ИнтерфейсОбъекта
//   Заменить - Булево - признак полной замены текущей карты интерфейса (по умолчанию истина)
//
```

<a id="markdown-получитькартуинтерфейса" name="получитькартуинтерфейса"></a>
##### ПолучитьКартуИнтерфейса

```bsl
// Возвращает текущую карту интерфейса
//
//  Возвращаемое значение:
//   ТаблицаЗначений - таблица значений карты интерфейса, колонки:
//    * Имя                  - Строка - имя метода объекта
//    * КоличествоПараметров - Число  - число параметров в методе
//    * ЭтоФункция           - Булево - признак, что метод является функцией
//
```
<a id="markdown-процедураинтерфейса" name="процедураинтерфейса"></a>
##### ПроцедураИнтерфейса

```bsl
// Добавляет процедуру в интерфейс
//
// Параметры:
//   ИмяМетода - Строка - имя процедуры интерфейса
//   КоличествоПараметров - Число - количество параметров процедуры
//
//  Возвращаемое значение:
//   Объект.ИнтерфейсОбъекта - ссылка на текущий экземпляр класса
//
```

<a id="markdown-п" name="п"></a>
##### П

```bsl
// (Кратное название функции ПроцедурыИнтерфейса)
// Добавляет процедуру в интерфейс
//
// Параметры:
//   ИмяМетода - Строка - имя процедуры интерфейса
//   КоличествоПараметров - Число - количество параметров процедуры
//
//  Возвращаемое значение:
//   Объект.ИнтерфейсОбъекта - ссылка на текущий экземпляр класса
//
```

<a id="markdown-функцияинтерфейса" name="функцияинтерфейса"></a>
##### ФункцияИнтерфейса

```bsl
// Добавляет функцию в интерфейс
//
// Параметры:
//   ИмяМетода - Строка - имя функции интерфейса
//   КоличествоПараметров - Число - количество параметров функции
//
//  Возвращаемое значение:
//   Объект.ИнтерфейсОбъекта - ссылка на текущий экземпляр класса
//
```

<a id="markdown-ф" name="ф"></a>
##### Ф

```bsl
// (Кратное название функции ФункцияИнтерфейса)
// Добавляет функцию в интерфейс
//
// Параметры:
//   ИмяМетода - Строка - имя функции интерфейса
//   КоличествоПараметров - Число - количество параметров функции
//
//  Возвращаемое значение:
//   Объект.ИнтерфейсОбъекта - ссылка на текущий экземпляр класса
//
```
