Версия для печати темы (https://pro1c.org.ua/index.php?s=806c289adb4b598d24b9c57898cd207b&showtopic=62390)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Справочник: почтовое уведомление если справочник изменен. Один раз

Автор: Constantus 22.10.20, 10:50

Приветствую, Форумчане.
1с8.3.12, самопис, УФ

Глобальная задача: в справочнике, если он был изменен при "Сохранить" и/или "Сохранить и закрыть", то отправить почтовое сообщение, причем один раз.

Сделал функцию отправки почтового сообщения (работает без проблем)
Разместил в модуле объекта код "ПриЗаписи(Отказ)":

Если Не Отказ Тогда
    ОтправитьУведомление();
КонецЕсли;


Всё работает. Но столкнулся с такой проблемой: если нажать сначала "Сохранить", а потом на "Сохранить и закрыть", то уведомление отправляется дважды.
Требуется отправить сообщение единожды, т.е. как-то проверить: сли справочник модифицирован, то при записи отправлять уведомление, если, справочник не изменялся, то никаких уведомлений отправлять не надо...

Посоветуйте как лучше сделать? Модифицированность в модуле объекта не работает....

Хотел это перенести это в модуль формы, но не знаю на какое событие правильно повесить оповещение...

Автор: pablo 22.10.20, 11:13

А если между сохранить и "сохранить и закрыть" данные в справочнике были изменены?

Автор: Vofka 22.10.20, 11:43

Записать элемент справочника можно и не меняя его. Например, открыл, посмотрел, нажал ОК. В вашем случае тоже происходит запись без изменения, когда человек сначала жмет "Сохранить", а потом "Сохранить и закрыть".
Поэтому если в условие задачи звучит как

Цитата(Constantus @ 22.10.20, 11:50) *
если он был изменен

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

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

Автор: kihor 22.10.20, 17:22

Constantus @ Сегодня, 11:50 * ,

Можно сделать регистр сведений с измерением GUID элемента справочника и ресурсом "Хеш-значение" основных его реквизитов. При записи элемента справочника проверять, есть ли он в этом регистре, и если "нет", то делать запись туда (чтобы письма не слать повторно) и отправлять письмо.
Если надо проверять изменились ли реквизиты справочника при записи, то, если есть запись в регистре сведений - смотреть хеш-значение основных реквизитов справочника.
Проще что-то ничего в голову не приходит.

Автор: sava1 22.10.20, 17:45

в модуле объекта ПередЗаписью сравнить объект с тем , что в базе - выбрать запросом

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua