Код для кнопки "Отправить почтовым сообщением" любого табличного документа, используя механизмы УТ 11.2

23.01.17

Разработка - Механизмы типовых конфигураций

Это не автономный код процедуры отправки, это приписка к уже существующему механизму почтовых сообщений, реализованному в УТ 11.2, когда ваша учетная запись уже создана, и вам остается лишь "навесить" код на кнопку. Этот механизм может быть использован для любой управляемой формы, на которой также присутствует Табличный документ.

Для начала, нам необходимо установить имя реквизита формы "Результат" для Табличного документа (1), который мы хотим впоследствии отправить вложением по e-mail, а также создать на форме кнопку с командой "ОтправитьОтчет" (2). Далее, мы переходим в Модуль формы (3), и процедуру "ОтправитьОтчет(Команда)" заменяем целиком этим кодом:

&НаКлиенте
Процедура ОтправитьОтчет(Команда)
	
	//Здесь ведется проверка на заполненность табличного документа (должно быть больше 8 строк).
	//При желании меняем на необходимое значение, либо вообще убираем.
	Если Результат.ВысотаТаблицы < 8 Тогда
		Предупреждение("Сформируйте отчет!");
		Возврат;
	КонецЕсли;
	
	//Используется механизм оповещений, подсмотренный в открытых модулях УТ11.
	ОписаниеОповещения = Новый ОписаниеОповещения("ОтправитьПечатныеФормыПоПочтеНастройкаУчетнойЗаписиПредложена", ЭтотОбъект);
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
		МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент");
		МодульРаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(ОписаниеОповещения);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьПечатныеФормыПоПочтеНастройкаУчетнойЗаписиПредложена(УчетнаяЗаписьНастроена, ДополнительныеПараметры) Экспорт
	
	Если УчетнаяЗаписьНастроена <> Истина Тогда
		Возврат;
	КонецЕсли;
	
	//Не забудьте поменять тему письма!
	ТемаПисьма = "Сформированный отчет на "+Формат(Объект.НаДату,"ДЛФ=DD");
	
	ПараметрыОтправки = Новый Структура("Вложения,Получатель,Текст,Тема,УдалятьФайлыПослеОтправки");
	ПараметрыОтправки.Получатель = Новый Массив;
	ПараметрыОтправки.Вложения = Новый Массив;
	ПараметрыОтправки.Получатель.Добавить(Новый Структура("Адрес,ВидПочтовогоАдреса,ИсточникКонтактнойИнформации,ОбъектИсточник,Пояснение,Представление"));
	ПараметрыОтправки.Текст = "Во вложении сформированный табличный документ";
	ПараметрыОтправки.Тема = ТемаПисьма;
	ПараметрыОтправки.Вложения.Добавить(ПодготовитьТабличныйДокументДляОтправки(Результат,ТемаПисьма));
	ПараметрыОтправки.УдалятьФайлыПослеОтправки = Истина;
	
	МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент");
	МодульРаботаСПочтовымиСообщениямиКлиент.СоздатьНовоеПисьмо(ПараметрыОтправки);
	
КонецПроцедуры

&НаСервере
Функция ПодготовитьТабличныйДокументДляОтправки(ТабДок,ИмяФайлаТД)
	
	Объект.ТаблицаДляОтправки = ТабДок;
	ТипФайлаТД = ТипФайлаТабличногоДокумента.XLSX;
	СсылкаФорматаТД = Перечисления.ФорматыСохраненияОтчетов.XLSX;
	КартинкаФайлаТД = БиблиотекаКартинок.ФорматExcel2007;
	РасширениеФайлаТД = "xlsx";    //использую EXCEL-формат файла для вложений.
	ИмяВременнойПапки = ПолучитьИмяВременногоФайла();
	СоздатьКаталог(ИмяВременнойПапки);
	ПолноеИмяФайла = УникальноеИмяФайла(
		ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки)+
		ИмяФайлаТД + "." + РасширениеФайлаТД);
	Объект.ТаблицаДляОтправки.Записать(ПолноеИмяФайла,ТипФайлаТД); 
	ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла);
	ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор);
	ОписаниеФайла = Новый Структура;
	ОписаниеФайла.Вставить("Представление", ИмяФайлаТД+"."+РасширениеФайлаТД);
	ОписаниеФайла.Вставить("АдресВоВременномХранилище", ПутьВоВременномХранилище);
	УдалитьФайлы(ИмяВременнойПапки);
	Возврат ОписаниеФайла;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция УникальноеИмяФайла(ИмяФайла)
	
	Файл = Новый Файл(ИмяФайла);
	ИмяБезРасширения = Файл.ИмяБезРасширения;
	Расширение = Файл.Расширение;
	Папка = Файл.Путь;
	
	Счетчик = 1;
	Пока Файл.Существует() Цикл
		Счетчик = Счетчик + 1;
		Файл = Новый Файл(Папка + ИмяБезРасширения + " (" + Счетчик + ")" + Расширение);
	КонецЦикла;
	
	Возврат Файл.ПолноеИмя;

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

При копировании кода не забудьте поменять тему письма на свою!!

Примечательно, что некоторые функции, вызов которых находится глубоко в модулях, отвечающие за аутентификацию на почтовом сервере, разработчики УТ11 скрыли от любопытных глаз, но они нам и не особо нужны, так как рычаги запуска всего механизма я вам предоставил.

Отправить почту Управление торговлей 11 Табличный документ e-mail сообщение

См. также

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    11307    Begemoth80    32    

85

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    2403    PROSTO-1C    0    

21

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    2511    Vidz    0    

12

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

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

24.06.2024    1403    olja-ljaaa    0    

3
Оставьте свое сообщение