Имя: Пароль:
1C
1С v8
Передать переменную с клиента на сервер
,
0 Roma1314704
 
18.03.20
11:42
Добрый день
Необходимо в обработку для отправки почты передать вложенный файл

Использую ДиалогВыбораФайла

&НаКлиенте
Процедура ВыборНачалоВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = "";
    Фильтр = "pdf (*.pdf)|*.pdf";
    Диалог.Фильтр = Фильтр;
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "d:\documents";
    Если Диалог.Выбрать() Тогда
        ИмяФайла = Диалог.ПолноеИмяФайла;
        
     Иначе
       ИмяФайла = "";
   КонецЕсли;
    Сообщить(ПередатьИмяФайлаНаСервер(ИмяФайла));
КонецПроцедуры

далее создал функцию НаСервере

&НаСервере
Функция ПередатьИмяФайлаНаСервер(ИмяФайла);
    
    Возврат ИмяФайла;
КонецФункции



Процедура ОтправитьПочту(ИмяФайла)    
Почта = Новый ИнтернетПочта;
Попытка
    Почта.Подключиться(ПолучитьПрофильДляИмейл());
Исключение
    Сообщить("Ошибка регистрации");
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;

Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Вложения.Добавить(Новый ДвоичныеДанные(ИмяФайла),"file.pdf");
Сообщение.Отправитель = "[email protected]";
Сообщение.ИмяОтправителя = "Тест";
ПочтовыеАдреса = Сообщение.Получатели;
ПочтовыйАдрес = ПочтовыеАдреса.Добавить();
ПочтовыйАдрес.Адрес = Объект.Получатель.Емейл;
Сообщение.Тема = Объект.ТемаПисьма;

ИнтернетТекстПочтовогоСообщения = Сообщение.Тексты.Добавить();
ИнтернетТекстПочтовогоСообщения.Текст = Объект.ТелоПисьма;
ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;

Попытка
    // Пытаемся послать письмо
    Почта.Послать(Сообщение);
    Сообщить("Письмо успешно отправлено");
Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;
// отключение
Почта.Отключиться();
КонецПроцедуры

Сообщение.Вложения.Добавить(Новый ДвоичныеДанные(ИмяФайла),"file.pdf");

В этой процедуре как сюда передать ИмяФайла?
1 SleepyHead
 
гуру
18.03.20
12:09
(0) А где "эта процедура" ? Что-то я перед ней не вижу директивы.. она что, в модуле объекта?
2 Roma1314704
 
18.03.20
12:17
У нее директива - НаСервере.
Она работает, если вместо ИмяФайла прописать строку (путь к файлу).
Но нужен алгоритм через ДиалогВыбораФайла
3 vicof
 
18.03.20
12:18
Положить файл в хранилище
4 Жан Пердежон
 
18.03.20
12:45
(2) примеров в любой типовой - как грязи
5 Жан Пердежон
 
18.03.20
12:47
>> Передать переменную с клиента на сервер
стажа 13 лет, а правильно название темы сформулировать так и не умеем