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