Отправка почты. Автоматическая подстановка получателя
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Доработокой только....
В общий модуль УправлениеЭлектроннойПочтой
В процедуру НаписатьПисьмо()
Дописали вот такой код:
СсылкаНаДокумент так же передается в эту процедуру, это документ из которого сформирована печатная форма для отправки.
В общий модуль УправлениеЭлектроннойПочтой
В процедуру НаписатьПисьмо()
Дописали вот такой код:
СтрокаТЧ = Письмо.КомуТЧ.Добавить();
Контакты = РегистрыСведений.КонтактнаяИнформация;
ОтборКонтактов = Новый Структура("Объект");
ОтборКонтактов.Объект = Письмо.СсылкаНаДокумент.ЮрЛицо.ОсновноеКонтактноеЛицо;
ВыборкаКонтактов = Контакты.Выбрать(ОтборКонтактов,);
Пока ВыборкаКонтактов.Следующий() цикл
Если ВыборкаКонтактов.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты тогда
СтрокаТЧ.АдресЭлектроннойПочты = ВыборкаКонтактов.Представление;
СтрокаТЧ.Представление = ВыборкаКонтактов.Представление;
Письмо.Кому = СокрЛП(Письмо.СсылкаНаДокумент.ЮрЛицо.ОсновноеКонтактноеЛицо) + " <" + ВыборкаКонтактов.Представление + ">";
КонецЕсли;
КонецЦикла;
ПоказатьСсылкаНаДокумент так же передается в эту процедуру, это документ из которого сформирована печатная форма для отправки.
Вот кусок стандартного кода + моя дописка (помечена):
СтруктураНовогоПисьма.Свойство("Кому", Кому);
Если ТипЗнч(Кому) = Тип("СписокЗначений") Тогда
Для каждого ЭлементСписка Из Кому Цикл
Если ПустаяСтрока(ЭлементСписка.Значение) Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ = Письмо.КомуТЧ.Добавить();
СтрокаТЧ.АдресЭлектроннойПочты = ЭлементСписка.Значение;
СтрокаТЧ.Представление = ЭлементСписка.Представление;
Если НЕ ПустаяСтрока(Письмо.Кому) Тогда
Письмо.Кому = Письмо.Кому + ", ";
КонецЕсли;
Если ПустаяСтрока(ЭлементСписка.Представление) Тогда
Письмо.Кому = Письмо.Кому + ЭлементСписка.Значение;
Иначе
Письмо.Кому = Письмо.Кому + ЭлементСписка.Представление + " <" + ЭлементСписка.Значение + ">";
КонецЕсли;
КонецЦикла;
Иначе
//Kreml++
СтрокаТЧ = Письмо.КомуТЧ.Добавить();
Контакты = РегистрыСведений.КонтактнаяИнформация;
ОтборКонтактов = Новый Структура("Объект");
ОтборКонтактов.Объект = Письмо.СсылкаНаДокумент.ЮрЛицо.ОсновноеКонтактноеЛицо;
ВыборкаКонтактов = Контакты.Выбрать(ОтборКонтактов,);
Пока ВыборкаКонтактов.Следующий() цикл
Если ВыборкаКонтактов.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты тогда
СтрокаТЧ.АдресЭлектроннойПочты = ВыборкаКонтактов.Представление;
СтрокаТЧ.Представление = ВыборкаКонтактов.Представление;
Письмо.Кому = СокрЛП(Письмо.СсылкаНаДокумент.ЮрЛицо.ОсновноеКонтактноеЛицо) + " <" + ВыборкаКонтактов.Представление + ">";
КонецЕсли;
КонецЦикла;
//Kreml--
КонецЕсли;
Показать
В процедуре НаписатьПисьмо() есть Основание, но оно не содержит СсылкаНаДокумент.
При нажатии на кнопку "Отправить по электронной почте" вызывается общая процедура из модуля УправлениеОтчетами
Эта процедура передает ИмяВложения,Отчет,Тему ОбщейФорме "НастройкиОтправкиОтчета"
Форма создает файл (txt,xls,mxl & etc)
И запускает форму "НовогоСообщения":
СтруктураНовогоПисьма содержит ВидТекста,СписокФайловВложений,Тема
Ни на одном из шагов нет СсылкаНаДокумент.
Можно попробовать выйти на Контрагента найдя счет на наименованию (имя вложения=имя документа), но это не универсальный вариант.
Попутал, у СнОП нет Наименования
Вопрос остается открытым.
При нажатии на кнопку "Отправить по электронной почте" вызывается общая процедура из модуля УправлениеОтчетами
ОтправитьДокументПоЭлектроннойПочте(Документ, ИмяФайлаВложения = "")
Эта процедура передает ИмяВложения,Отчет,Тему ОбщейФорме "НастройкиОтправкиОтчета"
Форма создает файл (txt,xls,mxl & etc)
И запускает форму "НовогоСообщения":
УправлениеЭлектроннойПочтой.НаписатьПисьмо(глЗначениеПеременной("глТекущийПользователь"), СтруктураНовогоПисьма,,,,,, Истина, Ложь);
СтруктураНовогоПисьма содержит ВидТекста,СписокФайловВложений,Тема
Ни на одном из шагов нет СсылкаНаДокумент.
Попутал, у СнОП нет Наименования
Вопрос остается открытым.
Кажется получилось.
1. ОбщиеФормы.ПечатьДокументов.КоманднаяПанельФормыОтправитьПоПочте(Кнопка):
Передаем "ОбъектПечати" (существующий реквизит формы - ссылается на документ)
2. ОбщиеМодули.УправлениеОтчетами.ОтправитьДокументПоЭлектроннойПочте:
Изменения выделены комментарием, добавлен входной параметр "ОбъектПечати = Неопределено".
3. ОбщиеФормы.НастройкаОтправкиОтчета.ОсновныеДействияФормыОК (кусок)
Изменения выделены комментарием.
СсылкаНаПолучателя - реквизит Формы (новый), тип СправочникСсылка.Контрагент.
Изменения в ОбщиеМодули.УправлениеЭлектроннойПочтой не вносились.
Не работает для документа "Реализация товаров и услуг" - "ОбъектПечати" = Неопределенно
1. ОбщиеФормы.ПечатьДокументов.КоманднаяПанельФормыОтправитьПоПочте(Кнопка):
УправлениеОтчетами.ОтправитьДокументПоЭлектроннойПочте(ЭлементыФормы.ПолеТабличногоДокумента, Заголовок, ОбъектПечати);
Передаем "ОбъектПечати" (существующий реквизит формы - ссылается на документ)
2. ОбщиеМодули.УправлениеОтчетами.ОтправитьДокументПоЭлектроннойПочте:
Процедура ОтправитьДокументПоЭлектроннойПочте(Документ, ИмяФайлаВложения = "", ОбъектПечати = Неопределено) Экспорт
Если НЕ Константы.ИспользованиеВстроенногоПочтовогоКлиента.Получить() Тогда
ОбщегоНазначения.СообщитьОбОшибке("Отправлять документы по электронной почте можно только из встроенного почтового клиента.
|В настоящее время в настройках параметров учета установлено использование основного почтового клиента операционной системы.");
Предупреждение("Операция не выполнена");
Возврат;
КонецЕсли;
ФормаОтправкиДокумента = ПолучитьОбщуюФорму("НастройкаОтправкиОтчета");
ФормаОтправкиДокумента.Отчет = Документ;
ФормаОтправкиДокумента.ИмяФайлаВложения = СтрЗаменить(ИмяФайлаВложения, ".", " ");
ФормаОтправкиДокумента.ТемаСообщения = ИмяФайлаВложения;
//Начало Модификации+
Если НЕ ОбъектПечати=Неопределено Тогда
Если НЕ ОбъектПечати.Контрагент.пустая() тогда
ФормаОтправкиДокумента.СсылкаНаПолучателя=ОбъектПечати.Контрагент;
КонецЕсли;
КонецЕсли;
//Конец Модификации-
ФормаОтправкиДокумента.ОткрытьМодально();
КонецПроцедуры
ПоказатьИзменения выделены комментарием, добавлен входной параметр "ОбъектПечати = Неопределено".
3. ОбщиеФормы.НастройкаОтправкиОтчета.ОсновныеДействияФормыОК (кусок)
Если СписокФайловВложений.Количество() > 0 Тогда
СтруктураНовогоПисьма.Вставить("СписокФайловВложений", СписокФайловВложений);
КонецЕсли;
//Начало Модификации+
Если НЕ СсылкаНаПолучателя.Пустая() Тогда
АдресПолучателя=УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(СсылкаНаПолучателя);
ПредставлениеПолучателя=СсылкаНаПолучателя.Наименование;
ИмяПолучателя=Новый СписокЗначений;
ИмяПолучателя.Вставить(0,АдресПолучателя,ПредставлениеПолучателя);
СтруктураНовогоПисьма.Вставить("Кому",ИмяПолучателя);
КонецЕсли;
//Конец Модификации
СтруктураСозданногоПисьма = УправлениеЭлектроннойПочтой.НаписатьПисьмо(
глЗначениеПеременной("глТекущийПользователь"), СтруктураНовогоПисьма,,,,,, Истина, Ложь);
ПоказатьИзменения выделены комментарием.
СсылкаНаПолучателя - реквизит Формы (новый), тип СправочникСсылка.Контрагент.
Изменения в ОбщиеМодули.УправлениеЭлектроннойПочтой не вносились.
Не работает для документа "Реализация товаров и услуг" - "ОбъектПечати" = Неопределенно
(8) nubodinesnik,
Не за что, единственный неприятный момент, данная модификация рассчитана только на e-mail указанный в карточке контрагента, а о контактных лиц она ничего не знает.
А было бы интересно, если бы при открытии формы письма, при условии не пустой ТЧ "Контактные лица", выводилась бы форма выбора лица...
//передаем список значений
//если кол-во больше 1
//тогда открыть форму
//иначе вставить
Как-то так
ХХД, зачем придумывать велосипед, проверяем заполнена ли ТЧ и открываем стандартную форму выбора с отбором по контрагенту...
Не за что, единственный неприятный момент, данная модификация рассчитана только на e-mail указанный в карточке контрагента, а о контактных лиц она ничего не знает.
А было бы интересно, если бы при открытии формы письма, при условии не пустой ТЧ "Контактные лица", выводилась бы форма выбора лица...
//если кол-во больше 1
//тогда открыть форму
//иначе вставить
Как-то так
ХХД, зачем придумывать велосипед, проверяем заполнена ли ТЧ и открываем стандартную форму выбора с отбором по контрагенту...
(10) bmwcar,
Ответ могли бы найти сами, сравнив формирование и вывод ТабДокумент СнаОП и РТиУ.
Кнопка "Печать" - Выбор Макета - Формирование печатной формы - Открытие формы печати документов - Нажимаем кнопку отправить - Дальше описано выше в посте (7)
Выше я написал:
Форма печати документа не относится к определенному документу, т.о. передача ссылки должна выполнятся перед открытием.
Вот в этом месте и проверяем почему не передается ссылка на документ.
Ответ из серии найди 10 отличий:
СнаОП (МодульОбъекта):
РТиУ (МодульОбъекта):
Ответ могли бы найти сами, сравнив формирование и вывод ТабДокумент СнаОП и РТиУ.
Кнопка "Печать" - Выбор Макета - Формирование печатной формы - Открытие формы печати документов - Нажимаем кнопку отправить - Дальше описано выше в посте (7)
Выше я написал:
Не работает для документа "Реализация товаров и услуг" - "ОбъектПечати" = Неопределенно
Форма печати документа не относится к определенному документу, т.о. передача ссылки должна выполнятся перед открытием.
Вот в этом месте и проверяем почему не передается ссылка на документ.
Ответ из серии найди 10 отличий:
СнаОП (МодульОбъекта):
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, ""), Ссылка);
РТиУ (МодульОбъекта):
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект));
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот