gifts2017

Универсальная подсистема "Фабрика событий" v 1.0 + "Доп. права доков" v 2.0 + "Сканы доков" v 2.0

Опубликовал Александр Венгер (venger) в раздел Программирование - Практика программирования

Подсистема рассчитана на установку и работу в любой конфигурации, установка требует минимальных изменений в конфигурации, прописать пару строк в глобальном модуле и объединить с md'шкой (добавляется несколько объектов), подробнее см. описание установки. В дальнейшем, после установки в какую-либо конфигурацию, если обновлять эту конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.
"Фабрика событий" делалась для объединения и совместной работы в одной конфигурации двух подсистем "Доп. права доков" v 2.0 (http://infostart.ru/public/22202/) и "Сканы доков" v 2.0 (http://infostart.ru/public/70831/). Версии 2.0 этих подсистем уже включены и идут совместно с "Фабрикой событий". Чтобы не повторяться, с функционалом объединяемых подсистем можно ознакомиться по приведенным ссылкам.
Если в двух словах. Подсистема "Доп. права доков" позволяет запрещать пользователям системы изменять уже введенные документы тех или иных авторов (запись, проведение, отмена проведения, пометка на удаление, изменение времени). Возможности настройки довольно гибки, для каждого автора каждому виду документов можно указать списки пользователей, которым запрещено изменение или разрешено. После настройки доп. прав, в случае если пользователь, откроет документ, который ему запрещено изменять, изменит его и попытается провести или записать, то это действие будет отменено и ему будет выдано соответствующее сообщение. Тоже в случае попытки отмены проведения уже проведенного документа, пометки на удаление или изменения времени документа в журналах документов.
Подсистема "Сканы доков" позволяет к документам «прикреплять» файлы, на формах у всех документов появляется дополнительная вкладка «Сканы» (генерируется программно), которая позволяет добавлять новые файлы к этим документам (это могут быть картинки сканов-оригиналов документов или doc, pdf, xls – файлы), удалять их, т.е. манипулировать «прикрепленными» к документу файлами, просматривать их, а соответственно и печатать прямо из формы документа.
Подсистема "Фабрика событий" ловит и рассылает события глобального модуля и форм 1С другим классам-подписчикам 1С++, используя механизм класса "МенеджерСобытий" компоненты 1С++. Позволяет объединять в одной конфигурации и параллельно работать нескольким подсистемам (классам) использующим перехват событий глобального модуля и форм. Используются внешние компоненты 1С++ и FormEx.
Выложена демо-конфа, для быстрого ознакомления, в которой установлены все эти три подсистемы и совместно работают, md'шку этой конфы можно использовать для установки в другие конфигурации (см. описание установки).
В демо-конфигурации, есть также простенькие документы "Приход товаров", "Расход товаров" со справочниками "Товары" и "Пользователи", журнал "Общий" и отчет "Остатки товаров" (по регистру остатков "Остатки товаров"), это все можно использовать для тестирования и ознакомления с предлагаемым функционалом подсистем.

ОПИСАНИЕ:

"Фабрика событий" делалась для объединения и совместной работы в одной конфигурации двух подсистем "Доп. права доков" v 2.0 (http://infostart.ru/public/22202/) и "Сканы доков" v 2.0 (http://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.dllhttp://www.1cpp.ru/images/3/32/Icpp-latest.rar
    formex.dllhttp://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);
__Перехватчик__=СоздатьОбъект("Перехватчик");
__Перехватчик__.СнятьПерехватСобытийГлобальногоМодуля();
__КлассФабрикаСобытий__=СоздатьОбъект("__КлассФабрикаСобытий__");
__Перехватчик__.ПерехватитьСобытияГлобальногоМодуля(__КлассФабрикаСобытий__);

// Подключение подсистемы "Доп. права для доков"
__КлассПодсистемыДопПраваДоков__=СоздатьОбъект("__КлассПодсистемыДопПраваДоков__");
__КлассПодсистемыДопПраваДоков__.ПодписатьКлассНаСобытияФабрики(__КлассФабрикаСобытий__);

// Подключение подсистемы "Сканы доков"
__КлассПодсистемыСканыДоков__=СоздатьОбъект("__КлассПодсистемыСканыДоков__");
__КлассПодсистемыСканыДоков__.ДобавитьДопГлобМодуль();
__КлассПодсистемыСканыДоков__.ПодписатьКлассНаСобытияФабрики(__КлассФабрикаСобытий__);

З.Ы. Важен порядок подключения подсистем в коде глобального модуля в процедуре "ПриНачалеРаботыСистемы()", т.е. сначала код подключения "Фабрики событий", потом "Доп. прав доков", потом "Сканов доков", так будет оптимальнее всего.

З.Ы.Ы. В дальнейшем, если обновлять конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.

З.Ы.Ы.Ы. На самом деле можно включать/отключать или не устанавливать ту или иную подсистему в конфигурацию, кроме "Фабрики событий", она должна быть всегда, а также дописывать, под использование с "Фабрикой", новые подсистемы и объединять их в разных вариациях и количествах, на сколько фантазии программиста хватит;-) Вот, например, как тут:

Универсальная подсистема «Подписи/согласования документов»

http://infostart.ru/public/73774/

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
EventFactoryDB.zip
.zip 223,32Kb
26.07.10
285
.zip 223,32Kb 285 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Венгер (venger) 31.05.10 01:01
На самом деле можно включать/отключать или не устанавливать ту или иную подсистему в конфигурацию, кроме "Фабрики событий", она должна быть всегда, а также дописывать, под использование с "Фабрикой", новые подсистемы и объединять их в разных вариациях и количествах, на сколько фантазии программиста хватит;-)
2. Александр Венгер (venger) 31.05.10 11:24
(0) Сегодня-завтра это все буду ставить к себе в реальную базу, может кто чего найдет из багов, глюков и т.п. - пишите, буду рад:-)
3. Андрей Ярошенко (Garstag) 31.05.10 11:42
4. Евгений Мартыненков (JohnyDeath) 31.05.10 12:18
Судя по описанию - хорошая вещь. Работа проделана хорошая.
Подсистему "доп. права документов" можно было бы еще гибче сделать. Посмотри на конфу "СКАТ", там сделано на "регистрах правил"

P.S. Судя по скринам, ты не пользуешься Colorer for Openconf. Ставь скорее - вещь просто незаменимая!
5. Александр Венгер (venger) 01.06.10 12:19
(4)
Судя по скринам, ты не пользуешься Colorer for Openconf


О, спасибо, как-то пропустил эту штуку, а удобно дюже.
6. Илья Жданов (Иероглиф) 02.06.10 10:30
Пока нашел для чего она нужна, вообще мозги начали кипеть - штука полезная для жесткого контроля прав, но просьба, всё таки сначала описывать назначение - желательно небольшим доступным текстом, а потом уже раскрывать как и куда оно подключается и встраивается, честное слово было желание закрыть и не читать дальше и выяснять что это и к чему привязывается, а это 80 % потери потенциальных клиентов.
7. Александр Венгер (venger) 02.06.10 13:08
(6) Описание читайте, там написано:
Если в двух словах...


И пошло описание подсистем вкратце, подробнее - приведены ссылки. Тем более, не только за правами контроль, а и возможность прикреплять файлы к любым документам, а это удобно для бухов для первички.... Т.е. оригиналы-сканы доков с печатями и подписями можно хранить, всякие свифты и т.д. в доках можно хранить....

В общем, применение не ограничивается только правами, читайте внимательно....
8. Илья Жданов (Иероглиф) 02.06.10 13:13
Сударь я всё понимаю конечно - но мне лично приходит расслыка в которой указано "Подсистема рассчитана на установку и работу в любой конфигурации, установка требует минимальных изменений в конфигурации, прописать пару строк в глобальном модуле и объединить с md'шкой (добавляется несколько объектов), подробнее см. описание установки. В дальнейшем, после установки в какую-либо конфигурацию, если обновлять эту конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.
"Фабрика событий" делалась для объединения и совместной работы в одной конфигурации двух подсистем "Доп. права доков" v 2.0 " - честно слово желания открывать и смотреть а что там такое, небыло никакого. Извините, я должен телепатическими данными обладать что бы разгадать гениальность творения ?:)
9. Александр Венгер (venger) 02.06.10 13:21
(8)
я должен телепатическими данными обладать


Было бы неплохо, я про рассылку особо и не подумал, счас поправлю.
10. Илья Жданов (Иероглиф) 02.06.10 13:27
Видимо Вы так и не поняли о чем я говарю, ваше право как преподносить, но товар сначало показывают лицом, мне это напомнило как какой нить знакомый дает свою рекомендацию о новой книге или фильме - сначало идут 5 минут выплескивания эмоций вау хоу это круто это вынос мозга и так далее таких выплесков минут 5 утонуть можно - пока дождешься.. а о чем собствено произведение то, так и хочется скотчем рот залепить и как в том анекдоте - ты не умничай - пальцем покажи ?... :) я же написал вещь полезная, но до сути и предназначения пока дойдешь - пропадает желание смотреть а что это вообще.
11. Александр Венгер (venger) 02.06.10 13:29
(8) Так лучше (на Ваш взгляд)? Если не видите изменений, то нажмите справа в меню ссылку "Очистить кеш публикации (beta)".
12. Илья Жданов (Иероглиф) 02.06.10 13:29
Извините если я несколько сам пережал с эмоциями:) обидеть не хотел - дейсвтительно замечательная и полезная обработка, желаю дальнейших успехов :)
13. Александр Венгер (venger) 02.06.10 13:30
(10) Я понял и, кстати, очень открыт в этом плане для советов, ведь это в моих же интересах....
14. Александр Венгер (venger) 02.06.10 13:31
(12) Так давайте, говорите, оно со стороны виднее, как понятней описать. Я не против, мне сложно просто со стороны оценить качество описания....
15. Илья Жданов (Иероглиф) 02.06.10 13:45
На много лучше - так правльнее, уже в описании при рассылке есть возможность получить информацию по задаче. Но с точки зрения покупателя у него понимание должно идти уже на а уровне названия темы публикации, задач к котрым оно прерасположено, напрмер взять преславутый всеми.. "перенумератор документов" - уже понятно что это такое и за что автора можно заклевать :) - я в том смысле что образ узноваем на уровне темы - да ясна задача - и ясно что это за выложена обработка.
16. Сергей (Che) Коцюра (CheBurator) 08.06.10 02:57
Чувствую, придется внедрить у себя.. посмотрим что там будет...
17. Александр Венгер (venger) 08.06.10 23:57
(16)
придется внедрить у себя..

Когда внедрял, обновлял dll'ки, столкнулся:
http://www.1cpp.ru/forum/YaBB.pl?num=1275411076

З.Ы. Документированный баг восстановления настроек из реестра при обновлении старых версий dll'к

http://www.1cpp.ru/bugs/show_bug.cgi?id=4427
18. Евгений Михайлов (Борода) 06.07.10 22:46
Если в стандартной процедуре записи элемента справочника указан параметр список периодических ( ПриЗаписи(СписПер) ) то выдаёт ошибку.
19. Александр Венгер (venger) 07.07.10 12:04
(18) Поправил, перезалил, попробуйте скачать заново. Изменился только код обработки класса фабрики событий, так что если она у Вас уже стоит в базе, то обновить можно только ее при установке md'шки поверх старой версии....
20. Александр Венгер (venger) 26.07.10 12:58
(0) Поправил класс "Фабрика событий" - вызов оригинальных событий...
21. fastwriter (fastwriter) 02.08.10 08:40
Хотя formex у меня глючил, плюс поставлю за высокий профессиональный уровень данного решения.
22. Андрей Тутов (necros) 05.09.10 10:38
Скачал фабрику в демо конфе все работает, а вот когда обьеденил выдает
__КлассФабрикаСобытий__=СоздатьОбъект("__КлассФабрикаСобытий__");
{Глобальный модуль(4017)}: Неудачная попытка создания объекта (__КлассФабрикаСобытий__)??? Что может быть??
23. Александр Венгер (venger) 07.09.10 11:25
(22) В обработке defcls класс фабрики объявлен?
24. Андрей Тутов (necros) 07.09.10 12:03
Да я уже разобрался. У меня в каталоге базы лежал пустой defcls.prm база из за него ругалась. Как убрал все заработало
25. Сергей (Che) Коцюра (CheBurator) 22.02.11 01:32
когда будет подсистема "сканы справочников"?
26. Лиля Бриг (adverka) 01.03.12 20:24
27. Александр Венгер (venger) 02.03.12 00:08
(25) Ой, Че, извини, что так ее и не сделал, руки не дошли:-) Но в планах есть, хотя и не приоритет... Оч туго со временем в последнее время, просто:-)
28. selesta (selesta) 26.03.12 01:02
по части сканов доков: при открытии документа в момент программного формирования слоя\закладки Сканы проиходит мелькание\мигание экрана, то есть визуально чувствуется процесс и создается впечатление глючности. Переделал этот процесс вместо ПослеОткрытия на ПослеСозданияФормы и все стало чудненько, визуальных эффектов нет. Автору на заметку для следующей версии)) Переделал на хранение вложений в MQ SQL базе, сейчас последние тестирования и до апреля запуск в работу, если интересно могу выложить. Автору спасибо за отличную работу!
29. Андрей Портянко (an_2) 29.05.12 14:23
(25) CheBurator,
А надо?
У меня есть универсальная (сканы всего:) ) сделано но основе этой разработки
30. Александр Венгер (venger) 01.06.12 15:13
(29) Если решишь выложить в свободный доступ - я не против, если что....
31. v_id (v_id) 07.09.12 14:02
Подключил по инструкцию подсистему доп. права пользователей.
Появилась такая проблема, при вводе новых документов ранее даты запрета редактирования программа хоть и ругается, что нельзя создавать, но все равно дает записывать документ. Как я понимаю это из-за перехватчика событий ПриЗаписи()? Что-то можно с этим сделать?
32. Alexandr Климчук (undo) 10.11.13 06:31
Использовал перехватчик предопределённых событий очень давно, тогда или из неверной реализации или по какой другой причине сыпались часто глюки и были пропуски. Сейчас попробую реализовать заново, т.к. есть действующий пример. Спасибо за реализацию.
33. Григорьев Анатолий (ToJIuK) 01.02.14 11:32
Вопрос такой . При интеграции данной подсистемы(Конкретнее меня интересует "Скан документов"),на сколько я понял, вкладка Сканы создается для всех документов. А можно ли Указать список документов для который это нужно . а не для всех .
34. selesta (selesta) 11.02.14 15:59
можно конечно
я делал так:
в файле __КлассПодсистемыСканыДоков__.ert
Функция Событие_ПослеСозданияФормы() Экспорт                     
	Перем СпДокументов;
	
	// ограничим по видам документов 
	СпДокументов = СоздатьОбъект("СписокЗначений");
	СпДокументов.ДобавитьЗначение("Договор");
	СпДокументов.ДобавитьЗначение("Уведомление");
	СпДокументов.ДобавитьЗначение("Дело");
	// ограничим по видам документов 
	
	КонтОбъекта = GetThis(Контекст).ПолучитьКонтекстОкружения();
	Если ТипЗначенияСтр(КонтОбъекта) <> "ГрупповойКонтекст" Тогда
		Если ТипЗначенияСтр(КонтФормы) = "ГрупповойКонтекст" Тогда
			КонтОбъекта= КонтФормы;		
		Иначе
			Возврат 1;
		КонецЕсли;
	КонецЕсли;

	Попытка
		ТекДок = КонтОбъекта.ТекущийДокумент();
		Если ТипЗначения(ТекДок)<>12 Тогда // Тип =12 - Документ
			Возврат 1;
		КонецЕсли;
		// проверка вида документа 
		Если СпДокументов.Принадлежит(ТекДок.Вид()) = 0 Тогда
			Возврат 1;	
		КонецЕсли;                                    
		// проверка вида документа
	Исключение
		Возврат 1;
	КонецПопытки;
	
	ФормаРасш = СоздатьОбъект("РасширениеФормы"); 
	ФормаРасш.УстановитьФорму(КонтОбъекта.Форма);
        // дальше по тексту........
...Показать Скрыть
35. Артем (nexochyka) 03.10.14 08:45
36. Сергей Фамилия (antares2010) 26.11.14 09:59
Всё сделал как написано, но вкладки Сканы в Документах нет. И возможно ли такую вкладку ещё добавить к справочникам? В частности меня интересует справочник номенклатура.
37. Александр Венгер (venger) 26.11.14 13:50
(36)
Всё сделал как написано, но вкладки Сканы в Документах нет.

А в демо-базе, что идет тут, есть вкладка?

И возможно ли такую вкладку ещё добавить к справочникам?

Когда-то были планы сделать и для справочников подсистему, но потом уже руки так и не дошли, да и снеговик (8-ка) уже во всю используется, уже назад к клюшкам (7.7) сильно не вернешься.
38. Сергей Фамилия (antares2010) 27.11.14 12:00
Проверил в демо-базе тоже нету
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа