|
1C: Документооборот Можно ли настроить старт БП по получению электронного письма | ☑ | ||
---|---|---|---|---|
0
Strelolga
29.03.16
✎
14:42
|
Добрый день! Внедряем 1с документооборот 2.0 корп.
Возникла необходимость: пользователь отправляет письмо на почтовый ящик (создали отдельный, завели учетку в Документообороте, письма получить можно). при получении письма автоматически стартует БП, состоящий из уведомления и поручения? И как реализовать старт при получении письма? |
|||
1
AceVi
29.03.16
✎
15:05
|
(0) И в чем проблема то? Я делал такой функционал, правда стандартную конфу чуть дописывал(хотя мог бы и полностью весь функционал в отдельный(свой) модуль вынести, просто скопировал бы кусок стандартного).
Делаешь рег задание которое каждые 10 минут читает почту. почту читать 1С умеет. сделай для письма какие либо обязательные символы(например - самые 3 ервых символа это управляющий код для создания того или иного задания) и обяжи пользователей их проставлять. или даже проще - все письма которые приходят на конкретный почтовый адрес - преобразуються в задачи в 1С. Ты проблему уточни, что конкретно не знаешь как делать. |
|||
2
Strelolga
29.03.16
✎
15:10
|
Ну вот получила я почту. Есть кнопку - создать входящий документ. Создала шаблон входящего документа - Письмо. Я хочу чтобы, когда приходит письмо на конкретный адрес, стартовался БП, состоящий из 1ой функции: поручение отдела бухгалтерии ввести нового контрагента в программу и все. Про рег задания я поняла - рег заданием создаю из письма документ входящий. так?
|
|||
3
vde69
29.03.16
✎
15:18
|
(2) не стоит поручать почте то, что ДОЛЖЕН делать юзер !!!!
Пусть заходят в документооборот и делают нормальный БП... все эти "управление через почту" вылезает боком хотя-бы по причине глюков почты (не дошло, или дошло несколько раз, или на него ответили) почту можно использовать только для получения уведомлений но никак не для управления... |
|||
4
AceVi
29.03.16
✎
15:18
|
(2) сначала напиши полный круг задач которые будут запускаться из писем, а потом пронумеруй их.
Например : СОздание контрагента - 001, Оплата счета - 002 и т.д. - и сделай что бы этот номер был обязательно первые 3 символа в письме. иначе письмо не будет зарегестрировано в 1С как задача. Вот у тебя теперь есть четкое понимание для какой задачи письмо. Потом создавай на каждую задачу шаблон. и когда приходит письмо с тем или иным кодом создаешь задачу и заполняешь ее по соответсвующему шаблону(там есть стандартные функции для этого) |
|||
5
AceVi
29.03.16
✎
15:21
|
(3) ага, я 100 раз говорил это людям - но собственники хотят только так и никак иначе(например в моем случае согласовывать любые счета только через почту не заходя в 1С).
|
|||
6
vde69
29.03.16
✎
15:23
|
(5) это не возможно... если хотят не залазить в 1с, то есть 2 варианта
1. завести для них секретуток, которые будут за них в 1с работать 2. сделать для них отдельную WEB морду (можно даже похожую на почту) и пусть хоть с телефона согласуют |
|||
7
AceVi
29.03.16
✎
15:31
|
(6) Очень даже возможно - я же сделал(причем там целая цепочка задач). Просто у пользователя всегда перед глазами в нужный момент напоминалка(например формат не подходит - 1с в ответном письме спрашивает и уточняет задание - например говорит - возможно вы имелли ввиду задачу "Завести контрагента - 001" и пользователь уже точно пришлет верное письмо.
1. Дорого - деньги - зачем? если можно условиться о паре значений и определенных форм письма. 2. предлагал - не хотят - хотят с помощью своей почты управлять согласованием и другими процессами. |
|||
8
vde69
29.03.16
✎
15:35
|
(7) создание БП - это транзакция, почта не имеет к транзакциям никакого отношения, она не может отслеживать получение письма в целостности....
конечно тут как говорится на цвет и вкус все фломастеры разные, но задай им вопрос "почему клиент банки на почте не делают????" |
|||
9
Strelolga
29.03.16
✎
15:40
|
(4)Потом создавай на каждую задачу шаблон. и когда приходит письмо с тем или иным кодом создаешь задачу и заполняешь ее по соответсвующему шаблону(там есть стандартные функции для этого)
Создала шаблон вх документа - письмо создала шаблон БП - согласование заявок на заведение контрагента как создать задачу, если пришло письмо с заданным кодом? (через регламентное задание?) |
|||
10
AceVi
29.03.16
✎
15:40
|
(8) Потому что безопастность? Структурированные данные?
А так у меня к нескольким банкам к их выгрузке в 1С пара вопросов. не соблюдают они формат и обязательные поля) Для управления процессами этого не требуется. |
|||
11
vde69
29.03.16
✎
15:43
|
(10) клиент банк - это и есть запуск БП по расходованию текущих ресурсов (денег). БП в документообороте ничем не отличается от заявки в клиент банке, только он расходует обычно не деньги а время, что в общем случае то же деньги...
|
|||
12
Cyberhawk
29.03.16
✎
15:46
|
Старт заявок (БП) по входящему письму - нормальная практика, много где такое видел, в т.ч. и у себя на одном из фиксов
|
|||
13
vde69
29.03.16
✎
15:46
|
(11) +
и даже урон компания может получить очень неслабый, например: стартанули БП "оплатить НДС на сумму 1000тр", у тебя шаблон распознал как 1000 руб (а не лям что было в письме), в результате оплатят только 1/10 налога и кто будет виноват? начальник - у меня в письме 1000тыр исполнитель - в БП 1000 руб программист (доставая вазелин) - ну я не досмотрел.... |
|||
14
Карупян
29.03.16
✎
15:47
|
(13) Такую умную систему никто и не предлагает
|
|||
15
Карупян
29.03.16
✎
15:48
|
Старт БП - это не есть старт автоматической обработки данных
|
|||
16
vde69
29.03.16
✎
15:49
|
(14) уверяю тебя как только запускают на простых, следом идут более сложные задачи... в сабже есть АРХИТЕКТУРНЫЙ косяк который обязательно выскочит и больно ударит...
|
|||
17
vde69
29.03.16
✎
15:50
|
ответственность за корректность данных в БП на ком????
|
|||
18
Карупян
29.03.16
✎
15:52
|
(13) По идее должно быть так.
Кинули письмо" Оплатить НДС ххх руб. Стартовал БП Ответственный получил уведомление и сформировал платежку |
|||
19
Карупян
29.03.16
✎
15:53
|
Примерный аналог, что нач кинул письмо непосредственно исполнителю
|
|||
20
AceVi
29.03.16
✎
15:54
|
(9) Может все таки ВнутреннийДокумент(и создать вид для него ЭлектронноеПисьмо). а не входящий?
Сейчас уже под рукой нет базы документооборота. Уточни вопрос - что значит КАК создать? как прочитать письмо? как распознать какое задание создавать из него? как получиться шаблон? как на основании шаблона создать задачу? (16) (17) Ты слишком заморачиваешься - просто договариваешься - вот шаблон письма все что не подходит под шаблон я ответсвенности не несу и все. Да есть косяк - но его точно так же можно обойти и свести к минимуму, проблем с этим нет. просто четко налаженный бизнес процесс. |
|||
21
vde69
29.03.16
✎
15:54
|
(17)+ почему все загрузки из файлов и т.д. загружают в открытую форму, но не записывают ее ???
по тому, что человек должен взять ответственность за результат на себя, и нажимая кнопку ОК он эту ответственность принимает... Представьте например автоматическую загрузку банковских выписок из клиент банка в фоновом режиме, удобно, классно, но ни один руководитель такое не разрешит.... |
|||
22
vde69
29.03.16
✎
15:55
|
(20) просто я в банке работал :)
|
|||
23
Карупян
29.03.16
✎
15:57
|
(22) И поэтому любой БП - это списание и выдача бабла )))
|
|||
24
AceVi
29.03.16
✎
15:59
|
(21) Аха, пальцем в небо. я делал уже 2 раза автоматическую загрузку банковских выписок. По анализу НазначенияПлатежа. с логами всех действий робота. и все что делает в конце пользователь просто сверяет обороты и все. Есть расхождения копается - нет, его работа закончена. все работает, работу пользователя уменьшили на 90%.
Просто грамотно поставили процесс контроля и все - ошибок при загрузке не пропускаются. Согласись контролировать только ошибки легче чем контролировать загрузку каждого файла и документа в нем. |
|||
25
Strelolga
29.03.16
✎
16:05
|
(20) Я думала. что письма - это входящие документы. Есть обработка - загрузка почты. Там вижу письмо. Внизу есть кнопка -создать внутр документ (вход / исход). по этой кнопке создается документ по заданному шаблону. Создала шаблон БП, привязала его к шаблону документа. При создании документа "Заявка" стартуется БП. 1. Видимо, мне необходимо через рек задание сделать нажатие кнопки "создать документ"? 2. В таком случае в базе будут хранится внутренние документы по заведению контрагентов. Можно ли просто хранить письма, как письма а не документы (внтр/вход) и при этом автоматизировать старт БП?
|
|||
26
AceVi
29.03.16
✎
16:15
|
(25) Надо делать не так. не надо хранить письма как документы базы документооборот. Просто рег заданием читаешь почту и запоминаешь только одно - обработала ты это письмо или нет. Сам текст письма копируешь в описание бизнес процесса и все.
Следовательно создавать нужно только бизнес процессы на основании шаблона. |
|||
27
spock
29.03.16
✎
16:30
|
(0) смотри про детекторы бизнес-событий. Настраивается это.
|
|||
28
Strelolga
30.03.16
✎
09:39
|
(26) пишу регламентную обработку, которая стартует бизнес-процесс приема заявок через электронные письма. Не могу добавить в предмет бизнес-процесса письмо. В шаблоне указала. что основной предмет - письмо (Тип - входящее письмо)
роцедура ВызовСервера() ИнтернетПрофиль = Новый ИнтернетПочтовыйПрофиль; УчЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("[email protected]"); ИнтернетПрофиль.АдресСервераPOP3 = УчЗапись.СерверВходящейПочтыPOP3; ИнтернетПрофиль.АдресСервераSMTP = УчЗапись.СерверИсходящейПочтыSMTP; ИнтернетПрофиль.Пользователь = УчЗапись.Пользователь; ИнтернетПрофиль.Пароль = УчЗапись.Пароль; ИнтернетПрофиль.ПортPOP3 = УчЗапись.ПортPOP3; ИнтернетПрофиль.ПортSMTP = УчЗапись.ПортSMTP; ИнтернетПрофиль.ПарольSMTP = УчЗапись.ПарольSMTP; ИнтернетПрофиль.ПользовательSMTP = УчЗапись.ПользовательSMTP; ИнтернетПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(ИнтернетПрофиль); Исключение Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки()); Возврат; КонецПопытки; // Получаем старые письма для удаления МассивСообщенийДляУдаления = Новый Массив; МассивСообщений = ИнтернетПочта.Выбрать(Ложь,, истина); Для Каждого Письмо Из МассивСообщений Цикл Письмо.кодировка = "windows-1251"; Попытка СтартБП(письмо); МассивСообщенийДляУдаления.Добавить(Письмо); Исключение Сообщить("Ошибка старта БП"); //Продолжить; КонецПопытки; КонецЦикла; ИнтернетПочта.УдалитьСообщения(МассивСообщенийДляУдаления); КонецПроцедуры &НаСервере Процедура СтартБП(письмо) БП = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс(); БП.Шаблон =Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление с заявкой");// ШаблоныБизнесПроцессов.на БП.Дата = ТекущаяДата(); БП.Автор = Справочники.Пользователи.НайтиПоНаименованию("Администратор"); БП.Записать(); НоваяСтрока = БП.Предметы.Добавить; НоваяСтрока.Предмет = письмо; БП.Наименование = "Ознакомление с: " + письмо.тема; БП.Записать(); БП.Старт(); КонецПроцедуры |
|||
29
Strelolga
30.03.16
✎
10:47
|
(28) Решено
Новая проблема. У меня настроена легкая почта. с помощью кода не находит ни одного сообщения. Если зайти в обработку загрузки почты, нажать кнопку - обновить список сообщений..То обработкой получают сообщения. Тогда в дальнейшем по коду находятся сообщения. Как получить сообщения только по коду: УчЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("[email protected]"); ИнтернетПрофиль.АдресСервераPOP3 = УчЗапись.СерверВходящейПочтыPOP3; ИнтернетПрофиль.АдресСервераSMTP = УчЗапись.СерверИсходящейПочтыSMTP; ИнтернетПрофиль.Пользователь = УчЗапись.Пользователь; ИнтернетПрофиль.Пароль = УчЗапись.Пароль; ИнтернетПрофиль.ПортPOP3 = УчЗапись.ПортPOP3; ИнтернетПрофиль.ПортSMTP = УчЗапись.ПортSMTP; ИнтернетПрофиль.ПарольSMTP = УчЗапись.ПарольSMTP; ИнтернетПрофиль.ПользовательSMTP = УчЗапись.ПользовательSMTP; ИнтернетПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(ИнтернетПрофиль); Исключение Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки()); Возврат; КонецПопытки; МассивСообщений = ИнтернетПочта.Выбрать(Ложь,, истина); |
|||
30
Strelolga
30.03.16
✎
10:47
|
(29) перейти с легкой почты на встроенную?
|
|||
31
AceVi
30.03.16
✎
11:11
|
(30) А код в 29 ты скопировала из стандартной обработки?
Просто я помню у меня таких проблем не было. просто скопировал часть кода который читает письма из стандартной обработки и все. И то мне так пришлось делать потому что стандартная обработка завязана на код который выполняется на клиенте(а рег задание выполнятся только на сервере). |
|||
32
Strelolga
30.03.16
✎
13:20
|
(31)Разобралась. Заработало. Код писала сама.
теперь хочу понять как детекторы событий сделать, чтобы не регламентной обработкой. Не могу понять пока. |
|||
33
Strelolga
30.03.16
✎
14:17
|
(32) Как работать с детекторами событий?
Вот например создаю детектор: появление письма заявки: ИнтернетПрофиль = Новый ИнтернетПочтовыйПрофиль; УчЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("[email protected]"); ИнтернетПрофиль.АдресСервераPOP3 = УчЗапись.СерверВходящейПочтыPOP3; ИнтернетПрофиль.АдресСервераSMTP = УчЗапись.СерверИсходящейПочтыSMTP; ИнтернетПрофиль.Пользователь = УчЗапись.Пользователь; ИнтернетПрофиль.Пароль = УчЗапись.Пароль; ИнтернетПрофиль.ПортPOP3 = УчЗапись.ПортPOP3; ИнтернетПрофиль.ПортSMTP = УчЗапись.ПортSMTP; ИнтернетПрофиль.ПарольSMTP = УчЗапись.ПарольSMTP; ИнтернетПрофиль.ПользовательSMTP = УчЗапись.ПользовательSMTP; ИнтернетПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(ИнтернетПрофиль); Исключение результат = ложь; КонецПопытки; МассивСообщенийДляУдаления = Новый Массив; МассивСообщенийДляОтправки = Новый Массив; МассивСообщений = ИнтернетПочта.Выбрать(Ложь,, истина); Если МассивСообщений.Количество()> 0 тогда результат = истина; иначе результат = ложь; конецесли; А в дополнительном обработчике бизнес-событий что то вроде: подключиться к почту, прочитать почту, для каждого письма создать БП, отослать письмо-ответ. удалить письмо-заявку (БП уже стартован, письмо скопировано в описание БП) Вопросы: 1. если детекторы запускаются раз в минуту, а обработчик не успеет обработать все письма за минуту, не возникнет конфликтов? или повторной обработки писем 2. как в дополнительном обработчике из одной функции вызвать другую? |
|||
34
AceVi
30.03.16
✎
16:31
|
(33) 1. Я тебе говорил - как либо запоминай письма которые отработаны(либо заведи регистр(где, например, учитывай по отправителю и дата_Время письма), либо у письма есть признак Прочитано, либо удаляй загруженные письма с сервера почты).
2. Не понял вопроса. приведи пример текста. |
|||
35
AceVi
30.03.16
✎
16:33
|
(33) Детекторы событий - ты поясни что ты имеешь ввиду? появление письма на почте? никак - только периодическое чтение почты рег. заданием.
|
|||
36
Strelolga
31.03.16
✎
06:49
|
(35) Детекторы - типовой функционал документооборота. Доп обработчики событий привязываются к детекторам. так вот. там пишется код.. что то вроде
ИнтернетПрофиль = Новый ИнтернетПочтовыйПрофиль; УчЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("[email protected]"); ИнтернетПрофиль.АдресСервераPOP3 = УчЗапись.СерверВходящейПочтыPOP3; ИнтернетПрофиль.АдресСервераSMTP = УчЗапись.СерверИсходящейПочтыSMTP; ИнтернетПрофиль.Пользователь = УчЗапись.Пользователь; ИнтернетПрофиль.Пароль = УчЗапись.Пароль; ИнтернетПрофиль.ПортPOP3 = УчЗапись.ПортPOP3; ИнтернетПрофиль.ПортSMTP = УчЗапись.ПортSMTP; ИнтернетПрофиль.ПарольSMTP = УчЗапись.ПарольSMTP; ИнтернетПрофиль.ПользовательSMTP = УчЗапись.ПользовательSMTP; ИнтернетПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(ИнтернетПрофиль); Исключение Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки()); Возврат; КонецПопытки; // Получаем старые письма для удаления МассивСообщенийДляУдаления = Новый Массив; МассивСообщенийДляОтправки = Новый Массив; МассивСообщений = ИнтернетПочта.Выбрать(Ложь,, истина); Если МассивСообщений.Количество()<= 0 тогда сообщить("На сервере нет сообщений"); иначе Для Каждого Письмо Из МассивСообщений Цикл Письмо.кодировка = "windows-1251"; Попытка БП = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс(); БП.Шаблон =Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление с заявкой");// ШаблоныБизнесПроцессов.на БП.Дата = ТекущаяДата(); БП.Автор = Справочники.Пользователи.НайтиПоНаименованию("Администратор"); Для Каждого Стр из БП.Шаблон.Исполнители цикл НСтрока = БП.Исполнители.Добавить(); НСтрока.Исполнитель = Стр.Исполнитель; КонецЦикла; БП.Описание = письмо.тексты.получить(0).текст; БП.Наименование = "Поручение: Обработать заявку на ввод нового контрагента " + письмо.тема; БП.Записать(); БП.Старт(); МассивСообщенийДляОтправки.Добавить(НаписатьПисьмоОтвет(письмо)); МассивСообщенийДляУдаления.Добавить(Письмо); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецЕсли; ИнтернетПочта.УдалитьСообщения(МассивСообщенийДляУдаления); Для Каждого сообщение из МассивСообщенийДляОтправки цикл попытка ИнтернетПочта.Послать(сообщение); исключение Продолжить; КонецПопытки; КонецЦикла; ИнтернетПочта.Отключиться(); Функция НаписатьПисьмоОтвет(письмо) ПисьмоОтвет = новый ИнтернетПочтовоеСообщение; ПисьмоОтвет.Получатели.Добавить(письмо.отправитель.адрес); ПисьмоОтвет.Кодировка = "windows-1251"; ПисьмоОтвет.Тема ="Ваше письмо" + письмо.тема + " принято в работу!"; ПисьмоОтвет.Отправитель.ОтображаемоеИмя = "1s edo"; ПисьмоОтвет.Тексты.Добавить("Ваше письмо" + письмо.тема + " принято в работу!"); Возврат ПисьмоОтвет; КонецФункции Функция НаписатьПисьмо |
|||
37
Strelolga
31.03.16
✎
06:51
|
(36) Так вот такой обработчик событий на срабатывает. БП не стартуется, письмо ответ не высылается. Через рег задание работает.
|
|||
38
AceVi
31.03.16
✎
09:54
|
(37) Так давай последовательно.
Мы говорим о детекторе событий. Тот текст что ты привела - это не детектор событий - это то что должно произойти когда детектор уже сработает. Давай разбираться с самим детектором. Детектор Это регистр сведений когда записываються определенные шаги бизнес процессов и задач(создание, заверешение конкретной задачи, завершение бизнес процесса и т.д.). В документообороте есть обычное рег. задание которое с определенной периодичностью(по умолчанию вроде 5 минут) проверяет этот регистр и в процедуре обработки этого рег задания описано как реагировать на ту или иную запись в регистре(например старб БП после завершения другого или старт БП сразу после создания внутреннего документа и т.д.) Что конкретно ты хочешь от детектора событий? потому что там запрограммированы определенные действия(причем как на мой вкус механизм очень куцый, хотя на нем можно развернуться там мощно что можно будет в пользовательском режиме задавать цепочки бизнес процессов. |
|||
39
turbosuslic
01.04.16
✎
15:37
|
А как в ДО 2.0 в детекторе событий обратиться к самому событию? Видел пример кода на ДО 1.4 там было так: Задача = Событие.Источник в 2.0 это не работает, начинает ругаться на Событие. Кто-нибудь сталкивался с таким?
|
|||
40
AceVi
01.04.16
✎
17:07
|
(39) Что значит обратиться? Выполнить его(т.е. записать информацию в Регистр Сведений) или прочитать регистр?
Все события хранятся в регистре сведений(не помню уже как называться) вот от туда и получай. |
|||
41
turbosuslic
04.04.16
✎
08:12
|
(40) Я имею ввиду то, что мне нужно настроить детектор события, например с видом "Завершение процесса". Так вот, в момент завершения какого-либо процесса будет стартовать этот детектор, в этот момент в самом детекторе мне нужно отследить сам бизнес-процесс, который был сейчас заверешен, чтобы дальше с ним работать.
В 1.4 был такой пример: // Регистрация Задача = Событие.Источник; Выполнять = Ложь; Если ТипЗнч(Задача.БизнесПроцесс) = Тип("БизнесПроцессСсылка.Утверждение") Тогда но в 2.0 он не срабатывает, ругается: Переменная не определена (Событие). Задача = <<?>>Событие.Источник Вот мне и нужно узнать, как в 2.0 обраться из детектора события к произошедшему бизнес-процессу или событию. |
|||
42
AceVi
04.04.16
✎
09:46
|
(41) Я тебя не пойму)
Переменная не определена (Событие). Задача = <<?>>Событие.Источник Ну так определи событие) или ты думаешь что событие это реквизит бизнес процесса? Событие - это запись регистра сведений - ну получи нужную запись и бери от туда источник. |
|||
43
AceVi
04.04.16
✎
09:48
|
(41) Если вопрос звучит - как отследить завершение той или иной задачи\БП - то стандартный механизм подразумевает чтение РС по событиям раз в 5-10 минут и обработка новых записей(у регистр есть реквизит отработана запись или нет)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |