]>

# Дополнительные классы и ЭУ

1C++ :: | | Ранее: | Далее:

:: :: _1cpp_ext_classes_

Содержание

- ФабрикаОбъектов
  - Методы
    - Новый / New
    - Шрифт / Font
    - АктивИкс / AXControl
- Система
  - Методы
    - ЗакрытьФорму / CloseForm
    - Уснуть / Sleep
- РеестрWin
  - Методы
    - СоздатьКлюч / CreateKey
    - ОткрытьКлюч / OpenKey
    - ПодключитьРегистр / ConnectRegistry
    - УдалитьКлюч / DeleteKey
    - УдалитьЗначение / DeleteValue
    - УстановитьЗначение / SetValue
    - ЗапроситьЗначение / QueryValue
    - ВыбратьКлючи / ChooseKeys
    - ПолучитьКлюч / GetKey
    - ВыбратьЗначения / ChooseValues
    - ПолучитьЗначение / GetValue
    - ОтладочныеСообщения
    - ЗаписатьВсеАтрибуты
- ВыполняемыйМодуль
  - Свойства
    - <ИмяПеременной>
  - Методы
    - <ИмяМетода>
    - УстановитьМодуль / AssignSource
    - НазначитьКонтекст / AssignContext
    - ПрисоединитьТекущийМодуль / AssignFriendModule
    - КомпилироватьМодуль / Compile
    - ВыполнитьМодуль / Execute
    - GetMethOfContext
    - СформироватьОшибку / RaiseError
    - ОчиститьПозициюПроведения / ErasePostState
    - ВосстановитьПозициюПроведения / RestorePostState
    - ВыброситьИскл / Throw
    - ПолучитьИсключение / GetExeption
    - КомпилироватьИВыполнитьМодуль / CompileAndExecute
    - РазрешитьИсключения / EnableExceptions
    - ВыполнитьПроцедуруКонтекста / CallContextProcedure
    - ВыполнитьФункциюКонтекста / CallContextFunction
- Делегат
  - Методы
    - ОпределитьТип / DefineType
    - Добавить / AddMethod
    - Удалить / RemMethod
    - УдалитьПоКлючу / RemMethodByKey
    - Вызвать / Invoke
    - ВызватьПоКлючу / InvokeByKey
    - Очистить / Erase
    - Пустой / IsEmpty
- МенеджерСобытий
  - Методы
    - Пустой / IsEmpty
    - ДобавитьОбработчикСобытия / AddEventHandle
    - УдалитьОбработчикСобытия / RemEventHandle
    - ПослатьСобытие / SendEvent
    - УстановитьДелегата / SetDelegate
    - Очистить / Clear
    - УстановитьКоличествоПараметров / SetCountOfParams
  - Пример кода
- Структура
  - Свойства
    - <ИмяСвойства>
  - Методы
    - Вставить / Insert
    - Количество / Count
    - Очистить / Clear
    - Свойство / Property
    - Удалить / Remove
    - Получить / Get
    - ЕстьСвойство / ExistProp
- DynaValue
  - Свойства
    - <ИмяСвойства>
  - Методы
    - ДобавитьСвойство / AddProp
    - ВыбратьСвойства / SelectProps
    - ПолучитьСвойство / GetProp
    - ПолучитьСвойствоПоНомеру / GetPropByNum
    - КоличествоСвойств / GetNProps
    - ВыгрузитьВСтроку / SaveToString
    - ВыгрузитьВФайл / SaveToFile
    - ЗагрузитьИзСтроки / LoadFromString
    - ЗагрузитьИзФайла / LoadFromFile
    - НайтиПоИмени / FindByName
    - ПолучитьПоИмени / GetByName
    - УстановитьПоИмени / SetByName
    - УстановитьПоНомеру / SetByNum
    - УдалитьПоНомеру / DeleteByNum
    - УдалитьПоИмени / DeleteByName
    - Очистить / Clear
    - СвойстваВСписокЗначений / PropsToValueList
    - НайтиПоЗначению / FindByValue
    - НайтиПоЗначениюАтрибута / FindByAtributeValue
- Форма
  - Методы
    - УстановитьФорму / AssignForm
    - СброситьФорму / ResetForm
    - СоздатьЭлементУправления / CreateControl
    - СоздатьЭлементУправленияНаФорме / CreateControlOnForm

В состав 1С++ входят дополнительные типы объектов и элементы управления.

- ИндексированнаяТаблица
- ТабличноеПоле
- BinaryData
- Math
- Перехватчик
- Информатор
- УправлениеНастройками

# ФабрикаОбъектов

ФабрикаОбъектов ObjectFactory

Класс ФабрикаОбъектов / ObjectFactory

Специальный объект, позволяющий создавать объекты любых типов, как встроенных классов 1С++ и пользовательских классов 1С++, так и классов от 1С или любых внешних компонент.

Существуют две схемы создания объектов:

1. Создание встроенных классов с помощью конструкторов путем вызова метода ФабрикиОбъектов.НаименованиеСоздаваемогоТипа с названием, совпадающим с именем типа создаваемого объекта.

Important

Метод работает на релизах 1С+ 2.0.0.0 и старше.

- Позволяет снабдить процесс создания объектов параметрами, число которых может быть различным. Каждый метод фабрики объектов возвращает объект одноименного типа.

Описание синтаксиса создания расположено в описании самих объектов.

Пример создания:

> - Фабрика = СоздатьОбъект("ФабрикаОбъектов");
> - ШрифтАриал10Жирный = Фабрика. Шрифт ("Arial", 10, 1);

На данный момент подобным образом можно создавать объекты двух классов: "Font / Шрифт " и "AXControl / АктивИкс "

2. Создание объектов с помощью метода ФабрикаОбъектов.Новый

   > Позволяет снабдить процесс создания объектов параметрами, число которых может быть различным. Этот метод фабрики объектов возвращает объект указанного типа.

Important

Метод работает только на релизе 1С+ 2.5 и старше.

Пример создания:

  > - ДругаяТаб = СоздатьОбъект("ТаблицаЗначений");
  > - Таб = Фабрика. Новый ("ТаблицаЗначений", "Загрузить", ДругаяТаб);
  > - Таб = Фабрика. Новый ("ТаблицаЗначений");

  или
    - ДругаяТаб = СоздатьОбъект("ТаблицаЗначений");
    - Таб = Фабрика. Новый ("ИндексированнаяТаблица", "Загрузить", ДругаяТаб);
    - Таб = Фабрика. Новый ("ИндексированнаяТаблица");
  или
    - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами");

  System Message: WARNING/2 (`.\extobjs.txt`, line 290)

  Definition list ends without a blank line; unexpected unindent.
  - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами", "КонструкторБезПараметров");
      - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами", "КонструкторCКоличествомПараметров2", 1, 2);

## Методы

### Новый / New

> Синтаксис: Новый(ИмяТипаИлиКласса, [ИмяКонструктора], [Парам1, Парам2, ...])

> Параметры:

> > - ИмяТипаИлиКласса - тип: Строка. Имя типа. Не должен быть простым типом (Строка, Число, Дата).

> > - ИмяКонструктора - тип: Строка. Необязательный параметр.

> >   > Если пытаемся создать объект, который не является классом КОП 1С++,

> >   >   для данного объекта должен быть определен метод-процедура с таким названием. Данный метод должен принимать указанное число параметров.

> >   >   > Если пытаемся создать объект, который является классом КОП 1С++,

> >   >   System Message: WARNING/2 (`.\extobjs.txt`, line 318)

> >   >   Block quote ends without a blank line; unexpected unindent.

> >   >   в модуле данного объекта должен быть определен метод-процедура с необходимым названием. Важно: процедура-конструктор должна быть определена без атрибута Экспорт.

> >   >   Данный метод должен принимать указанное число параметров.

> > - Парам1, Парам2, ... - тип: Произвольный. Необязательный параметр.

> >     Любое число параметров любого типа.

> Возвращает: Объект указанного типа.

> Описание: Создает объект указанного типа и сразу же вызывает для него метод-конструктор, если у объекта есть такой метод-процедура.

> > Если пытаемся создать объект, который является классом КОП 1С++, и указан конструктор, отличный от дефолтного "Конструктор", создается объект нового класса и для него вместо дефолтного "Конструктор" вызывается конструктор с указанным именем и параметрами. Если имя конструктора для пользовательского класса 1С++ не указано, создается объект класса и для него вызывается процедура "Конструктор", если она определена в модуле.

> > Если имя конструктора не указано, метод просто возвращает объект, созданный с помощью вызова СоздатьОбъект(ИмяТипаИлиКласса).

> > Если не удается создать объект с таким названием, выдается исключение.
> >   Если у указанного класса нет процедуры с таким названием, выдается исключение.

> > System Message: WARNING/2 (`.\extobjs.txt`, line 348)

> > Definition list ends without a blank line; unexpected unindent.

> > Если у указанного класса нет процедуры с таким названием, но есть функция с таким названием, выдается исключение.

> > > > Если пытаемся создать объект, который является классом КОП 1С++, и если найденная процедура-конструктор определена с параметром Экспорт, выдается исключение.

> > > Если количество переданных параметров не совпадает с количеством параметром, которые определены для указанного метода-конструктора, выдается исключение.

Important

Метод работает только на релизе 1С+ 2.5 и старше.

- Пример создания:

  > - ДругаяТаб = СоздатьОбъект("ТаблицаЗначений");
  > - Таб = Фабрика. Новый ("ТаблицаЗначений", "Загрузить", ДругаяТаб);
  > - Таб = Фабрика. Новый ("ТаблицаЗначений");

  или
    - ДругаяТаб = СоздатьОбъект("ТаблицаЗначений");
    - Таб = Фабрика. Новый ("ИндексированнаяТаблица", "Загрузить", ДругаяТаб);
    - Таб = Фабрика. Новый ("ИндексированнаяТаблица");
  или
    - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами");

  System Message: WARNING/2 (`.\extobjs.txt`, line 377)

  Definition list ends without a blank line; unexpected unindent.

  - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами", "КонструкторБезПараметров");
      - ОбъектКОП = Фабрика. Новый ("КлассСКонструкторами", "КонструкторCКоличествомПараметров2", 1, 2);

### Шрифт / Font

> Синтаксис: Шрифт([Парам1, Парам2, ...])

> Параметры:

> > - Парам1, Парам2, ... - тип: Произвольный. Необязательный параметр.

> >     Любое число параметров любого типа.

> Возвращает: Объект класс Шрифт / Font.

> Описание: Создает объект класс Шрифт / Font, вызывая для него соответствующий конструктор с нужными параметрами.

Important

Метод работает на релизах 1С+ 2.0.0.0 и старше.

- Пример создания:

  > - Фабрика = СоздатьОбъект("ФабрикаОбъектов");
  > - ШрифтАриал10Жирный = Фабрика.Шрифт("Arial", 10, 1);

### АктивИкс / AXControl

> Синтаксис: АктивИкс([Парам1, Парам2, ...])

> Параметры:

> > - Парам1, Парам2, ... - тип: Произвольный. Необязательный параметр.

> >     Любое число параметров любого типа.

> Возвращает: Объект класс АктивИкс / AXControl.

> Описание: Создает объект класс АктивИкс / AXControl, вызывая для него соответствующий конструктор с нужными параметрами.

Important

Метод работает на релизах 1С+ 2.0.0.0 и старше.

# Система

Система System

Класс Система / System

Класс предоставляет различные вспомогательные функции.

## Методы

### ЗакрытьФорму / CloseForm

> Синтаксис: ЗакрытьФорму(КонтФормы, ФлагСохранения = 0)

> Параметры:

> > - КонтФормы - тип: ГрупповойКонтекст.

> > - ФлагСохранения - тип: Число. Необязательный параметр.

> >     0 - закрыть форму без вопросов; 1 - если документ, счет, элемент справочника изменен, то будет запрос о сохранении изменений. Значение по умолчанию - 0.

> Возвращает: Число.

> > - 0 - не удалось закрыть форму.
> > - 1 - форма успешно закрыта.

> Описание: Немедленно закрывает форму с отработкой всех событий, обработчики которых есть в форме.

> > В отличие от метода КонтФормы.Форма.Закрыть([ФлагСохранения]), который

> >   > закрывает форму не сразу, а только после завершения работыпользовательского кода,

> >   System Message: WARNING/2 (`.\extobjs.txt`, line 475)

> >   Block quote ends without a blank line; unexpected unindent.

> >   данный метод не ждет завершения кода, а закрывает форму немедленно. Т.е. управление к следующей строке после вызова Система.ЗакрытьФорму будет передано только после закрытия формы.

> >   После выполнения данного метода ТипЗначения(КонтФормы) = 0 ! ,
> >     т.к. форма закрыта, и все групповые контексты, которые указывали на эту форму, стали недействительными.
> > В случае, если первый параметр не является групповым контекстом, выдается исключение.
> >   В случае, если второй параметр не является числом, выдается исключение.

> Версия: Метод работает на релизе 2.5 и позже, а также 2.0.3.2

### Уснуть / Sleep

> Синтаксис: Уснуть(КоличествоМиллисекунд)

> Параметры:

> > - КоличествоМиллисекунд - тип: Число. .

> Описание: Делает паузу путем вызова системной функции Sleep(КоличествоМиллисекунд).

> Версия: Метод работает на релизе 2.5 и позже, а также 2.0.3.2

# РеестрWin

РаботаСРегистромWin WorkAsRegisterWin РеестрWin RegistryWin

Класс РеестрWin / RegistryWin

Класс РаботаСРегистромWin / WorkAsRegisterWin

Предназначен для работы с реестром "Windows" в стиле языка 1С : Предприятия.

Позволяет:

- создавать, открывать ключи реестра, подключаться к реестру удаленного компьютера;
- добавлять в ключи строковые и числовые значения, удалять значения из ключей реестра;
- перебирать ключи и значения ключей;
- организовывать поиск ключа или значения по имени.

## Методы

### СоздатьКлюч / CreateKey

> Синтаксис: СоздатьКлюч(Ключ, Имя, Режим)

> Параметры:

> > - Ключ - тип: Строка. Название ветви реестра. Названия строго определены и бывают следующих видов:

> >   > - HKEY_CLASSES_ROOT
> >   > - HKEY_CURRENT_CONFIG
> >   > - HKEY_CURRENT_USER
> >   > - HKEY_LOCAL_MACHINE
> >   > - HKEY_USERS

> > - Имя - тип: Строка. Названием ключа реестра. (например: "Software\1C\1Cv7\7.7")

> > - Режим - тип: Строка. Режим создания ключа. Названия строго определены и бывают следующих видов:

> >   > - KEY_CREATE_LINK Permission to create a symbolic link.
> >   > - KEY_CREATE_SUB_KEY Permission to create subkeys.
> >   > - KEY_ENUMERATE_SUB_KEYS Permission to enumerate subkeys.
> >   > - KEY_EXECUTE Permission for read access.
> >   > - KEY_NOTIFY Permission for change notification.
> >   > - KEY_QUERY_VALUE Permission to query subkey data.
> >   > - KEY_SET_VALUE Permission to set subkey data.
> >   > - KEY_ALL_ACCESS Combines the KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, and KEY_SET_VALUE access rights, plus all the standard access rights except SYNCHRONIZE.
> >   > - KEY_READ Combines the STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY access rights.
> >   > - KEY_WRITE Combines the STANDARD_RIGHTS_WRITE, KEY_SET_VALUE, and KEY_CREATE_SUB_KEY access rights

> Возвращает: Число.

> > - -1 - ошибка
> > - 0 - ключ с таким названием уже существует и будет просто открыт
> > - 1 - ключ успешно создан

> Описание: Создает в реестре ключ с указанным именем.

### ОткрытьКлюч / OpenKey

> Синтаксис: ОткрытьКлюч(Ключ, Имя, Режим)

> Параметры:

> > - Ключ - тип: Строка. Название ветви реестра. Названия строго определены и бывают следующих видов:

> >   - HKEY_CLASSES_ROOT
> >   - HKEY_CURRENT_CONFIG
> >   - HKEY_CURRENT_USER
> >   - HKEY_LOCAL_MACHINE
> >   - HKEY_USERS

> > - Имя - тип: Строка. Названием ключа реестра. (например: "Software\1C\1Cv7\7.7")

> > - Режим - тип: Строка. Режим создания ключа. Названия строго определены и бывают следующих видов:

> >   > - KEY_CREATE_LINK Permission to create a symbolic link .
> >   > - KEY_CREATE_SUB_KEY Permission to create subkeys.
> >   > - KEY_ENUMERATE_SUB_KEYS Permission to enumerate subkeys.
> >   > - KEY_EXECUTE Permission for read access.
> >   > - KEY_NOTIFY Permission for change notification.
> >   > - KEY_QUERY_VALUE Permission to query subkey data.
> >   > - KEY_SET_VALUE Permission to set subkey data.
> >   > - KEY_ALL_ACCESS Combines the KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, and KEY_SET_VALUE access rights, plus all the standard access rights except SYNCHRONIZE.
> >   > - KEY_READ Combines the STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY access rights.
> >   > - KEY_WRITE Combines the STANDARD_RIGHTS_WRITE, KEY_SET_VALUE, and KEY_CREATE_SUB_KEY access rights

> Возвращает: Число.

> > - 0 - ошибка
> > - 1 - ключ открыт

> Описание: Открывает ключ реестра с указанным именем.

### ПодключитьРегистр / ConnectRegistry

> Синтаксис: ПодключитьРегистр(ИмяУдаленногоКомпьютера, Ключ)

> Параметры:

> > - ИмяУдаленногоКомпьютера - тип: Строка. Cетевое имя компьютера, к реестру которого необходимо подключиться (например: \computername). Если указать пустую строку, то метод подключится к локальной машине.

> > - Ключ - тип: Cтрока. Название ветви реестра. Названия строго определены и бывают следующих видов:

> >   > - HKEY_LOCAL_MACHINE
> >   > - HKEY_USERS

> Возвращает: Число.

> > - 0 - ошибка
> > - 1 - соединение установлено

> Описание: Подключает объект к реестру удаленного компьютера.

> Примечание: для возможности успешного подключения к компьютеру с установленной операционной системой Windows 95 необходимо инсталлировать на нем "Microsoft Remote Registry service".

### УдалитьКлюч / DeleteKey

> Синтаксис: УдалитьКлюч(ИмяПодКлюча)

> Параметры:

> > - ИмяПодКлюча - тип: Строка. Имя удаляемого подключа.

> Возвращает: Число.

> > - 0 - была ошибка
> > - 1 - удаление закончено успешно

> Описание: Удаляет подключ ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.

### УдалитьЗначение / DeleteValue

> Синтаксис: УдалитьЗначение(ИмяЗначения)

> Параметры:

> > - ИмяЗначения - тип: Строка. Имя удаляемого значения.

> Возвращает: Число.

> > - 0 - была ошибка
> > - 1 - удаление закончено успешно

> Описание: Удаляет значение в ключе, открытом ранее функцией ОткрытьКлюч или СоздатьКлюч.

### УстановитьЗначение / SetValue

> Синтаксис: УстановитьЗначение(ИмяЗначения, ТипЗначения, Значение)

> Параметры:

> > - ИмяЗначения - тип: Строка. Название значения в ключе.

> > - ТипЗначения - тип: Строка. Может принимать только два значения:

> >   > - "REG_SZ" - тип значения строка
> >   > - "REG_DWORD" - тип значения целое число

> > - Значение - тип: Строка, Число. Значение, которое необходимо установить, зависит от типа, установленного в предыдущем параметре.

> Возвращает: Число.

> > - 0 - была ошибка
> > - 1 - установка закончена успешно

> Описание: Устанавливает значение, указанное в параметре ИмяЗначения ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.

### ЗапроситьЗначение / QueryValue

> Синтаксис: ЗапроситьЗначение(ИмяЗначения, Значение)

> Параметры:

> > - ИмяЗначения - тип: Строка. Название значения в ключе.
> > - Значение - тип: Имя переменной. Переменная для приема запрошенного значения.

> Возвращает: Число.

> > - 0 - была ошибка
> > - 1 - запрос закончен успешно

> Описание: Запрашивает значение, указанное в параметре ИмяЗначения ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.

> Примечание: Если операция выполнена успешно, то результат будет в Значение. Тип значений, которые можно получить, может быть только "REG_SZ" или "REG_DWORD".

### ВыбратьКлючи / ChooseKeys

> Синтаксис: ВыбратьКлючи()

> Возвращает: Число. Количество выбранных подключей.

> Описание: Открывает выборку подключей ключа, установленного функцией ОткрытьКлюч или СоздатьКлюч.

### ПолучитьКлюч / GetKey

> Синтаксис: ПолучитьКлюч(ИмяПодКлюча)

> Параметры:

> > - ИмяПодКлюча - тип: Имя переменной. Переменная для приема названия подключа.

> Возвращает: Число.

> > - 0 - выборка пуста
> > - 1 - в выборке еще есть подключи

> Описание: Получает следующее название подключа из выборки, открытой ранее методом ВыбратьКлючи.

### ВыбратьЗначения / ChooseValues

> Синтаксис: ВыбратьЗначения()

> Возвращает: Число. Количество - значений в выборке.

> Описание: Открывает выборку значений ключа, установленного функцией ОткрытьКлюч или СоздатьКлюч.

### ПолучитьЗначение / GetValue

> Синтаксис: ПолучитьЗначение(ИмяЗначения)

> Параметры:

> > - ИмяЗначения - тип: Имя переменной. Переменная, в которую возвращается строковое название значения.

> Возвращает: Число.

> > - 0 - выборка пуста
> > - 1 - в выборке еще есть значения

> Описание: Получает следующее название значения из выборки, открытой ранеее методом ВыбратьЗначения.

### ОтладочныеСообщения

> Синтаксис: ОтладочныеСообщения(Включить)

> Параметры:

> > - Включить - тип: Число.

> >   > - 0 - Отключить
> >   > - 1 - Включить

> Описание: Включает/отключает отладочные сообщения при возникновении ошибок работы с реестром.

### ЗаписатьВсеАтрибуты

> Синтаксис: ЗаписатьВсеАтрибуты()

> Описание: Немедленно записать изменения, внесенные ранее в реестр.

# ВыполняемыйМодуль

ВыполняемыйМодуль ExecuteModule

Класс ВыполняемыйМодуль / ExecuteModule

Предназначен для работы с динамическими модулями, передаваемыми в параметре метода в качестве строки.

После установки текста модуля скомпилируйте и выполните его. Модуль инициализируется и выполнит операторы, расположенные в конце тела модуля, вне методов. После этого можно обращаться к переменным модуля, как к свойствам этого объекта, и к методам модуля, как к методам объекта.

## Свойства

### <ИмяПеременной>

> Доступ: чтение и запись.

> Тип: Любой.

> Описание: Позволяет обращаться к переменным модуля, объявленным в тексте модуля, как к свойствам объекта.

## Методы

### <ИмяМетода>

> Синтаксис: Соответствует синтаксису метода модуля.

> Параметры: Соответствуют параметрам меода модуля.

> Описание: Позволяет обращаться к методам, определенным в тексте модуля, как к своим методам.

### УстановитьМодуль / AssignSource

> Синтаксис: УстановитьМодуль(стрТекстМодуля)

> Параметры:

> > - стрТекстМодуля - тип: Строка. Текст модуля.

> Описание: Устанавливает текст модуля на выполнение.

> В модуле возможно определять любые функция, процедуры и параметры, доступ к которым возможно осуществлять, через оператор-селектор .(точка) объекта класса ВыполняемыйМодуль, после компилирования и запуска.

### НазначитьКонтекст / AssignContext

> Синтаксис: НазначитьКонтекст(Контекст)

> Параметры:

> > - Контекст - тип: ГрупповойКонтекст, АгрегатныйОбъект. Назначаемый контекст.

> Описание: Устанавливает контекст модуля.

> Метод должен вызыватся до компиляции модуля. При этом к методам и свойствам назначенного контекста в тексте модуля можно будет обращаться напрямую, без указания имени объекта.

### ПрисоединитьТекущийМодуль / AssignFriendModule

> Синтаксис: ПрисоединитьТекущийМодуль()

> Описание: Присоединяет модуль, который в данный момент выполняется.

> Это позволяет в установленном модуле объекта обращаться напрямую к переменным и методам текущего модуля (т.е. модуля, в котором идет работа в данный момент с объектом класса ВыполняемыйМодуль).

### КомпилироватьМодуль / Compile

> Синтаксис: КомпилироватьМодуль()

> Возвращает: Число.

> > - 1, если компиляция прошла успешно
> > - 0 в случае неудачи

> Описание: Компилирует модуль, установленный с помощью метода УстановитьМодуль.

### ВыполнитьМодуль / Execute

> Синтаксис: ВыполнитьМодуль()

> Возвращает: Число.

> > - 1, если выполнение начато успешно
> > - 0 в случае неудачи

> Описание: Выполняет модуль, установленный с помощью метода УстановитьМодуль и откомпилированный методом КомпилироватьМодуль.

> При этом происходит инициализация выполнения модуля и выполняются операторы тела модуля. После этого ВыполняемыйМодуль готов к использованию, и позволяет обращаться к переменным и методам модуля, как к своим свойствам и методам.

### GetMethOfContext

> Синтаксис: GetMethOfContext(Объект, тзМетоды = 0, тзСвойства = 0)

> Параметры:

> > - Объект - тип: Контекст, АгрегатныйОбъект. Объект, для которого необходимо получить описание.
> > - тзМетоды - тип: ТаблицаЗначений. ТЗ, в которую будет возвращено описание методов объекта.
> > - тзСвойства - тип: ТаблицаЗначений. ТЗ, в которую будет возвращено описание свойств объекта.

> Описание: Предоставляет информацию о методах и свойствах объекта.

> Если задана хотя бы одна из таблиц (тзМетоды, тзСвойства), описание возвращается в соотв. таблице. Иначе описание выводится в окно сообщений.

> Вместо данного метода удобнее использовать соответствующие методы класса "Информатор" - ПолучитьТаблицуМетодов и ПолучитьТаблицуСвойств.

### СформироватьОшибку / RaiseError

> Синтаксис: СформироватьОшибку(ТекстОшибки)

> Параметры:

> > - ТекстОшибки - тип: Строка. Сообщение об ошибке.

> Описание: Останавливает выполнение текущего модуля.

> При этом выводится сообщение об ошибке, переданное в параметре метода ТекстОшибки.

### ОчиститьПозициюПроведения / ErasePostState

> Синтаксис: ОчиститьПозициюПроведения()

> Описание: Очищает позицию проведения и сохраняет текущую в объекте.

> Далее в модуле документа можно проводить другие документы и отменять проведение других документов, после выполнения этих операций необходимо восстановить позицию с помощью метода ВосстановитьПозициюПроведения, описанного ниже.

> Внимание! Проверка работоспособности метода была произведена только на релизе 1С 7.70.017.

### ВосстановитьПозициюПроведения / RestorePostState

> Синтаксис: ВосстановитьПозициюПроведения()

> Описание: Восстанавливает позицию проведения текущего документа, очищенную с помощью метода ОчиститьПозициюПроведения.

> Методы ОчиститьПозициюПроведения и ВосстановитьПозициюПроведения необходимо вызывать всегда в паре в указанной последовательности!!!

> Внимание! Проверка работоспособности метода была произведена только на релизе 1С 7.70.017.

### ВыброситьИскл / Throw

> Синтаксис: ВыброситьИскл(ОбъектИскл, [ТекстИскл])

> Параметры:

> > - ОбъектИскл - тип: Любой. Параметр, который потом можно получить при обработке исключения методом ПолучитьИсключение.
> > - ТекстИскл - тип: Строка. Сообщение об ошибке. По умолчанию "".

> Описание: Формирует исключение с объектом, который можно получить при перехвате/обработке исключения с помощью метода ПолучитьИсключение.

> При обработке исключения текст сообщения об ошибке можно получить с помощью глобальной функции ОписаниеОшибки(). Если исключение не обработано, этот текст будет выведен в окно сообщений.

### ПолучитьИсключение / GetExeption

> Синтаксис: ПолучитьИсключение()

> Возвращает: объект-исключение, параметр ОбъектИскл, переданный в метод ВыброситьИскл.

> Описание: Получает объект исключения.

> Используется в обработчиках исключений для получения объекта исключения, переданного в метод ВыброситьИскл, или метода функционала класса _ВыброситьИскл|_1cpp_oop__throw_.

### КомпилироватьИВыполнитьМодуль / CompileAndExecute

> Синтаксис: КомпилироватьИВыполнитьМодуль()

> Описание: Компилирует и выполняет модуль, установленный с помощью метода УстановитьМодуль .

> При этом происходит инициализация выполнения модуля и выполняются операторы тела модуля. После этого ВыполняемыйМодуль готов к использованию, и позволяет обращаться к переменным и методам модуля, как к своим свойствам и методам. В случае ошибок синтаксиса в тексте модуля или ошибок выполнения генерируется исключение.

### РазрешитьИсключения / EnableExceptions

> Синтаксис: РазрешитьИсключения()

> Описание: Включает флаг выдачи исключений вместо показа ошибок в окне сообщений.

> После выполнения данного метода методы ВыполнитьМодуль, КомпилироватьМодуль вызывают исключение в случае ошибки, а не выдают сообщение в окно сообщений. В случае ошибок синтаксиса в тексте модуля или ошибок выполнения генерируется исключение. Метод КомпилироватьИВыполнитьМодуль всегда выбрасывает исключения, независимо от выполнения данного метода.

### ВыполнитьПроцедуруКонтекста / CallContextProcedure

> Синтаксис: ВыполнитьПроцедуруКонтекста(Объект, ИмяПроцедуры, СписокАргументов)

> Параметры:

> > - Объект - тип: Агрегатный.
> > - ИмяПроцедуры - тип: Строка.
> > - СписокАргументов - тип: СписокЗначений. Список аргументов для упомянутой процедуры.

> Возвращает: 1, если процедура существует, или 0, если нет.

> Описание: Выполняет процедуру для переданного объекта, если у объекта есть процедура с таким именем. Если найдена функция с таким именем, выдается исключение.

> В случае, если первый параметр не является агрегатным типом (Строка,Число и т.д.), выдается исключение. В случае, если второй параметр не является строкой или строка пуста, выдается исключение. В случае, если третий параметр не является списком значений, выдается исключение.

### ВыполнитьФункциюКонтекста / CallContextFunction

> Синтаксис: ВыполнитьФункциюКонтекста(Объект, ИмяПроцедуры, СписокАргументов, РезультатРаботыФункции)

> Параметры:

> > - Объект - тип: Агрегатный.
> > - ИмяПроцедуры - тип: Строка.
> > - СписокАргументов - тип: СписокЗначений. Список аргументов для упомянутой процедуры.
> > - РезультатРаботыФункции - тип: Число.

> Возвращает: 1, если функция существует, или 0, если нет.

> Описание: Выполняет функцию для переданного объекта, если у объекта есть функция с таким именем. Если найдена процедура с таким именем, выдается исключение.

> В случае, если первый параметр не является агрегатным типом (Строка,Число и т.д.), выдается исключение. В случае, если второй параметр не является строкой или строка пуста, выдается исключение. В случае, если третий параметр не является списком значений, выдается исключение.

# Делегат

Делегат Delegate

Класс Делегат / Delegate

Данный класс представляет собой хранилище ссылок на методы экземпляров агрегатных объектов 1С. С помощью этого класса возможно вызывать группу методов с одинаковой сигнатурой (возвращаемый параметр, количество параметров или их отсутствие).

Использование делегата позволяет писать обобщенные алгоритмы и делать групповые вызовы методов.

## Методы

### ОпределитьТип / DefineType

> Синтаксис: | ОпределитьТип(чКолПарам, флЕстьВозврат, [флПрерыватьВыполнение = 0])
> Параметры: | чКолПарам: Число Количество параметров, которые будут передаваться в методы делегата флЕстьВозврат: Число Флаг наличия возвращаемого значения 1 - методы в делегате есть функции 0 - методы в делегате есть процедуры флПрерыватьВыполнение: Число Флаг прерывания выполнения по условию 1 - методы Вызвать и ВызватьПоКлючу прерывают выполнение цепочки, если при вызове очередной функции возвращенное значение равно 0 0 - методы Вызвать и ВызватьПоКлючу всегда проходят цепочку вызова полностью
> Возвращает: | нет
> Описание: | Задает сигнатуру хранимых в Делегате методов. Сигнатура - количество параметров и тип (функция / процедура) методов

### Добавить / AddMethod

> Синтаксис: | Добавить(ЭкземплярАгрегатногоОбъекта, стрИмяМетода, [стрКлюч = ""])
> Параметры: | ЭкземплярАгрегатногоОбъекта: ГрупповойКонтекст, АгрегатныйОбъект Объект, метод которого будет сохранен для вызова стрИмяМетода: Строка Имя метода, который будет вызван стрКлюч: Строка Если указан - можно вызывать метод по указанному ключу с помощью метода делегата ВызватьПоКлючу По умолчанию используется ключ "" Возможна реализация обработчика по умолчанию для ситуаций вызова по несуществующим ключам (см. описание метода ВызватьПоКлючу)
> Возвращает: | Число 1 - добавление метода прошло успешно
> Описание: | Устанавливает/добавляет в делегат ссылки на метод агрегатного объекта для его дальнейшего вызова Сигнатура метода объекта для установки должна соответствовать указанной в ОпределитьТип
> Примечание: | Возможно использование одинаковых методов для любых сочетаний ключей и агрегатных объектов Количество ключей не регламентируется Количество методов в пределах ключа не регламентируется Ключи и имена методов являются регистронезависимыми

### Удалить / RemMethod

> Синтаксис: | Удалить(ЭкземплярАгрегатногоОбъекта, стрИмяМетода)
> Параметры: | ЭкземплярАгрегатногоОбъекта: ГрупповойКонтекст, АгрегатныйОбъект Объект, ссылка на метод которого была сохранена ранее стрИмяМетода: Строка Имя метода, ссылка на который была сохранена ранее
> Возвращает: | Число 1 - удаление прошло успешно 0 - ссылок не найдено
> Описание: | Удаляет все ссылки на заданный метод указанного агрегатного объекта во всех ключах

### УдалитьПоКлючу / RemMethodByKey

> Синтаксис: | УдалитьПоКлючу(стрКлюч)
> Параметры: | стрКлюч: Строка Ключ, по которому происходит поиск методов объектов
> Возвращает: | Число 1 - удаление прошло успешно 0 - для указанного ключа ссылок не найдено
> Описание: | Удаляет все ссылки на методы агрегатных объектов по заданному ключу Ключ задается при добавлении ссылки на метод, третьим параметром в Добавить

### Вызвать / Invoke

> Синтаксис: | Вызвать(...)
> Параметры: | ...: Количество параметров или их отсутствие определяется сигнатурой делегата, заданной ранее методом ОпределитьТип
> Возвращает: | Наличие и тип возвращаемого значения определяется сигнатурой делегата
> Описание: | Вызывает все методы всех ключей, находящихся в делегате, с учетом параметра чПрерыватьВыполнение, заданного ранее методом ОпределитьТип
> Примечание: | Порядок вызова в пределах ключа регламентируется порядком добавления метода в делегат методом Добавить. Порядок перебора ключей не определен.

### ВызватьПоКлючу / InvokeByKey

> Синтаксис: | ВызватьПоКлючу(стрКлюч, ...)
> Параметры: | стрКлюч: Строка Ключ, по которому происходит поиск ссылки ...: Количество параметров или их отсутствие определяется сигнатурой делегата, заданной ранее методом ОпределитьТип
> Возвращает: | Наличие и тип возвращаемого значения определяется сигнатурой делегата
> Описание: | Вызывает все методы указанного ключа, находящиеся в делегате, с учетом параметра чПрерыватьВыполнение, заданного ранее методом ОпределитьТип
> Примечание: | Порядок вызова в пределах ключа регламентируется порядком добавления метода в делегат методом Добавить
> Обработчик по умолчанию:
> | Если указанный ключ в делегате не задан, вызывается обработчик по умолчанию по ключу "__default" (должен быть предварительно определен методом Добавить) Если обработчик по умолчанию также не задан, не вызывается ничего Обработчик по умолчанию учитывает значение параметра чПрерыватьВыполнение в общем порядке

### Очистить / Erase

> Синтаксис: | Очистить()
> Описание: | Удаляет из делегата все установленные в нем ранее методы для всех ключей. Сигнатура делегата после выполнения метода Очистить() не определена.

### Пустой / IsEmpty

> Синтаксис: | Пустой()
> Возвращает: | Число 1, если делегат не содержит ссылок на методы 0, если содержит
> Описание: | Проверяет наличие сохраненных ссылок

# МенеджерСобытий

МенеджерСобытий EventManager

Класс МенеджерСобытий / EventManager

Данный класс предназначен для обработки событий, возникающих в классах КОП и других контекстах использования менеджера.

Например: Есть класс, который формирует различные события и называется он "ФабрикаСобытий" (издатель событий). Предположим, что обращение к его открытым методам "Событие_1" и "Событие_2" приводят к возникновению событий в системе от этого класса. Далее, у нас есть несколько классов, которые хотят подписаться на события (подписчики событий), формируемые классом "ФабрикаСобытий", назовем их "ОбработчикСобытий_1" и "ОбработчикСобытий_2". Экземпляры классов-обработчиков событий (подписчиков) определяют свои методы, которые будут вызываться при возникновении в экземпляре класса "ФабрикаСобытий" определенных событий. Далее опишем методы класса "МенеджерСобытий" и приведём с краткими пояснениями пример кода, реализующий описанную схему.

## Методы

### Пустой / IsEmpty

> Синтаксис: Пустой()

> Возвращает: Число.

> > - 1, подписчиков нет
> > - 0, подписчики есть

> Описание: Проверяет наличие в менеджере событий подписчиков.

### ДобавитьОбработчикСобытия / AddEventHandle

> Синтаксис: ДобавитьОбработчикСобытия(копПодписчик, стрИмяМетода)

> Параметры:

> > - копПодписчик - тип: КОП. Экземпляр класса-подписчика.
> > - стрИмяМетода - тип: Строка. Имя метода-обработчика класса-подписчика, который будет вызываться при возникновении событий, управляемых классом-менеджером.

> Возвращает: Число.

> > - 1 - Добавление подписчика прошло успешно
> > - 0 - Данный подписчик с таким методом уже зарегистрирован в менеджере событий

> Описание: Подписывает на событие экземпляр класса-подписчика событий.

> Метод-обработчик события должен быть членом класса-подписчика и принимать два параметра по умолчанию:

> - Publisher или Издатель, в этот параметр передается экземпляр класса - издателя
> - ExtParametrs или ДопПараметры, в этот параметр передается любая информация, посланная с помощью метода ПослатьСобытие.

> Количество параметров, заданных по умолчанию, возможно изменить с помощью установки отдельно созданного делегата - передать его в качестве параметра метода УстановитьДелегата, или передать число параметров в метод УстановитьКоличествоПараметров.

> Каждый метод-обработчик обязан возвращать числовое значение. Если функция возвращает 0, то цепочка обработки события прерывается на данном подписчике, т.е. если у нас есть менеджер событий, в котором зарегистрировано 5 подписчиков и 2-ой по счету в своей функции возвращает 0, то 3 последующих подписчика не получат данное событие, другими словами - рассылка будет прервана на подписчике с номером 2. Если же функция возвращает любое другое числовое значение, отличное от нуля, то рассылка события менеджером не прерывается.

### УдалитьОбработчикСобытия / RemEventHandle

> Синтаксис: УдалитьОбработчикСобытия(копПодписчик, стрИмяМетода)

> Параметры:

> > - копПодписчик - тип: КОП. Экземпляр класса-подписчика.
> > - стрИмяМетода - тип: Строка. Имя метода-обработчика класса-подписчика.

> Возвращает: Число.

> > - 1 - с подписки снят
> > - 0 - нет, данный подписчик ранее не был зарегистрирован методом ДобавитьОбработчикСобытия.

> Описание: Снимает с подписки экземпляр класса-подписчика, ранее подписавшегося на него с помощью ДобавитьОбработчикСобытия.

### ПослатьСобытие / SendEvent

> Синтаксис: ПослатьСобытие(Издатель, ДопПараметр)

> Параметры:

> > - Издатель - тип: ГрупповойКонтекст, КОП. Контекст окружения, в котором возникло событие или контекст экземпляра класса-издателя
> > - ДопПараметр - тип: Любой. Любая дополнительная информация, которая будет доступна в методе экземпляра класса-подписчика во втором параметре.

> Возвращает: Число.

> > - 1 - цепочка рассылки событий пройдена полностью
> > - 0 - рассылка была прервана одним из подписчиков

> Описание: Посылает событие всем зарегистрировавшимся подписчикам на него.

### УстановитьДелегата / SetDelegate

> Синтаксис: УстановитьДелегата(ЭкземплярДелегата)

> Параметры:

> > - ЭкземплярДелегата - тип: Делегат. Экземпляр делегата, через который будет осуществляться вызов методов-обработчиков.

> Возвращает: Делегат. Установленный ранее делегат, или делегат по умолчанию, содержащийся в текущем менеджере событий.

> Описание: Устанавливает делегата для вызова методов-обработчиков.

### Очистить / Clear

> Синтаксис: Очистить()

> Параметры:

> Описание: Очищает менеджер событий от подписчиков.

### УстановитьКоличествоПараметров / SetCountOfParams

> Синтаксис: УстановитьКоличествоПараметров(чКолвоПарам)

> Параметры:

> > - чКолвоПарам - тип: Число. Новое количество параметров.

> Описание: Устанавливает количество параметров, которые должны принимать подписчики и количество параметров, которые необходимо передавать в метод ПослатьСобытие.

> Данный метод удаляет всех подписчиков, установленных ранее в менеджере событий.

## Пример кода

::

Определение класса "ФабрикаСобытий":

    класс ФабрикаСобытий=EventFactory.ert
    {
        void Событие_1();
        void Событие_2();
    };

Реализация класса "ФабрикаСобытий" файл EventFactory.ert:

    Перем МенеджерСобытий1 Экспорт;
    Перем МенеджерСобытий2 Экспорт;

    Функция GetThis(Конт) Возврат Конт; КонецФункции

    Процедура Конструктор()
        МенеджерСобытий1 = СоздатьОбъект("МенеджерСобытий");
        МенеджерСобытий2 = СоздатьОбъект("МенеджерСобытий");
    КонецПроцедуры

    Процедура Событие_1()
        Если МенеджерСобытий1.Пустой() = 0 Тогда
            МенеджерСобытий1.ПослатьСобытие(GetThis(Контекст), "Событие произошло!");
        КонецЕсли;
    КонецПроцедуры
    Процедура Событие_2()
        Если МенеджерСобытий2.Пустой() = 0 Тогда
            сз = СоздатьОбъект("СписокЗначений");
            сз.ДобавитьЗначение(100, "Парам1");
    сз.ДобавитьЗначение(200, "Парам2");
    сз.ДобавитьЗначение(300, "Парам3");
            МенеджерСобытий2.ПослатьСобытие(GetThis(Контекст), сз);
        КонецЕсли;
    КонецПроцедуры

Определим классы подписчики "ОбработчикСобытий_1" и "ОбработчикСобытий_2", в нашем примере определение этих классов будет одинаково:

    класс ОбработчикСобытий_1=TreaterEvetns_1.ert
    {
        Число ОбработкаСобытия_1(Неопределенный, Строка);
        Число ОбработкаСобытия_2(Неопределенный, СписокЗначений);
    };

Реализация этих классов может быть любая, в нашем примере она тривиальна и ее описание опустим.

В любом модуле системы для запуска механизма обработки событий пишем следующий код:

    ОбрСобытий_1 = СоздатьОбъект("ОбработчикСобытий_1");
    ОбрСобытий_2 = СоздатьОбъект("ОбработчикСобытий_2");
    ФабрикаСобытий = СоздатьОбъект("ФабрикаСобытий");

    // Регистрируем подписчиков и их методы - обработчики событий
    ФабрикаСобытий.МенеджерСобытий1.ДобавитьОбработчикСобытия(ОбрСобытий_1, "ОбработкаСобытия_1");
    ФабрикаСобытий.МенеджерСобытий1.ДобавитьОбработчикСобытия(ОбрСобытий_2, "ОбработкаСобытия_1");

    ФабрикаСобытий.МенеджерСобытий2.ДобавитьОбработчикСобытия(ОбрСобытий_1, "ОбработкаСобытия_2");
    ФабрикаСобытий.МенеджерСобытий2.ДобавитьОбработчикСобытия(ОбрСобытий_2, "ОбработкаСобытия_2");

    // Вызываем методы, которые формирую событие (издают)
    ФабрикаСобытий.Событие_1();
    ФабрикаСобытий.Событие_2();
    // Далее происходит вызов всех методов зарегистрированных в менеджере экземпляров классов - подписчиков.

# Структура

Структура Struct

Класс Структура / Struct

Данный класс предназначен для имитирования структуры данных других языков. Структура является динамическим объектом, что означает возможность программного управления количеством и названиями свойств структуры.

## Свойства

### <ИмяСвойства>

> Доступ: чтение и запись.

> Тип: Любой.

> Описание: Позволяет обратиться к свойству, добавленному методом Вставить.

## Методы

### Вставить / Insert

> Синтаксис: Вставить(стрКлюч, [нЗначение], [чРежим])

> Параметры:

> > - стрКлюч - тип: Строка. Название свойства структуры.

> >   Если такое свойство уже существует - то его значение изменяется, если не существует - создается новое

> > - нЗначение - тип: Любой. Значение свойства, которое необходимо установить.

> > - чРежим - тип: Число.

> >   - 0 - нЗначение сохраняется в структуре по ссылке
> >   - 1 - нЗначение сохраняется в структуре по значению

> >   По умолчанию - 1.

> Описание: Добавляет свойство в структуру.

> В структуре хранятся копии нЗначение.

### Количество / Count

> Синтаксис: Количество()

> Возвращает: Число. Количество свойств структуры.

> Описание: Возвращает количество свойств структуры, добавленных методом Вставить.

### Очистить / Clear

> Синтаксис: Очистить()

> Описание: Удаляет все свойства структуры.

### Свойство / Property

> Синтаксис: Свойство(стрКлюч, [нЗначение])

> Параметры:

> > - стрКлюч - тип: Строка. Название для поиска свойства структуры.
> > - нЗначение - тип: Имя переменной. В данный параметр возвращается найденное значение. Если ключа нет в структуре, то возвращается пустое значение неопределенного типа.

> Возвращает: Число.

> > - 1 - свойство с ключом найдено
> > - 0 - не найдено

> Описание: Позволяет получить значение свойства по указанному имени, а также проверить, имеется ли указанное свойство.

### Удалить / Remove

> Синтаксис: Удалить(стрКлюч)

> Параметры:

> > - стрКлюч - тип: Строка. Название удаляемого свойства структуры.

> Описание: Удаляет элемент структуры с заданным ключом. Если ключа не существует, выдается исключение.

### Получить / Get

> Синтаксис: Получить(чИндекс, [стрИмяСвойства])

> Параметры:

> > - чИндекс - тип: Число. Номер поля по порядку от 1 до Количество
> > - стрИмяСвойства - тип: Имя переменной. В нее записывается имя свойства, полученное по его номеру.

> Возвращает: Значение свойства, полученное по его номеру.

> Описание: Позволяет получать по индексу значение свойства и его имя.

### ЕстьСвойство / ExistProp

> Синтаксис: ЕстьСвойство(стрИмя)

> Параметры:

> > - стрИмя - тип:

> Возвращает: Число. Индекс найденного свойства, начиная с 1. Если свойство не найдено, 0.

> Описание: Проверяет, есть ли свойство с таким именем.

# DynaValue

DynaValue

Класс DynaValue

Объект "DynaValue" представляет собой массив поименованных свойств или, иными словами, составное значение. Свойства принимают тип значения переданного параметром при добавлении свойства. Чтение/Установка свойства осуществляется через точку по имени свойства.

## Свойства

### <ИмяСвойства>

> Доступ: чтение и запись.

> Тип: Любой.

> Описание: Позволяет обратиться к свойству, добавленному методом ДобавитьСвойство.

## Методы

### ДобавитьСвойство / AddProp

> Синтаксис: ДобавитьСвойство(стрИмя, нЗначение)

> Параметры:

> > - стрИмя - тип: Строка. Имя свойства.
> > - нЗначение - тип: Любой. Значение свойства.

> Возвращает: добавленное значение.

> Описание: Добавляет новое свойство с заданным именем.

### ВыбратьСвойства / SelectProps

> Синтаксис: ВыбратьСвойства()

> Возвращает: Число.

> > - 1 - если выбрано хоть одно свойство
> > - 0 - нет свойств

> Описание: Открывает выборку свойств.

### ПолучитьСвойство / GetProp

> Синтаксис: ПолучитьСвойство(нЗначение, стрИмя)

> Параметры:

> > - нЗначение - тип: Имя переменной. В нее вернется значение свойства.
> > - стрИмя - тип: Имя переменной. В нее вернется имя свойства.

> Возвращает: Число.

> > - 1 - свойство получено
> > - 0 - выборка кончилась

> Описание: Получает следующее свойство из выборки, открытой ВыбратьСвойства.

### ПолучитьСвойствоПоНомеру / GetPropByNum

> Синтаксис: ПолучитьСвойствоПоНомеру(чНомер)

> Параметры:

> > - чНомер - тип: Число. Индекс свойства от 0 до КоличествоСвойств - 1.

> Возвращает: свойство по индексу.

> Описание: Получает значение свойства по его индексу.

> Если индекс неверен, то генерируется ошибка.

> Внимание! Индексация свойств начинается с 0(ноль)!

### КоличествоСвойств / GetNProps

> Синтаксис: КоличествоСвойств()

> Возвращает: Число. Количество свойств.

> Описание: Получает количество свойств.

### ВыгрузитьВСтроку / SaveToString

> Синтаксис: ВыгрузитьВСтроку()

> Возвращает: Строка. Сохранненое состояние объекта.

> Описание: Возвращает строку с содержимым объекта для хранения и последующего восстановления.

> Примечание:

> > - выгружается абсолютно все содержимое, независимо от количества уровней вложенности.
> > - Для возможного сохранения классов КОП, которые могут содержаться в DynaValue необходимо, чтобы эти классы соответствовали требованиям, описанным в Сериализации КОП|_1cpp_oop_serialization_.

### ВыгрузитьВФайл / SaveToFile

> Синтаксис: ВыгрузитьВФайл(стрИмяФайла)

> Параметры:

> > - стрИмяФайла - тип: Строка. Имя файла, в который производится выгрузка состояния.

> Возвращает: Число.
>   - 1 - выгрузка произведена успешно
>   - иначе ошибка

> Описание: Сохраняет состояние объекта в файл.

### ЗагрузитьИзСтроки / LoadFromString

> Синтаксис: ЗагрузитьИзСтроки(стрСтрока)

> Параметры:

> > - стрСтрока - тип: Строка. Сохраненное состояние объекта.

> Описание: Восстанавливает значение объекта из выгрузки в строку.

> Примечание:

> - Предыдущее состояние объекта не сохранятся.
> - восстанавливаются значения всех элементов, включая агрегатные.
> - категорически запрещается передавать методу "ЗагрузитьИзСтроки" в качестве параметра что-либо, кроме строк выгруженных методом ВыгрузитьВФайл, по причине невозможности проконтролировать целостность данных. В случае неверной строки происходит немедленное прекращение работы программы 1С с потерей всех несохраненных на данный момент данных.
> - Запрещены циклические ссылки между элементами объектов, один из которых подлежит выгрузке в строку. В этом случае произойдет зацикливание программы 1С и, со временем - прекращение работы программы 1С с потерей всех несохраненных на данный момент данных.
> - Для восстановления состояния классов КОП вызывается их метод ЗагрузитьИзСтроки|_1cpp_oop_load_from_string_.

### ЗагрузитьИзФайла / LoadFromFile

> Синтаксис: ЗагрузитьИзФайла(стрИмяФайла)

> Параметры:

> > - стрИмяФайла - тип: Строка. Имя файла, из которого производится загрузка.

> Возвращает: Число.

> > - 1 - загрузка произведена успешно
> > - не 1 - произошла ошибка

> Описание: Восстанавливает значения объектов из файла.

> См. примечание у метода ЗагрузитьИзСтроки.

### НайтиПоИмени / FindByName

> Синтаксис: НайтиПоИмени(стрИмя)

> Параметры:

> > - стрИмя - тип: Строка. Имя искомого свойства.
> > - - тип:
> > - - тип:
> > - - тип:

> Возвращает: номер свойства (от нуля), или -1 если не найдено.

> Описание: Ищет свойство по имени.

### ПолучитьПоИмени / GetByName

> Синтаксис: ПолучитьПоИмени(стрИмя)

> Параметры:

> > - стрИмя - тип: Строка. Имя свойства.

> Возвращает: Значение свойства по номеру (от нуля).

> Описание: Получает свойство по имени.

### УстановитьПоИмени / SetByName

> Синтаксис: УстановитьПоИмени(стрИмя,нЗначение)

> Параметры:

> > - стрИмя - тип: Строка. Имя свойства.
> > - нЗначение - тип: Любой. Значение свойства.

> Описание: Устанавливает значение свойства по имени свойства.

### УстановитьПоНомеру / SetByNum

> Синтаксис: УстановитьПоНомеру(чНомер,нЗначение)

> Параметры:

> > - чНомер - тип: Число. Порядковый номер свойства, нумерация начинается с 0 и заканчивается КоличествоСвойств- 1;
> > - нЗначение - тип: Любой. Новое значение свойства.

> Описание: Устанавливает значение свойства по номеру свойства.

### УдалитьПоНомеру / DeleteByNum

> Синтаксис: УдалитьПоНомеру(чНомер)

> Параметры:

> > - чНомер - тип: Число. Порядковый номер свойства, нумерация начинается с 0 и заканчивается КоличествоСвойств - 1;

> Описание: Удаляет свойство по указанному номеру.

### УдалитьПоИмени / DeleteByName

> Синтаксис: УдалитьПоИмени(стрИмя)

> Параметры:

> > - стрИмя - тип: Строка. Имя удаляемого свойства.

> Описание: Удаляет свойство по указанному названию.

### Очистить / Clear

> Синтаксис: Очистить()

> Описание: Удаляет все свойства.

### СвойстваВСписокЗначений / PropsToValueList

> Синтаксис: СвойстваВСписокЗначений(сз)

> Параметры:

> > - сз - тип: Имя переменной. В нее вернется заполненный список значений.

> Описание: Выгружает в список значений все значения и имена свойств.

### НайтиПоЗначению / FindByValue

> Синтаксис: НайтиПоЗначению(нЗнач, чИндекс)

> Параметры:

> > - нЗнач - тип: Любой. Значение, которое ищем в объекте.
> > - чИндекс - тип: Имя переменной. В нее вернется индекс найденного значения в объекте, если не найдено - устанавливается в -1.

> Возвращает: Если значение найдено - возвращается оно же, иначе пустой объект.

> Описание: ищет значение в объекте и, если находит, возвращает значение и индекс в "чИндекс".

### НайтиПоЗначениюАтрибута / FindByAtributeValue

> Синтаксис: НайтиПоЗначениюАтрибута(стрИмяАтрибута, нЗнач, чИндекс)

> Параметры:

> > - стрИмяАтрибута - тип: Строка. Имя для поиска атрибута в объекте, который хранится в свойстве DynaValue.
> > - нЗнач - тип: Любой. Значение, которое ищем в атрибуте значения свойства.
> > - чИндекс - тип: Имя переменной. В нее вернется индекс найденного свойства, в котором хранится другой объект, имеющий атрибут с именем "стрИмяАтрибута", и содержащий значение, указанное в "нЗнач". Если не найдено устанавливается в -1.

> Возвращает: Если значение найдено - возвращается значение свойства, у которого был обнаружен атрибут, иначе возвращается пустой объект.

> Описание: Ищет свойство, у которого есть атрибут с указанным именем "стрИмяАтрибута", и содержащее указанное значение "нЗнач".

# Форма

Форма Form

Класс Форма / Form

Класс позволяет привязываться к форме и создавать элементы управления. В основном, используектся для создания ActiveX / АктивИкс объектов.

> Версия: Метод работает на релизе 2.5 и позже.

## Методы

### УстановитьФорму / AssignForm

> Синтаксис: void УстановитьФорму(Форма)

> Параметры:

> > - Форма - тип: Форма. Форма, к которой идет привязка.

> Описание: Привязывает объект класса к переданной форме.

> Время жизни объекта совпадает со временем жизни указанной формы.

> > Объект может генерировать событие "ФормаПриСоздании(ИсточникСобытия)" в виде вызова

> System Message: WARNING/2 (`.\extobjs.txt`, line 2072)

> Block quote ends without a blank line; unexpected unindent.

> процедуры модуля формы с одним параметром, если данная процедура определена в модуле формы. Событие вызывается после физического создания формы. Параметр "ИсточникСобытия" у события - это источник события, т.е. объект "Форма" или наследник от класса "Форма".

Пока не выполнено ---

  Событие "ФормаПриСоздании" может также обрабатывать переданный первым параметром КОП-наследник от АктивИкс или ТабличногоПоля. Процедура-обработчик события должна быть объявлена в классе с ключевым словом Экспорт.

  > Событие может быть задано в КОПе и в модуле формы одновременно, в этом случае сначала происходит вызов события в КОПе, затем в модуле формы.

--- Пока не выполнено ---

### СброситьФорму / ResetForm

> Синтаксис: void СброситьФорму()

> Описание: Отменяет привязку объекта класса к переданной форме.

> Время жизни объекта совпадает со временем жизни указанной формы.

### СоздатьЭлементУправления / CreateControl

> Синтаксис: СоздатьЭлементУправления(ИмяОбъектаИлиОбъектКлассаКОП, ИдентификаторЭлементаДиалога)

> Параметры:

> > - ИмяОбъектаИлиОбъектКлассаКОП - тип: Строка или объект класса.

> >   > Если передана строка, пытаемся создать объект класса с таким именем. Если передан объект, используем именно его.

> > - ИдентификаторЭлементаДиалога - тип: Строка или элемент диалога. Идентификатор элемента

> >     диалога, на месте которого будет создан элемент ActiveX.

> Возвращает: тип: Объект. Созданный объект.

> Описание: Создает элемент управления и указывает размещение создаваемого элемента.

> > Также устанавливает префикс для имен процедур-обработчиков событий, расположенных в модуле формы.

> Время жизни объекта совпадает со временем жизни указанной формы.

> Предварительно должна быть установлена привязка объекта к форме методом УстановитьФорму .

Important

Метод работает после физического открытия окна формы (например - в предопределенной процедуре ПослеОткрытия). Метод работает только для реквизитов диалога типа "Текст".

- На текущий момент возможно использование метода для классов, которые являются наследниками встроенных классов АктивИкс или ТабличноеПоле, или для самих объектов типа АктивИкс или ТабличноеПоле.

### СоздатьЭлементУправленияНаФорме / CreateControlOnForm

> Синтаксис: void СоздатьЭлементУправленияНаФорме(Форма, ИмяОбъектаИлиОбъектКлассаКОП, ИдентификаторЭлементаДиалога)

> Описание: Объединяет функционал УстановитьФорму и СоздатьЭлементУправления