1С Документооборот обладает поистине неограниченным функционалом и гибкостью настройки под любые бизнес-процессы компании, вне зависимости от рода её деятельности.
Проще говоря, на данный момент 1С Документооборот является самым мощным и привлекательным продуктом для организации корпоративного документооборота.
Но иногда (часто) возникают ситуации, когда типового функционала не хватает, и требуется реализовать что-нибудь эдакое, что вообще не было предусмотрено разработчиками "из коробки", а вносить изменения в конфигурацию желания нет.
К примеру, мы недавно столкнулись с задачей, когда в процессе согласования первого документа по только что добавленному новому контрагенту, юридической службе необходимо убедиться, что данный контрагент является надёжным поставщиком, и с ним можно без рисков заключать договор, а когда в систему будет добавлен второй/третий/n-ный документ, данная задача в юридический отдел уже не поступала.
Данный механизм отсутствует в типовом решении, но мы можем реализовать его с помощью дополнительных обработчиков бизнес-событий.
Бизнес-событие в системе 1С Документооборот - это некоторое событие в жизни организации, которое должно быть зафиксировано изменением данных в информационной базе.
Такими событиями могут быть, например:
Для обработки событий вызываются различные обработчики этих бизнес-событий, которые по факту совершения события производят определенные действия.
Для начала убедимся, что в нашей системе включена возможность работы с бизнес-событиями:
Проще говоря, на данный момент 1С Документооборот является самым мощным и привлекательным продуктом для организации корпоративного документооборота.
Но иногда (часто) возникают ситуации, когда типового функционала не хватает, и требуется реализовать что-нибудь эдакое, что вообще не было предусмотрено разработчиками "из коробки", а вносить изменения в конфигурацию желания нет.
К примеру, мы недавно столкнулись с задачей, когда в процессе согласования первого документа по только что добавленному новому контрагенту, юридической службе необходимо убедиться, что данный контрагент является надёжным поставщиком, и с ним можно без рисков заключать договор, а когда в систему будет добавлен второй/третий/n-ный документ, данная задача в юридический отдел уже не поступала.
Данный механизм отсутствует в типовом решении, но мы можем реализовать его с помощью дополнительных обработчиков бизнес-событий.
Бизнес-событие в системе 1С Документооборот - это некоторое событие в жизни организации, которое должно быть зафиксировано изменением данных в информационной базе.
Такими событиями могут быть, например:
- записан новый договор,
- зарегистрирован новый исходящий документ,
- в систему был загружен новый файл,
- и т.д.
Для обработки событий вызываются различные обработчики этих бизнес-событий, которые по факту совершения события производят определенные действия.
Для начала убедимся, что в нашей системе включена возможность работы с бизнес-событиями:
После этого, в разделе Настроек и администрирование мы можем зайти и ознакомиться с уже определенными в системе видами бизнес-событий (справочник "виды событий"):
Как только происходит какое-либо из этих событий в системе, об этом заносится соответствующая запись в регистр сведений "Произошедшие бизнес-события":
Для уже имеющихся в системе видов событий система позволяет задать свой собственный обработчик, который будет вызываться каждый раз, как только в системе будет зарегистрировано соответствующее событие.
В нашем примере будет реализована задача создания обработчика события, который бы по результату выполнения задачи проверки контрагента сохранял бы информацию о том, что контрагент – надежный, и фиксировал бы эту информацию в системе.
Чтобы не снимать конфигурацию с поддержки, создадим дополнительное сведение с типом “Булево” в справочнике “Контрагенты”, куда будем записывать состояние контрагента:
В нашем примере будет реализована задача создания обработчика события, который бы по результату выполнения задачи проверки контрагента сохранял бы информацию о том, что контрагент – надежный, и фиксировал бы эту информацию в системе.
Чтобы не снимать конфигурацию с поддержки, создадим дополнительное сведение с типом “Булево” в справочнике “Контрагенты”, куда будем записывать состояние контрагента:
Для реализации программного кода нам потребуется имя данного дополнительного сведения, которое можно найти внутри данного сведения в разделе “Для разработчиков”:
После того, как данное сведение было создано, необходимо для уже имеющихся контрагентов в системе задать данное значение в значение “Истина”, а для новых контрагентов оно по умолчанию будет иметь значение “Ложь”. Самый простой способ сделать это – воспользоваться встроенной в систему обработкой “Групповое изменение реквизитов”: Через “Функции для технического специалиста” находим данную обработку и делаем настройки, как на скриншоте, после чего нажимаем “Изменить реквизиты”:
В настройках обработки выбранного вида документа (например, договора) сделаем первым этапом действие “Проверка по чек-листу”.
На данный этап обработки настроим условие, что данное действие будет выполняться, если у контрагента из документа установлено дополнительное значение “Чек-лист пройден” в значении “ложь”. Именно на данном этапе мы реализуем работу обработчика бизнес-события.
Код алгоритма проверки:
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ДополнительныеСведения.Объект КАК Объект,
| ДополнительныеСведения.Свойство КАК Свойство,
| ДополнительныеСведения.Значение КАК Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект
| И ДополнительныеСведения.Свойство = &Свойство";
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя",
"ЧеклистПройден_fa4e2afaa0c340cca76c0f06c5a603a1");
Запрос.УстановитьПараметр("Объект", Предмет.Контрагент);
Запрос.УстановитьПараметр("Свойство", Свойство);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
Теперь перейдем в справочник «Дополнительные обработчики», который доступен в разделе «Настройка и администрирование-Бизнес-события» и создаём наш собственный обработчик:
В карточке указывается наименование обработчика, код обработки события и обязательно устанавливаем галочку "Обработчик включен":
На закладке "Подписки" мы можем указать, к какому именно виду события, предопределенному в системе, привязываем данный обработчик. В нашем примере мы привязываем обработчик к виду события "Задачи: выполнение":
Код обработчика:
Задача = Событие.Источник.Ссылка;
Документ = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Задача.Предметы);
Если СтрЧислоВхождений(Событие.Источник.Наименование, "Проверка по чек-листу") > 0 Тогда
Контрагент = Документ.Контрагент;
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя",
"ЧеклистПройден_fa4e2afaa0c340cca76c0f06c5a603a1");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеСведения.Объект КАК Объект,
| ДополнительныеСведения.Свойство КАК Свойство,
| ДополнительныеСведения.Значение КАК Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект
| И ДополнительныеСведения.Свойство = &Свойство";
Запрос.УстановитьПараметр("Объект", Контрагент);
Запрос.УстановитьПараметр("Свойство", Свойство);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Значение = ВыборкаДетальныеЗаписи.Значение;
МенеджерЗаписи = РегистрыСведений.ДополнительныеСведения.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = Контрагент;
МенеджерЗаписи.Свойство = Свойство;
МенеджерЗаписи.Значение = Истина;
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЕсли;
Дополнительный обработчик события будет вызываться каждый раз при фиксации в системе события "Задача: выполнение". Т.к. нам интересна только задача с наименованием "Проверка по чек-листу", то данный обработчик будет обрабатывать только задачи с данным наименованием, по остальным задачам никаких изменений в дополнительные сведения по контрагенту вноситься не будут.
Мы оказываем широкий спектр IT-услуг в сфере 1С.
Если Вам необходима консультация, доработка, развертывание или внедрение программных продуктов на базе 1С: Предприятие, мы готовы взяться за вашу задачу в максимально короткие сроки и с высокой степенью фокуса - мы любим наших клиентов, как родных!
Вы можете связаться с нами и задать все интересующие вопросы через форму обратной связи или по телефону, указанном на главной странице сайта.
sale@res-t.ru