ОПИСАНИЕ:
"Фабрика событий" делалась для объединения и совместной работы в одной конфигурации двух подсистем "Доп. права доков" v 2.0 (//infostart.ru/public/22202/) и "Сканы доков" v 2.0 (//infostart.ru/public/70831/). Версии 2.0 этих подсистем уже включены и идут совместно с "Фабрикой событий".
Чтобы не повторяться, с функционалом объединяемых подсистем можно ознакомиться по приведенным ссылкам.
Если в двух словах. Подсистема "Доп. права доков" позволяет запрещать пользователям системы изменять уже введенные документы тех или иных авторов (запись, проведение, отмена проведения, пометка на удаление, изменение времени). Возможности настройки довольно гибки, для каждого автора каждому виду документов можно указать списки пользователей, которым запрещено изменение или разрешено. После настройки доп. прав, в случае если пользователь, откроет документ, который ему запрещено изменять, изменит его и попытается провести или записать, то это действие будет отменено и ему будет выдано соответствующее сообщение. Тоже в случае попытки отмены проведения уже проведенного документа, пометки на удаление или изменения времени документа в журналах документов.
Подсистема "Сканы доков" позволяет к документам «прикреплять» файлы, на формах у всех документов появляется дополнительная вкладка «Сканы» (генерируется программно), которая позволяет добавлять новые файлы к этим документам (это могут быть картинки сканов-оригиналов документов или doc, pdf, xls – файлы), удалять их, т.е. манипулировать «прикрепленными» к документу файлами, просматривать их, а соответственно и печатать прямо из формы документа.
Подсистема "Фабрика событий" ловит и рассылает события глобального модуля и форм 1С другим классам-подписчикам 1С++, используя механизм класса "МенеджерСобытий" компоненты 1С++. Позволяет объединять в одной конфигурации и параллельно работать нескольким подсистемам (классам) использующим перехват событий глобального модуля и форм.
Выложена демо-конфа, для быстрого ознакомления, в которой установлены все эти три подсистемы и совместно работают, md'шку этой конфы можно использовать для установки в другие конфигурации (см. описание установки).
В демо-конфигурации, есть также простенькие документы "Приход товаров", "Расход товаров" со справочниками "Товары" и "Пользователи", журнал "Общий" и отчет "Остатки товаров" (по регистру остатков "Остатки товаров"), это все можно использовать для тестирования и ознакомления с предлагаемым функционалом подсистем.
ИСТОРИЯ ВЕРСИЙ ВКЛЮЧЕННЫХ ПОДСИСТЕМ:
Подсистема "Доп. права доков" v 2.0 - дописана для использования совместно с подсистемой "Фабрика событий".
Подсистема "Сканы доков" v 2.0 - дописана для использования совместно с подсистемой "Фабрика событий", исправлен баг с оригинальными событиями, теперь "Фабрика событий" заботится о выполнении оригинальных событий, добавлен минимальный контроль на права, т.е. если форма открыта только на просмотр, то и кнопки редактирования/добавления/удаления сканов будут недоступны или если права подсистемы "Доп. права доков" v 2.0 не позволяют редактировать этот документ, т.е. одна подсистема "знает" о существовании другой.
Подсистема "Фабрика событий" v 1.0 - собственно написана, чтобы объединить две и более других моих подсистем в одной конфигурации.
ИСПОЛЬЗУЮТСЯ ВНЕШНИЕ КОМПОНЕНТЫ:
1С++: http://www.1cpp.ru
FormEx: http://www.dorex.ru
УСТАНОВКА В ДРУГУЮ КОНФИГУРАЦИЮ:
1. Скачать свежие версии внешних компонент 1cpp.dll и formex.dll можно тут:
1cpp.dll: http://www.1cpp.ru/images/3/32/Icpp-latest.rar
formex.dll: http://www.dorex.ru/files/?formex_t.zip
Кидаем их в каталог с базой, либо в папку "\Bin" основной программы и в глобальном модуле в процедуре "ПриНачалеРаботыСистемы()" пишем две строчки:
ЗагрузитьВнешнююКомпоненту("1cpp.dll");
ЗагрузитьВнешнююКомпоненту("formex.dll");
2. Объединить MD'шку демо-конфы с требуемой конфигурацией, выбрав галками, при объединении, только объекты (см. скриншот):
Объявление всех классов 1С++:
Обработка->defcls
Для "Фабрики событий":
Обработка->__КлассФабрикаСобытий__
Для "Доп. прав доков":
Справочник->__ДопПраваДокументы__
Справочник->__ДопПраваПользователи__
Обработка->__НастройкаДопПравДоки__
Обработка->__КлассПодсистемыДопПраваДоков__
Для "Сканов доков":
Документ->__СканыДоков__
Обработка->__УборщикСканов__
Обработка->__КлассПодсистемыСканыДоков__
3. Подключается добавлением в глобальный модуль в процедуру "ПриНачалеРаботыСистемы()", после загрузки внешних компонент 1С++ и FormEx, таких строк (также есть и на скриншоте):
// Подключение подсистемы "Фабрика событий"
__Settings1cpp__=СоздатьОбъект("SettingsManager");
__Settings1cpp__.Set("EnableHookEventsGroupContext",1);
__Перехватчик__=СоздатьОбъект("Перехватчик");
__Перехватчик__.СнятьПерехватСобытийГлобальногоМодуля();
__КлассФабрикаСобытий__=СоздатьОбъект("__КлассФабрикаСобытий__");
__Перехватчик__.ПерехватитьСобытияГлобальногоМодуля(__КлассФабрикаСобытий__);
// Подключение подсистемы "Доп. права для доков"
__КлассПодсистемыДопПраваДоков__=СоздатьОбъект("__КлассПодсистемыДопПраваДоков__");
__КлассПодсистемыДопПраваДоков__.ПодписатьКлассНаСобытияФабрики(__КлассФабрикаСобытий__);
// Подключение подсистемы "Сканы доков"
__КлассПодсистемыСканыДоков__=СоздатьОбъект("__КлассПодсистемыСканыДоков__");
__КлассПодсистемыСканыДоков__.ДобавитьДопГлобМодуль();
__КлассПодсистемыСканыДоков__.ПодписатьКлассНаСобытияФабрики(__КлассФабрикаСобытий__);
З.Ы. Важен порядок подключения подсистем в коде глобального модуля в процедуре "ПриНачалеРаботыСистемы()", т.е. сначала код подключения "Фабрики событий", потом "Доп. прав доков", потом "Сканов доков", так будет оптимальнее всего.
З.Ы.Ы. В дальнейшем, если обновлять конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.
З.Ы.Ы.Ы. На самом деле можно включать/отключать или не устанавливать ту или иную подсистему в конфигурацию, кроме "Фабрики событий", она должна быть всегда, а также дописывать, под использование с "Фабрикой", новые подсистемы и объединять их в разных вариациях и количествах, на сколько фантазии программиста хватит;-) Вот, например, как тут:
Универсальная подсистема «Подписи/согласования документов»