Имя: Пароль:
1C
 
Отправка письма пользователю, о создании документа
,
0 NIGHTHUNTER
 
05.05.22
06:44
Необходимо при создании документа сделать отправку письма пользователю.
О том что создан такой то документ, таким то инициатором.

Где правильнее это будет делать?

Нужно же проверять, создается ли документ. Новый ли он. Просматриваю процедуры в модуле формы и модуле объекта.

Пока не придумал, как сделать правильнее.

Если в процедуре, -

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)


можно проверить что Не ЗначениеЗаполнено(Объект.Ссылка) , но там и Объект.Номер пусто. А номер нужно передавать.

А в других процедурах не определить что это документ новый. Как тт правильнее сделать?
1 Irbis
 
05.05.22
06:55
Сделать кнопку "Отправить по e-mail" определить другое событие для отправки, ибо простая запись не доредактированного документа для отправки бессмысленна.
2 NIGHTHUNTER
 
05.05.22
07:03
(1) Это как? Я считал что при записи созданного документа это можно сделать. Только не пойму где.
Это должно происходить автоматически, не по кнопке.
3 Irbis
 
05.05.22
07:07
(2) Мозг включи. Пользователь записал документ чтобы сохранить изменения, но редактирование не закончил. Зачем такое отправлять? А потом может оказаться и что и совсем пометит на удаление. Нужно более значимое событие, чем простая запись, например проведение, а перед проведением если нет сведений об отправке адресату отправлять, а если есть переспросить не нужно ли отправить повторно. Только делать это не в транзакции проведения, а, например отдельным сервисом.
4 NIGHTHUNTER
 
05.05.22
07:19
(3) Все равно не допонимаю, как правильнее сделать. Так то понятно, что много разных нюанвов.
5 Irbis
 
05.05.22
07:29
1. определить событие (проведение, запись, жмаканье по кнопке и т. п.)
2. При наступлении события проверить информацию о предыдущих сообщениях, их статусе и параметрах
3. При необходимости сделать запись в регистр сведенийна отправку
4. По расписанию проверять наличие не отправленных и/или подлежащих отправке сообщений и выполнять необходимые действия (отправка, отмена отправки уточнение реквизитов и т. п.)
5. Вести учет разосланных и/или отменённых к отправке сообщений


как-то так
6 hhhh
 
05.05.22
07:30
(4) сделать пользователю большую кнопку: "отправить письмо". Когда пользователь решится, он нажимает кнопку и письмо уходит.
7 NIGHTHUNTER
 
05.05.22
07:36
(6) Пользователь, только заполняет документ. А отправка происходит при его записи. Создании.
Номер, дата, возможно кто создал.

Я думал что можно сделать проще чем (5). Так то понятно, можно много что понастроить.
8 Ryzeman
 
05.05.22
07:42
(7) Можно и проще. Подпиской или событием ПослеЗаписиНаСервере, признак нового передавай в допсвойстве. Но правильнее всё же (5).
9 hhhh
 
05.05.22
07:48
(7) ты же спрашивал, как правильней. Тебе написали, как в (5). А теперь оказывается, что правильно тебе не нужно?
10 NIGHTHUNTER
 
05.05.22
08:15
Сделаю поле булево. Отправка произведена. И буду проверять в модуле документа, если она ложь, и все необходимые реквизиты заполнены.
Дата, номер, инициализатор. То производить отправку. Если она истина, значит уже было отправлено.

Почему так не сделать?

(8) Документ не типовой, стоит ли делать для него подписку на событие? Признак нового определяется только Не ЗначениеЗаполнено(Объект.Ссылка) ?

(9) Вот как выше описал, же сработает. Зачем городить что то ещё? Один всего реквизит, булево. И сама отправка в процедуре ПриЗаписи() модуля объекта .
11 Irbis
 
05.05.22
08:19
>> И сама отправка в процедуре ПриЗаписи() модуля объекта .

Не делай так, совать отправку в транзакцию — зло. Почтовики могут по минуте "тормозить".
В остальном каждый дрочит как умеет.
12 NIGHTHUNTER
 
05.05.22
08:22
(11) Зачем же такие выражения?

Ну ок, куда предложите мне ее засунуть?

В какую процедуру?
13 Ryzeman
 
05.05.22
08:23
(10) Подпиской потому, что она срабатывает после записи и возможных отказов (кроме отказов по другим подпискам). Плюс если тебе понадобится "стучать" по факту создания других документов - можно доработать с минимальными усилиями или сразу написать универсально.

Да, у нового документа нет ссылки. Ты можешь при записи объекту задать дополнительное свойство по этому признаку, а в подписке или в ПослеЗаписиНаСервере уже его считывать.
14 Ryzeman
 
05.05.22
08:24
(11) он может в фоне это сделать)
15 NIGHTHUNTER
 
05.05.22
08:27
(14) При записи в модуле объекта, потому что это уже видел в документах по подобию. Только не понимал, на какое условие привязываться.
Решил что создам реквизит булево. И отправка производится каким то фоновым заданием.

(13) Что за дополнительное свойство, как и где можно создать объекту при записи? Новые реквизит?
16 Irbis
 
05.05.22
08:29
(15)
>> дополнительные свойства
неужели СП исключили из поставки снеговика?
17 Ryzeman
 
05.05.22
08:39
(15) >При записи в модуле объекта, потому что это уже видел в документах по подобию
Сделает кто-нибудь подписку, в которой по условию отказ приравняют к истине, и уйдёт письмо просто так. Я уж молчу про ненужное повисание транзакции, если не распаралелливать.

>Что за дополнительное свойство
Даже если не знаешь\не умеешь СП пользоваться - гуглится за 10 секунд же.. Предопределённая структура у объектов, которая существует в жизненном цикле самого объекта.

>где можно создать объекту при записи
Правильнее всего - в модуле объекта в обработчике события ПриЗаписи. Что то типа Объект.ДополнительныеСвойства.Вставить("ЭтоНовый", Не ЗначениеЗаполнено(Объект.Ссылка));
18 breezee
 
05.05.22
08:42
Правльнее было бы создать регистр и при записи в него писать, а потом регл заданием создавать документы рассылки и отправлять их
19 uno-group
 
05.05.22
08:47
Нужно сделать справочник уведомлений в него писать нужные данные и с определенной периодичностью проверять этот справочник делать отправку и при успешной отправке ставить отметку что отправлено и когда. В момент проведения создания почтовый сервер может быть недоступен инет упал или еще что-то и что юзеру сидеть с этим документом и ждать когда оно уйдет. По этому справочнику легко можно и проверить отрпавлялосли ранее нужное уведомление или нет.
20 Ryzeman
 
05.05.22
08:48
Это всё ему ещё в (5) написали)
21 rsv
 
05.05.22
08:52
(0) лучше с боку . Каким то заданием опрашивающим.
Пихать что то  сторонне в транзакцию записи(проведения) не айс
22 NIGHTHUNTER
 
05.05.22
08:53
(20) Да понятно все.
Тут так и сделано, через справочник. по фоновому заданию.
И я смотрю по подобию. Пока все думаю.

(17)  Как это Отказ приравняют к истине?
23 Kassern
 
05.05.22
09:08
(0) Почитайте за подписки на события в 1с