|
Обращение к реквизиту справочника из модуля формы | ☑ | ||
---|---|---|---|---|
0
Oleg37701
25.04.21
✎
12:47
|
Здравствуйте, я новичок в 1с, простите заранее на глупые вопросы.
Есть модуль формы Документа. Написал Процедуру при нажатии на кнопку, отправлять данные на email. Вот только нужно, чтобы получатель был НЕ фиксированный в коде : Письмо.Получатели.Добавить(****@mail.ru), а чтобы подставлялся из реквизита справочника (Справочник Email). В справочнике есть следующие реквизиты: EmailАдрес, ФИО Так вот, не получается сделать ссылку на реквизит справочника из модуля формы. Буду благодарен за помощь |
|||
1
Oleg37701
25.04.21
✎
12:48
|
Вот сам код. Сама процедура отправки выполняется на сервере:
&НаСервере Процедура SMTPОтправка() Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = "smtp.yandex.ru"; Профиль.ПользовательSMTP = "[email protected]"; Профиль.ПарольSMTP = "***"; Профиль.ИспользоватьSSLSMTP = Истина; Профиль.ПортSMTP = 465; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("Текст"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "В бухгалтерию"; Письмо.Отправитель = "[email protected]"; Письмо.ИмяОтправителя = "1c"; ПолучательПисьма = Объект.Email.EmailАдес; Письмо.Получатели.Добавить(ПолучательПисьма); Почта = Новый ИнтернетПочта; Попытка Почта.Подключиться(Профиль); Сообщить("Соединение с почтовым сервером установлено"); Исключение Сообщить("Не удалось подключиться к серверу по причине: "); Сообщить(ОписаниеОшибки()); КонецПопытки; Попытка Почта.Послать(Письмо); Сообщить("Письмо отправлено в бухгалтерию!"); Исключение Сообщить("Не удалось отправить письмо"); Сообщить(ОписаниеОшибки()); КонецПопытки; Почта.Отключиться(); Сообщить("Соединение завершено"); КонецПроцедуры |
|||
2
ДенисЧ
25.04.21
✎
12:50
|
На форму вытаскиваешь поле ввода, тип - справочник емыло, имя ЕМылоПолучателя
Ну, это если ты не хочешь это в документе хранить. Пользователь выбирает, по кнопоке отправить обращаешься к ЕМылоПолучателя, берёшь нужный реквизит. Твоя запись ПолучательПисьма = Объект.Email.EmailАдес; - обращение к реквизиту документа. А в документе, как я понял, у тебя его нет |
|||
3
Oleg37701
25.04.21
✎
12:53
|
А можно не вытаскивать это на форму документа, а сразу обращаться к справочнику Email ?Чтообы тянуть оттуда? (2)
|
|||
4
ДенисЧ
25.04.21
✎
13:07
|
(3) А к какому элементу справочника ты будешь обращаться? Если ты это знаешь - можешь не вытягивать на форму
|
|||
5
hhhh
25.04.21
✎
13:12
|
(3) какой смысл тогда? если у вас один единственный email? вся фишка в том, что пользователь программы может сам выбрать, кому он хочет отправить.
|
|||
6
Oleg37701
25.04.21
✎
13:30
|
(5) Смысл в том, что в Справочнике Email есть - несколько реквизитов - EmailАдрес, Событие, ФИО.
И в зависимости от документа ( Счет на оплату, Задача). Письмо будет посылаться по заполненному справочнику. Допустим: Справочник Email EmailАдрес ФИО Событие [email protected] Иванов Отправка счета [email protected] Петров Задача То есть, Email пользователь заводит под конкретное событие в Справочнике. |
|||
7
Oleg37701
25.04.21
✎
13:30
|
(4) Есть справочник Email, там есть реквизит EmailАдрес. Я хочу к нему обратиться из формы документа.
|
|||
8
hhhh
25.04.21
✎
13:39
|
(6) тогда да, можно не вытаскивать на форму.
|
|||
9
RomanYS
25.04.21
✎
13:41
|
(7) Ну в (1) ты к нему и обратился. Что не получилось то?
|
|||
10
Oleg37701
25.04.21
✎
13:45
|
(9) Появляется ошибка:Поле объекта не обнаружено.
Тогда я добавил реквизит в этот документ со ссылкой на справочник. Ошибка пропала. Сейчас ошибок не выдает, пишет, что отправлено но при этом не отправляет. Не приходят письма. |
|||
11
Oleg37701
25.04.21
✎
13:51
|
(8) А просто хранить реквизит со ссылкой на справочник в документе ?
|
|||
12
hhhh
25.04.21
✎
13:53
|
(10) ну, выведите там
Сообщить("" + Объект.Email); Сообщить("" + Объект.Email.EmailАдес); может просто ошиблись в адресе? |
|||
13
RomanYS
25.04.21
✎
13:53
|
(10) Так включи отладчик и посмотри куда отправляет и где-ты напутал. Если письма уходят, можно ещё свой адрес в копию поставить для отладки... но отладчик точно лучше
|
|||
14
Злопчинский
25.04.21
✎
13:57
|
Попытка
Почта.Послать(Письмо); - а это точно что неотправка письма является ОШИБКОЙ? |
|||
15
Oleg37701
25.04.21
✎
13:59
|
(12) Пустые строки выдает, но все равно пишет отправлено.
|
|||
16
Oleg37701
25.04.21
✎
14:00
|
(14) А почему нет? Цель - отправить, конечный результат - письмо отправлено. Следовательно, если не отправлено - это ошибка. Разве нет?
|
|||
17
RomanYS
25.04.21
✎
14:02
|
(15) Значит поле Email не заполнено
|
|||
18
Oleg37701
25.04.21
✎
14:04
|
(17) Лично только что в справочнике заполнял EmailАдрес, он есть. (
|
|||
19
RomanYS
25.04.21
✎
14:05
|
(18) Поле не заполнено в ДОКУМЕНТЕ
|
|||
20
Oleg37701
25.04.21
✎
14:12
|
(19) Что-то я туплю. Мне нужно заполнять его в документе, его даже на форме быть не должно. Мне нужно, чтобы данные тянулись со справочника.
|
|||
21
Oleg37701
25.04.21
✎
14:12
|
(19) НЕ нужно.
|
|||
22
RomanYS
25.04.21
✎
14:20
|
(20)
Объект - это документ, Объект.Email - поле документа. >>Мне нужно, чтобы данные тянулись со справочника Из какого именно, в справочнике может быть много элементов. Может тебе константа нужна была, а не справочник. (21) тогда не бери их из документа |
|||
23
Oleg37701
25.04.21
✎
14:22
|
(22) Смотрите, у меня есть справочник. В нем три реквизита - EmailАдрес, Событие, ФИО.
И в зависимости от документа ( Счет на оплату, Задача). Письмо будет посылаться по заполненному справочнику. Допустим: Справочник Email EmailАдрес ФИО Событие [email protected] Иванов Отправка счета [email protected] Петров Задача То есть, Email пользователь заводит под конкретное событие в Справочнике. То есть: Получатели должны тянуться из справочника из реквизита "EmailАдрес" |
|||
24
RomanYS
25.04.21
✎
14:27
|
(23) Значит в справочнике нужно найти нужный элемент по реквизиту "событие" и из этого элемента взять адрес.
|
|||
25
Oleg37701
25.04.21
✎
14:29
|
(24) Так вот в том и вопрос.
Процедура отправки я пишу в форме документа. Как из формы мне обратиться к этому справочнику ? |
|||
26
Злопчинский
25.04.21
✎
14:32
|
(25) ручками. код написать.
|
|||
27
Oleg37701
25.04.21
✎
14:36
|
(26) Я несколько вариантов перепробовал. Не получается. Поэтому и написал сюда.
|
|||
28
Злопчинский
25.04.21
✎
14:39
|
||||
29
Oleg37701
25.04.21
✎
14:54
|
(24) Пробовал как-то так,
ПолучательПисьма = Справочники.Email.НайтиПоРеквизиту("Событие","Оплата счета"); ПолучателиПисьма1 = ПолучательПисьма.EmailАдрес; Пока тоже безуспешно. |
|||
30
Злопчинский
25.04.21
✎
15:02
|
событие - строчный реквизит?
|
|||
31
Злопчинский
25.04.21
✎
15:03
|
ну и как бы событий "отправка счета" м.б. много. какой именно майл брать?
|
|||
32
hhhh
25.04.21
✎
15:04
|
(29) реквизит Событие какого типа?
и если найти по реквизиту, тогда реквизит должен быть индексированный. Посмотри, у него стоит галка Индексировать? |
|||
33
Oleg37701
25.04.21
✎
15:09
|
(32) (30) Тип: ссылка на перечисления. (32) Стоит не индексировать. (31) Какой email брать - Если получится то все с "отправкой счета".
|
|||
34
hhhh
25.04.21
✎
15:12
|
(33) а пишешь найти "Оплата счета". Это вообще-то не перечисление.
|
|||
35
Oleg37701
25.04.21
✎
15:20
|
(34) нужно указать перечисление?
|
|||
36
Chameleon1980
25.04.21
✎
15:20
|
зацепил попутно изучение запросов
хотя бы основ |
|||
37
Chameleon1980
25.04.21
✎
15:21
|
зацепил=зацепи
|
|||
38
hhhh
25.04.21
✎
15:28
|
(35) надо логику включать. Если там у тебя перечисления, а ты ищешь не перечисление, то что в итоге найдешь?
|
|||
39
Oleg37701
25.04.21
✎
15:29
|
(38) логично, ничего не найду.
|
|||
40
Oleg37701
25.04.21
✎
15:31
|
(38) тогда попробую поизучать запросы. И вытащу запросом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |