Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

При создании нового письма выбирается учетка для уведомлений #211

Open
DenisZuyev opened this issue Jun 4, 2020 · 14 comments

Comments

@DenisZuyev
Copy link

Добрый день!

Я использую УЗ как почтовый клиент, это ещё с ITIL пришло.
Но вот этот код всё портит, он не логичен для общения с сотрудниками внутри компании.
Переделаем?

//+ #286 Иванов А.Б. 2017-12-17
Если Объект.Ссылка.Пустая() Тогда
пСтараяУчетнаяЗапись = Объект.УчетнаяЗапись;
пНоваяУчетнаяЗапись = узОбщийМодульСервер.ПолучитьУчетнуюЗаписьДляОтправкиУведомленийДляКонтрагентов();
Если пСтараяУчетнаяЗапись <> пНоваяУчетнаяЗапись Тогда
Объект.УчетнаяЗапись = пНоваяУчетнаяЗапись;
ИзменитьПодпись(пСтараяУчетнаяЗапись, пНоваяУчетнаяЗапись);
ЭлементСписка = Элементы.ОтправительПредставление.СписокВыбора.НайтиПоЗначению(пНоваяУчетнаяЗапись);
Если ЭлементСписка <> Неопределено Тогда
Объект.ОтправительПредставление = ЭлементСписка.Представление;
КонецЕсли;
Конецесли;

@DenisZuyev
Copy link
Author

//+ #211 Зуев Д.С 04.06.2020
пСтараяУчетнаяЗапись = Объект.УчетнаяЗапись;
пНоваяУчетнаяЗапись = узОбщийМодульСервер.ПолучитьЛичнуюУчетнуюЗапись();
Если пСтараяУчетнаяЗапись <> пНоваяУчетнаяЗапись Тогда
Объект.УчетнаяЗапись = пНоваяУчетнаяЗапись;
ИзменитьПодпись(пСтараяУчетнаяЗапись, пНоваяУчетнаяЗапись);
ЭлементСписка = Элементы.ОтправительПредставление.СписокВыбора.НайтиПоЗначению(пНоваяУчетнаяЗапись);
Если ЭлементСписка <> Неопределено Тогда
Объект.ОтправительПредставление = ЭлементСписка.Представление;
КонецЕсли;
Конецесли;
//- #211 Зуев Д.С 04.06.2020

@DenisZuyev
Copy link
Author

//+ #211 Зуев Д.С 04.06.2020
Функция ПолучитьЛичнуюУчетнуюЗапись() Экспорт

Перем пУчетнаяЗапись;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ ПЕРВЫЕ 1
|	УчетныеЗаписиЭлектроннойПочты.Ссылка КАК Ссылка
|ИЗ
|	Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
|ГДЕ
|	УчетныеЗаписиЭлектроннойПочты.ВладелецУчетнойЗаписи = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", ПользователиКлиентСервер.ТекущийПользователь());

Результат = Запрос.Выполнить().Выбрать();
	
Если Результат.Следующий() Тогда
	пУчетнаяЗапись = Результат.Ссылка;
КонецЕсли;

Возврат пУчетнаяЗапись;

КонецФункции

@d-hurricane
Copy link
Contributor

d-hurricane commented Jun 4, 2020

Есть же типовой метод, лучше использовать его.
РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи()

Ну и нет смысла слать сюда куски кода. Подготовьте Pull request.

@DenisZuyev
Copy link
Author

Типовой метод который вернет таблицу значений... знаете толк в извращениях.

@d-hurricane
Copy link
Contributor

Не понял, в чем проблема?

@DenisZuyev
Copy link
Author

в лишних манипуляциях, проверках.

@BlizD
Copy link
Owner

BlizD commented Jun 6, 2020

@DenisZuyev Добрый день.
Можете сделать доработку как описано в задаче и прислать изменения? #215

@d-hurricane
Copy link
Contributor

Не согласен с представленной реализацией функции получения личной учетной записи.

Во-первых, никаких лишних манипуляций и проверок я не предлагал. Напротив, код функции станет заметно лаконичнее:

Функция ПолучитьЛичнуюУчетнуюЗапись() Экспорт

	УчетныеЗаписи = РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина, Ложь);
	
	Возврат ?(ЗначениеЗаполнено(УчетныеЗаписи), УчетныеЗаписи[0].Ссылка, Неопределено);
	
КонецФункции

Считаю типовые проверки совсем не лишними. Как проверку на заполненность учетки, таки и на установку флага "Для отправки". Плюс включение сюда системной учетной записи также не лишнее, если учетка всего одна для всех.

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

@DenisZuyev
Copy link
Author

@d-hurricane если не сложно сделай CF, у меня с этим проблема, я живу на продакшн конфе XD

@d-hurricane
Copy link
Contributor

@DenisZuyev Ок, но чуть позже. Может к концу недели. Открой обратно задачу, а то я могу забыть совсем про нее.

@DenisZuyev DenisZuyev reopened this Jun 17, 2020
@DenisZuyev
Copy link
Author

@d-hurricane теперь что-то делается не так.
При отправке письма пишет "Выбранная учетная запись не доступна для отправки писем"

@DenisZuyev
Copy link
Author

Надо так
УчетныеЗаписи = РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина, ,Ложь);

@DenisZuyev
Copy link
Author

А проверка на заполнено там ни о чем, там всегда возвращается таблица.
Её по количеству надо проверить.

@d-hurricane
Copy link
Contributor

Возможно, я действительно пропустил запятую. На вскидку не помню параметры функции.
Что же касается проверки заполнения, то она корректна. Функция "ЗначениеЗаполнено" вернет "Ложь", если в указанной таблице значений нет строк.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants