Подбор электронной почты в реквизит на форме внешней обработки
Здравствуйте, прошу помощи. Есть внешняя обработка для отправки сообщений контрагентам. (1С БП 3.0) Нужно сделать подбор электронной почты для нескольких получателей. Пробовала добавлять реквизит "Получатель" с типом справочник ссылка контрагенты. Но как от туда достать именно адреса электронных адресов не могу сообразить .
По теме из базы знаний
- Всякие полезности
- Контроль видимости и доступности элементов управляемой формы
- Массовая рассылка печатных форм любых документов + расчетные листки по Email, Telegram, WhatsApp, FTP, в каталог или том
- Универсальный шаблон для загрузки данных из Excel и подбора ссылок в любой конфигурации
- Общий (полный, универсальный) журнал документов для всех конфигураций 1С на управляемых формах
Найденные решения
(5)
Вы каждый раз перезаполняете реквизит объекта "Адрес". Скорее всего у Вас этот реквизит типа Поле ввода.
Можно попробовать многострочный режим у этого реквизита использовать.
Или лучше добавить Реквизит таблица значений и в цикле добавлять строки адресов.
И при заполнении получателей, тоже циклом из таблицы получать адреса.
Пока Выборка.Следующий() Цикл
Объект.Адрес = Выборка.АдресЭП;
КонецЦикла;
Объект.Адрес = Выборка.АдресЭП;
КонецЦикла;
Вы каждый раз перезаполняете реквизит объекта "Адрес". Скорее всего у Вас этот реквизит типа Поле ввода.
Можно попробовать многострочный режим у этого реквизита использовать.
Или лучше добавить Реквизит таблица значений и в цикле добавлять строки адресов.
И при заполнении получателей, тоже циклом из таблицы получать адреса.
Для Каждого Получатель Из <Таблица где заполнены адреса> Цикл
Письмо.Получатели.Добавить(Получатель.<имя колонки таблицы, куда добавлен адрес>);
КонецЦикла;
(5) Выгрузите адреса в массив сразу:
дальше, например, обрабатывайте массив в цикле - по каждому адресу почты отправляете отдельное письмо, или создайте список адресов, если тело письма для всех одинаково и надо отправить его всем одним письмом.
...
Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
МассивАдресов = Запрос.выполнитьр().Выгрузить().ВыгрузитьКолонку("АдресЭП");
...дальше, например, обрабатывайте массив в цикле - по каждому адресу почты отправляете отдельное письмо, или создайте список адресов, если тело письма для всех одинаково и надо отправить его всем одним письмом.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Получить почту сожно например так:
Функция ПолучитьМыло(КонтрагентСсылка)
Запрос = НОвый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| КонтрагентыКонтактнаяИнформация.АдресЭП КАК АдресЭП
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтрагенты)
| И КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка"
);
Запрос.УстановитьПараметр("Ссылка", КонтрагентСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.АдресЭП;
Иначе
Возврат "E-mail не задан";
КонецЕсли;
КонецФункции Показать
Спасибо за помощь, электронные адреса получила. Теперь встал вопрос, как их все добавить в реквизит? Если пишу реквизит=выборка, добавляется всего лишь один адрес, а не нужное количество. Подскажите, как это реализовать?
&НаСервере
Процедура ОтправкаПисьмаНаСервере()
МассивОбъектов = Новый Массив;
МассивОбъектов = Получатель.ВыгрузитьЗначения();
Запрос=Новый Запрос(
"ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.АдресЭП КАК АдресЭП
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailКонтрагенты)
| И КонтрагентыКонтактнаяИнформация.Ссылка В(&МассивОбъектов)"
);
Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект.Адрес = Выборка.АдресЭП;
КонецЦикла;
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = Объект.ЗаголовокПисьма;
Письмо.Тексты.Добавить(Объект.ТекстПисьма);
Письмо.Получатели.Добавить(Объект.Адрес);
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты, Письмо);
КонецПроцедуры
&НаКлиенте
Процедура ОтправкаПисьма(Команда)
ОтправкаПисьмаНаСервере();
КонецПроцедуры Показать
(5)
Вы каждый раз перезаполняете реквизит объекта "Адрес". Скорее всего у Вас этот реквизит типа Поле ввода.
Можно попробовать многострочный режим у этого реквизита использовать.
Или лучше добавить Реквизит таблица значений и в цикле добавлять строки адресов.
И при заполнении получателей, тоже циклом из таблицы получать адреса.
Пока Выборка.Следующий() Цикл
Объект.Адрес = Выборка.АдресЭП;
КонецЦикла;
Объект.Адрес = Выборка.АдресЭП;
КонецЦикла;
Вы каждый раз перезаполняете реквизит объекта "Адрес". Скорее всего у Вас этот реквизит типа Поле ввода.
Можно попробовать многострочный режим у этого реквизита использовать.
Или лучше добавить Реквизит таблица значений и в цикле добавлять строки адресов.
И при заполнении получателей, тоже циклом из таблицы получать адреса.
Для Каждого Получатель Из <Таблица где заполнены адреса> Цикл
Письмо.Получатели.Добавить(Получатель.<имя колонки таблицы, куда добавлен адрес>);
КонецЦикла;
(5) Выгрузите адреса в массив сразу:
дальше, например, обрабатывайте массив в цикле - по каждому адресу почты отправляете отдельное письмо, или создайте список адресов, если тело письма для всех одинаково и надо отправить его всем одним письмом.
...
Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
МассивАдресов = Запрос.выполнитьр().Выгрузить().ВыгрузитьКолонку("АдресЭП");
...дальше, например, обрабатывайте массив в цикле - по каждому адресу почты отправляете отдельное письмо, или создайте список адресов, если тело письма для всех одинаково и надо отправить его всем одним письмом.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
