Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 сен 2021, 16:29

Рассылка сообщений из 1С на почту пользователям

Автор slimuz, 02 авг 2017, 12:00

0 Пользователей и 1 гость просматривают эту тему.

slimuz

Добрый день.
Задача отправлять сообщение на почту определенному списку пользователей из табличной части. Моя попытка:
Сообщение.Получатели.Добавить(Документы.БронированиеПомещений.ТекДанные.Пользователь.EMail);
ТекДанные = Документы.БронированиеПомещений.ПолучитьФорму(ФормаДокумента).ЭлементыФормы.Участники.ТекущиеДанные;

slimuz

Напишу по-другому.
Как обратиться к реквизиту табличной части текущего документа ?

MuI_I_Ika

Если задача изменить табличную часть, что через ДокументОбъект.
Если  просто прочитать данные, то через ссылку на документ.

Я так понимаю, что у вас есть некий динамический список с документами.
Вы позиционируете курсор на каком-то из них и нажимаете на кнопку.

Для этого вам понадобятся 2 процедуры: на клиенте и на сервере

&НаКлиенте
Процедура ПриНажатии()

    ТекущиеДанные = Элементы.ДинамическийСписок.ТекущиеДанные;

    Если ТекущиеДанные <> Неопределено Тогда
        ОбработатьДокумент(ТекущиеДанные.Документ)
    КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ОбработатьДокумент(Документ)
    ДокументОбъект = Документ.ПолучитьОбъект();
    ТабличнаяЧасть = ДокументОбъект.ТабличнаяЧасть;
    ...
КонецПроцедуры

slimuz

Прошу прощения, что я не понятно описываю задачу. Я очень плохо знаю 1С 8))
Есть общий модуль по отправке электронной почты. Там есть строчка: Сообщение.Получатели.Добавить(Константы.ЭлектронныйАдресСекретариата.Получить());
Т.е. берётся email из константы. Но мне нужно, чтоб почтовые адреса брались из реквизита EMail пользователей, а пользователи те которые выбраны в документе.
Документ БронированиеПомещений, со списком участников (пользователи), при нажатии кнопки оповестить отправляется сообщение на почту.

oleg-x

Напиши также, только замени константы на значение из табличной части
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

slimuz

В этом и проблема, не могу понять как))
Сообщение.Получатели.Добавить(Документы.БронированиеПомещений.ТекДанные.Пользователь.EMail);
ТекДанные = Документы.БронированиеПомещений.ПолучитьФорму("ФормаДокумента").ЭлементыФормы.Участники.ТекущиеДанные;

Участники - табличная часть в док.

oleg-x

Цитата: slimuz от 02 авг 2017, 14:05
В этом и проблема, не могу понять как))
Сообщение.Получатели.Добавить(Документы.БронированиеПомещений.ТекДанные.Пользователь.EMail);
ТекДанные = Документы.БронированиеПомещений.ПолучитьФорму("ФормаДокумента").ЭлементыФормы.Участники.ТекущиеДанные;

Участники - табличная часть в док.
Если документ открыт тогда так:
Сообщение.Получатели.Добавить(ЭлементыФормы.ТЧ.ТекДанные.Пользователь.EMail); //отправиться одному пользователю

Для каждого стр из ЭлементыФормы.ТЧ Цикл
    Сообщение.Получатели.Добавить(стр.Пользователь.EMail);
КонецЦикла; //для всех пользователей из ТЧ документа


Если документ не открыт, тогда его надо запросом найти (можно и выборкой, но не стоит):
В запросе сразу обращаемся к табличной части документа и получаем адреса.

    Выборка = Запрос.Выполнить.Выбрать;
    Пока Выборка.Следующий() Цикл
        Сообщение.Получатели.Добавить(Выборка.Адрес); // отправка всем адресам из выборки
    КонецЦикла;

Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

slimuz

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

Но вылезает ошибка: Поле объекта не обнаружено (EMail).
Возможно это связанно с тем, что этот код надо запускать НаКлиенте ?

MuI_I_Ika

Запрос не выполняется на клиенте, только на сервере.

Эта ошибка означает, что поля email нету у пользователя. Посмотрите повнимательнее структуру базы. Где и какие поля есть.

slimuz

Может дело в том, что фактически самого реквизита EMail в ТЧ нет. Но через Конструктор запроса такой же запрос получается. На скриншоте более наглядно.
https://yadi.sk/i/GHNwEoyv3Leui2
Как по-другому можно к нему обратиться ?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск