]>
![]() |
|
|
В состав 1С++ входят дополнительные типы объектов и элементы управления.
Класс РаботаСРегистромWin / WorkAsRegisterWin
Предназначен для работы с реестром "Windows" в стиле языка 1С : Предприятия.
Позволяет:
Синтаксис: СоздатьКлюч(Ключ, Имя, Режим)
Параметры:
Ключ - тип: Строка. Название ветви реестра. Названия строго определены и бывают следующих видов:
- 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 - ключ успешно создан
Описание: Создает в реестре ключ с указанным именем.
Синтаксис: ОткрытьКлюч(Ключ, Имя, Режим)
Параметры:
Ключ - тип: Строка. Название ветви реестра. Названия строго определены и бывают следующих видов:
- 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 - ключ открыт
Описание: Открывает ключ реестра с указанным именем.
Синтаксис: ПодключитьРегистр(ИмяУдаленногоКомпьютера, Ключ)
Параметры:
ИмяУдаленногоКомпьютера - тип: Строка. Cетевое имя компьютера, к реестру которого необходимо подключиться (например: \computername). Если указать пустую строку, то метод подключится к локальной машине.
Ключ - тип: Cтрока. Название ветви реестра. Названия строго определены и бывают следующих видов:
- HKEY_LOCAL_MACHINE
- HKEY_USERS
Возвращает: Число.
- 0 - ошибка
- 1 - соединение установлено
Описание: Подключает объект к реестру удаленного компьютера.
Примечание: для возможности успешного подключения к компьютеру с установленной операционной системой Windows 95 необходимо инсталлировать на нем "Microsoft Remote Registry service".
Синтаксис: УдалитьКлюч(ИмяПодКлюча)
Параметры:
- ИмяПодКлюча - тип: Строка. Имя удаляемого подключа.
Возвращает: Число.
- 0 - была ошибка
- 1 - удаление закончено успешно
Описание: Удаляет подключ ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.
Синтаксис: УдалитьЗначение(ИмяЗначения)
Параметры:
- ИмяЗначения - тип: Строка. Имя удаляемого значения.
Возвращает: Число.
- 0 - была ошибка
- 1 - удаление закончено успешно
Описание: Удаляет значение в ключе, открытом ранее функцией ОткрытьКлюч или СоздатьКлюч.
Синтаксис: УстановитьЗначение(ИмяЗначения, ТипЗначения, Значение)
Параметры:
ИмяЗначения - тип: Строка. Название значения в ключе.
ТипЗначения - тип: Строка. Может принимать только два значения:
- "REG_SZ" - тип значения строка
- "REG_DWORD" - тип значения целое число
Значение - тип: Строка, Число. Значение, которое необходимо установить, зависит от типа, установленного в предыдущем параметре.
Возвращает: Число.
- 0 - была ошибка
- 1 - установка закончена успешно
Описание: Устанавливает значение, указанное в параметре ИмяЗначения ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.
Синтаксис: ЗапроситьЗначение(ИмяЗначения, Значение)
Параметры:
- ИмяЗначения - тип: Строка. Название значения в ключе.
- Значение - тип: Имя переменной. Переменная для приема запрошенного значения.
Возвращает: Число.
- 0 - была ошибка
- 1 - запрос закончен успешно
Описание: Запрашивает значение, указанное в параметре ИмяЗначения ключа, открытого ранее функцией ОткрытьКлюч или СоздатьКлюч.
Примечание: Если операция выполнена успешно, то результат будет в Значение. Тип значений, которые можно получить, может быть только "REG_SZ" или "REG_DWORD".
Синтаксис: ВыбратьКлючи()
Возвращает: Число. Количество выбранных подключей.
Описание: Открывает выборку подключей ключа, установленного функцией ОткрытьКлюч или СоздатьКлюч.
Синтаксис: ПолучитьКлюч(ИмяПодКлюча)
Параметры:
- ИмяПодКлюча - тип: Имя переменной. Переменная для приема названия подключа.
Возвращает: Число.
- 0 - выборка пуста
- 1 - в выборке еще есть подключи
Описание: Получает следующее название подключа из выборки, открытой ранее методом ВыбратьКлючи.
Синтаксис: ВыбратьЗначения()
Возвращает: Число. Количество - значений в выборке.
Описание: Открывает выборку значений ключа, установленного функцией ОткрытьКлюч или СоздатьКлюч.
Синтаксис: ПолучитьЗначение(ИмяЗначения)
Параметры:
- ИмяЗначения - тип: Имя переменной. Переменная, в которую возвращается строковое название значения.
Возвращает: Число.
- 0 - выборка пуста
- 1 - в выборке еще есть значения
Описание: Получает следующее название значения из выборки, открытой ранеее методом ВыбратьЗначения.
Синтаксис: ОтладочныеСообщения(Включить)
Параметры:
Включить - тип: Число.
- 0 - Отключить
- 1 - Включить
Описание: Включает/отключает отладочные сообщения при возникновении ошибок работы с реестром.
Синтаксис: ЗаписатьВсеАтрибуты()
Описание: Немедленно записать изменения, внесенные ранее в реестр.
Класс ВыполняемыйМодуль / ExecuteModule
Предназначен для работы с динамическими модулями, передаваемыми в параметре метода в качестве строки.
После установки текста модуля скомпилируйте и выполните его. Модуль инициализируется и выполнит операторы, расположенные в конце тела модуля, вне методов. После этого можно обращаться к переменным модуля, как к свойствам этого объекта, и к методам модуля, как к методам объекта.
Доступ: чтение и запись.
Тип: Любой.
Описание: Позволяет обращаться к переменным модуля, объявленным в тексте модуля, как к свойствам объекта.
Синтаксис: Соответствует синтаксису метода модуля.
Параметры: Соответствуют параметрам меода модуля.
Описание: Позволяет обращаться к методам, определенным в тексте модуля, как к своим методам.
Синтаксис: УстановитьМодуль(стрТекстМодуля)
Параметры:
- стрТекстМодуля - тип: Строка. Текст модуля.
Описание: Устанавливает текст модуля на выполнение.
В модуле возможно определять любые функция, процедуры и параметры, доступ к которым возможно осуществлять, через оператор-селектор .(точка) объекта класса ВыполняемыйМодуль, после компилирования и запуска.
Синтаксис: НазначитьКонтекст(Контекст)
Параметры:
- Контекст - тип: ГрупповойКонтекст, АгрегатныйОбъект. Назначаемый контекст.
Описание: Устанавливает контекст модуля.
Метод должен вызыватся до компиляции модуля. При этом к методам и свойствам назначенного контекста в тексте модуля можно будет обращаться напрямую, без указания имени объекта.
Синтаксис: ПрисоединитьТекущийМодуль()
Описание: Присоединяет модуль, который в данный момент выполняется.
Это позволяет в установленном модуле объекта обращаться напрямую к переменным и методам текущего модуля (т.е. модуля, в котором идет работа в данный момент с объектом класса ВыполняемыйМодуль).
Синтаксис: КомпилироватьМодуль()
Возвращает: Число.
- 1, если компиляция прошла успешно
- 0 в случае неудачи
Описание: Компилирует модуль, установленный с помощью метода УстановитьМодуль.
Синтаксис: ВыполнитьМодуль()
Возвращает: Число.
- 1, если выполнение начато успешно
- 0 в случае неудачи
Описание: Выполняет модуль, установленный с помощью метода УстановитьМодуль и откомпилированный методом КомпилироватьМодуль.
При этом происходит инициализация выполнения модуля и выполняются операторы тела модуля. После этого ВыполняемыйМодуль готов к использованию, и позволяет обращаться к переменным и методам модуля, как к своим свойствам и методам.
Синтаксис: GetMethOfContext(Объект, тзМетоды = 0, тзСвойства = 0)
Параметры:
- Объект - тип: Контекст, АгрегатныйОбъект. Объект, для которого необходимо получить описание.
- тзМетоды - тип: ТаблицаЗначений. ТЗ, в которую будет возвращено описание методов объекта.
- тзСвойства - тип: ТаблицаЗначений. ТЗ, в которую будет возвращено описание свойств объекта.
Описание: Предоставляет информацию о методах и свойствах объекта.
Если задана хотя бы одна из таблиц (тзМетоды, тзСвойства), описание возвращается в соотв. таблице. Иначе описание выводится в окно сообщений.
Синтаксис: СформироватьОшибку(ТекстОшибки)
Параметры:
- ТекстОшибки - тип: Строка. Сообщение об ошибке.
Описание: Останавливает выполнение текущего модуля.
При этом выводится сообщение об ошибке, переданное в параметре метода ТекстОшибки.
Синтаксис: ОчиститьПозициюПроведения()
Описание: Очищает позицию проведения и сохраняет текущую в объекте.
Далее в модуле документа можно проводить другие документы и отменять проведение других документов, после выполнения этих операций необходимо восстановить позицию с помощью метода ВосстановитьПозициюПроведения, описанного ниже.
Внимание! Проверка работоспособности метода была произведена только на релизе 1С 7.70.017.
Синтаксис: ВосстановитьПозициюПроведения()
Описание: Восстанавливает позицию проведения текущего документа, очищенную с помощью метода ОчиститьПозициюПроведения.
Методы ОчиститьПозициюПроведения и ВосстановитьПозициюПроведения необходимо вызывать всегда в паре в указанной последовательности!!!
Внимание! Проверка работоспособности метода была произведена только на релизе 1С 7.70.017.
Синтаксис: ВыброситьИскл(ОбъектИскл, [ТекстИскл])
Параметры:
- ОбъектИскл - тип: Любой. Параметр, который потом можно получить при обработке исключения методом ПолучитьИсключение.
- ТекстИскл - тип: Строка. Сообщение об ошибке. По умолчанию "".
Описание: Формирует исключение с объектом, который можно получить при перехвате/обработке исключения с помощью метода ПолучитьИсключение.
При обработке исключения текст сообщения об ошибке можно получить с помощью глобальной функции ОписаниеОшибки(). Если исключение не обработано, этот текст будет выведен в окно сообщений.
Синтаксис: ПолучитьИсключение()
Возвращает: объект-исключение, параметр ОбъектИскл, переданный в метод ВыброситьИскл.
Описание: Получает объект исключения.
Используется в обработчиках исключений для получения объекта исключения, переданного в метод ВыброситьИскл, или метода функционала класса _ВыброситьИскл|_1cpp_oop__throw_.
Синтаксис: КомпилироватьИВыполнитьМодуль()
Описание: Компилирует и выполняет модуль, установленный с помощью метода УстановитьМодуль .
При этом происходит инициализация выполнения модуля и выполняются операторы тела модуля. После этого ВыполняемыйМодуль готов к использованию, и позволяет обращаться к переменным и методам модуля, как к своим свойствам и методам. В случае ошибок синтаксиса в тексте модуля или ошибок выполнения генерируется исключение.
Синтаксис: РазрешитьИсключения()
Описание: Включает флаг выдачи исключений вместо показа ошибок в окне сообщений.
После выполнения данного метода методы ВыполнитьМодуль, КомпилироватьМодуль вызывают исключение в случае ошибки, а не выдают сообщение в окно сообщений. В случае ошибок синтаксиса в тексте модуля или ошибок выполнения генерируется исключение. Метод КомпилироватьИВыполнитьМодуль всегда выбрасывает исключения, независимо от выполнения данного метода.
Класс Делегат / Delegate
Данный класс представляет собой хранилище ссылок на методы экземпляров агрегатных объектов 1С. С помощью этого класса возможно вызывать группу методов с одинаковой сигнатурой (возвращаемый параметр, количество параметров или их отсутствие).
Использование делегата позволяет писать обобщенные алгоритмы и делать групповые вызовы методов.
Синтаксис: ОпределитьТип(чКолПарам, флЕстьВозврат, [флПрерыватьВыполнение = 0]) Параметры:
- чКолПарам: Число
Количество параметров, которые будут передаваться в методы делегата
- флЕстьВозврат: Число
Флаг наличия возвращаемого значения
- 1 - методы в делегате есть функции
- 0 - методы в делегате есть процедуры
- флПрерыватьВыполнение: Число
Флаг прерывания выполнения по условию
- 1 - методы Вызвать и ВызватьПоКлючу прерывают выполнение цепочки, если при вызове очередной функции возвращенное значение равно 0
- 0 - методы Вызвать и ВызватьПоКлючу всегда проходят цепочку вызова полностью
Возвращает: нет Описание: Задает сигнатуру хранимых в Делегате методов.Сигнатура - количество параметров и тип (функция / процедура) методов
Синтаксис: Добавить(ЭкземплярАгрегатногоОбъекта, стрИмяМетода, [стрКлюч = ""]) Параметры:
- ЭкземплярАгрегатногоОбъекта: ГрупповойКонтекст, АгрегатныйОбъект
Объект, метод которого будет сохранен для вызова
- стрИмяМетода: Строка
Имя метода, который будет вызван
- стрКлюч: Строка
Если указан - можно вызывать метод по указанному ключу с помощью метода делегата ВызватьПоКлючу
По умолчанию используется ключ ""Возможна реализация обработчика по умолчанию для ситуаций вызова по несуществующим ключам(см. описание метода ВызватьПоКлючу)Возвращает: Число
- 1 - добавление метода прошло успешно
Описание: Устанавливает/добавляет в делегат ссылки на метод агрегатного объекта для его дальнейшего вызоваСигнатура метода объекта для установки должна соответствовать указанной в ОпределитьТипПримечание: Возможно использование одинаковых методов для любых сочетаний ключей и агрегатных объектовКоличество ключей не регламентируетсяКоличество методов в пределах ключа не регламентируетсяКлючи и имена методов являются регистронезависимыми
Синтаксис: Удалить(ЭкземплярАгрегатногоОбъекта, стрИмяМетода) Параметры:
- ЭкземплярАгрегатногоОбъекта: ГрупповойКонтекст, АгрегатныйОбъект
Объект, ссылка на метод которого была сохранена ранее
- стрИмяМетода: Строка
Имя метода, ссылка на который была сохранена ранее
Возвращает: Число
- 1 - удаление прошло успешно
- 0 - ссылок не найдено
Описание: Удаляет все ссылки на заданный метод указанного агрегатного объекта во всех ключах
Синтаксис: УдалитьПоКлючу(стрКлюч) Параметры:
- стрКлюч: Строка
Ключ, по которому происходит поиск методов объектов
Возвращает: Число
- 1 - удаление прошло успешно
- 0 - для указанного ключа ссылок не найдено
Описание: Удаляет все ссылки на методы агрегатных объектов по заданному ключуКлюч задается при добавлении ссылки на метод, третьим параметром в Добавить
Синтаксис: Вызвать(...) Параметры:
- ...:
Количество параметров или их отсутствие определяется сигнатурой делегата, заданной ранее методом ОпределитьТип
Возвращает: Наличие и тип возвращаемого значения определяется сигнатурой делегата Описание: Вызывает все методы всех ключей, находящихся в делегате, с учетом параметра чПрерыватьВыполнение, заданного ранее методом ОпределитьТип Примечание: Порядок вызова в пределах ключа регламентируется порядком добавления метода в делегат методом Добавить.Порядок перебора ключей не определен.
Синтаксис: ВызватьПоКлючу(стрКлюч, ...) Параметры:
- стрКлюч: Строка
Ключ, по которому происходит поиск ссылки
- ...:
Количество параметров или их отсутствие определяется сигнатурой делегата, заданной ранее методом ОпределитьТип
Возвращает: Наличие и тип возвращаемого значения определяется сигнатурой делегата Описание: Вызывает все методы указанного ключа, находящиеся в делегате, с учетом параметра чПрерыватьВыполнение, заданного ранее методом ОпределитьТип Примечание: Порядок вызова в пределах ключа регламентируется порядком добавления метода в делегат методом Добавить Обработчик по умолчанию: Если указанный ключ в делегате не задан, вызывается обработчик по умолчанию по ключу "__default" (должен быть предварительно определен методом Добавить)
Если обработчик по умолчанию также не задан, не вызывается ничегоОбработчик по умолчанию учитывает значение параметра чПрерыватьВыполнение в общем порядке
Синтаксис: Очистить() Описание: Удаляет из делегата все установленные в нем ранее методы для всех ключей.Сигнатура делегата после выполнения метода Очистить() не определена.
Синтаксис: Пустой() Возвращает: Число
- 1, если делегат не содержит ссылок на методы
- 0, если содержит
Описание: Проверяет наличие сохраненных ссылок
Класс МенеджерСобытий / EventManager
Данный класс предназначен для обработки событий, возникающих в классах КОП и других контекстах использования менеджера.
Например: Есть класс, который формирует различные события и называется он "ФабрикаСобытий" (издатель событий). Предположим, что обращение к его открытым методам "Событие_1" и "Событие_2" приводят к возникновению событий в системе от этого класса. Далее, у нас есть несколько классов, которые хотят подписаться на события (подписчики событий), формируемые классом "ФабрикаСобытий", назовем их "ОбработчикСобытий_1" и "ОбработчикСобытий_2". Экземпляры классов-обработчиков событий (подписчиков) определяют свои методы, которые будут вызываться при возникновении в экземпляре класса "ФабрикаСобытий" определенных событий. Далее опишем методы класса "МенеджерСобытий" и приведём с краткими пояснениями пример кода, реализующий описанную схему.
Синтаксис: Пустой()
Возвращает: Число.
- 1, подписчиков нет
- 0, подписчики есть
Описание: Проверяет наличие в менеджере событий подписчиков.
Синтаксис: ДобавитьОбработчикСобытия(копПодписчик, стрИмяМетода)
Параметры:
- копПодписчик - тип: КОП. Экземпляр класса-подписчика.
- стрИмяМетода - тип: Строка. Имя метода-обработчика класса-подписчика, который будет вызываться при возникновении событий, управляемых классом-менеджером.
Возвращает: Число.
- 1 - Добавление подписчика прошло успешно
- 0 - Данный подписчик с таким методом уже зарегистрирован в менеджере событий
Описание: Подписывает на событие экземпляр класса-подписчика событий.
Метод-обработчик события должен быть членом класса-подписчика и принимать два параметра по умолчанию:
- Publisher или Издатель, в этот параметр передается экземпляр класса - издателя
- ExtParametrs или ДопПараметры, в этот параметр передается любая информация, посланная с помощью метода ПослатьСобытие.
Количество параметров, заданных по умолчанию, возможно изменить с помощью установки отдельно созданного делегата - передать его в качестве параметра метода УстановитьДелегата, или передать число параметров в метод УстановитьКоличествоПараметров.
Каждый метод-обработчик обязан возвращать числовое значение. Если функция возвращает 0, то цепочка обработки события прерывается на данном подписчике, т.е. если у нас есть менеджер событий, в котором зарегистрировано 5 подписчиков и 2-ой по счету в своей функции возвращает 0, то 3 последующих подписчика не получат данное событие, другими словами - рассылка будет прервана на подписчике с номером 2. Если же функция возвращает любое другое числовое значение, отличное от нуля, то рассылка события менеджером не прерывается.
Синтаксис: УдалитьОбработчикСобытия(копПодписчик, стрИмяМетода)
Параметры:
- копПодписчик - тип: КОП. Экземпляр класса-подписчика.
- стрИмяМетода - тип: Строка. Имя метода-обработчика класса-подписчика.
Возвращает: Число.
- 1 - с подписки снят
- 0 - нет, данный подписчик ранее не был зарегистрирован методом ДобавитьОбработчикСобытия.
Описание: Снимает с подписки экземпляр класса-подписчика, ранее подписавшегося на него с помощью ДобавитьОбработчикСобытия.
Синтаксис: ПослатьСобытие(Издатель, ДопПараметр)
Параметры:
- Издатель - тип: ГрупповойКонтекст, КОП. Контекст окружения, в котором возникло событие или контекст экземпляра класса-издателя
- ДопПараметр - тип: Любой. Любая дополнительная информация, которая будет доступна в методе экземпляра класса-подписчика во втором параметре.
Возвращает: Число.
- 1 - цепочка рассылки событий пройдена полностью
- 0 - рассылка была прервана одним из подписчиков
Описание: Посылает событие всем зарегистрировавшимся подписчикам на него.
Синтаксис: УстановитьДелегата(ЭкземплярДелегата)
Параметры:
- ЭкземплярДелегата - тип: Делегат. Экземпляр делегата, через который будет осуществляться вызов методов-обработчиков.
Возвращает: Делегат. Установленный ранее делегат, или делегат по умолчанию, содержащийся в текущем менеджере событий.
Описание: Устанавливает делегата для вызова методов-обработчиков.
Синтаксис: Очистить()
Параметры:
Описание: Очищает менеджер событий от подписчиков.
Синтаксис: УстановитьКоличествоПараметров(чКолвоПарам)
Параметры:
- чКолвоПарам - тип: Число. Новое количество параметров.
Описание: Устанавливает количество параметров, которые должны принимать подписчики и количество параметров, которые необходимо передавать в метод ПослатьСобытие.
Данный метод удаляет всех подписчиков, установленных ранее в менеджере событий.
Определение класса "ФабрикаСобытий":
класс ФабрикаСобытий=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
Данный класс предназначен для имитирования структуры данных других языков. Структура является динамическим объектом, что означает возможность программного управления количеством и названиями свойств структуры.
Доступ: чтение и запись.
Тип: Любой.
Описание: Позволяет обратиться к свойству, добавленному методом Вставить.
Синтаксис: Вставить(стрКлюч, [нЗначение], [чРежим])
Параметры:
стрКлюч - тип: Строка. Название свойства структуры.
Если такое свойство уже существует - то его значение изменяется, если не существует - создается новое
нЗначение - тип: Любой. Значение свойства, которое необходимо установить.
чРежим - тип: Число.
- 0 - нЗначение сохраняется в структуре по ссылке
- 1 - нЗначение сохраняется в структуре по значению
По умолчанию - 1.
Описание: Добавляет свойство в структуру.
В структуре хранятся копии нЗначение.
Синтаксис: Количество()
Возвращает: Число. Количество свойств структуры.
Описание: Возвращает количество свойств структуры, добавленных методом Вставить.
Синтаксис: Очистить()
Описание: Удаляет все свойства структуры.
Синтаксис: Свойство(стрКлюч, [нЗначение])
Параметры:
- стрКлюч - тип: Строка. Название для поиска свойства структуры.
- нЗначение - тип: Имя переменной. В данный параметр возвращается найденное значение. Если ключа нет в структуре, то возвращается пустое значение неопределенного типа.
Возвращает: Число.
- 1 - свойство с ключом найдено
- 0 - не найдено
Описание: Позволяет получить значение свойства по указанному имени, а также проверить, имеется ли указанное свойство.
Синтаксис: Удалить(стрКлюч)
Параметры:
- стрКлюч - тип: Строка. Название удаляемого свойства структуры.
Описание: Удаляет элемент структуры с заданным ключом. Если ключа не существует, выдается исключение.
Синтаксис: Получить(чИндекс, [стрИмяСвойства])
Параметры:
- чИндекс - тип: Число. Номер поля по порядку от 1 до Количество
- стрИмяСвойства - тип: Имя переменной. В нее записывается имя свойства, полученное по его номеру.
Возвращает: Значение свойства, полученное по его номеру.
Описание: Позволяет получать по индексу значение свойства и его имя.
Синтаксис: ЕстьСвойство(стрИмя)
Параметры:
- стрИмя - тип:
Возвращает: Число. Индекс найденного свойства, начиная с 1. Если свойство не найдено, 0.
Описание: Проверяет, есть ли свойство с таким именем.