Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обращение к реквизиту справочника из модуля формы

Обращение к реквизиту справочника из модуля формы
Я
   Oleg37701
 
25.04.21 - 12:47
Здравствуйте, я новичок в 1с, простите заранее на глупые вопросы.

Есть модуль формы Документа. Написал Процедуру при нажатии на кнопку, отправлять данные на email.

Вот только нужно, чтобы получатель был НЕ фиксированный в коде : Письмо.Получатели.Добавить(****@mail.ru), а чтобы подставлялся из реквизита справочника (Справочник Email). В справочнике есть следующие реквизиты: EmailАдрес, ФИО

Так вот, не получается сделать ссылку на реквизит справочника из модуля формы. Буду благодарен за помощь
   Oleg37701
 
1 - 25.04.21 - 12:48
Вот сам код. Сама процедура отправки выполняется на сервере:


&НаСервере  
Процедура SMTPОтправка() 
    Профиль = Новый ИнтернетПочтовыйПрофиль;
   Профиль.АдресСервераSMTP = "smtp.yandex.ru";
   Профиль.ПользовательSMTP = "mail@mail.ru";
   Профиль.ПарольSMTP = "***";
   Профиль.ИспользоватьSSLSMTP = Истина;
   Профиль.ПортSMTP = 465; 
   Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;

   Письмо = Новый ИнтернетПочтовоеСообщение;
   Текст = Письмо.Тексты.Добавить("Текст");
   Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
   Письмо.Тема = "В бухгалтерию"; 
   Письмо.Отправитель = "mail@mail.ru";
   Письмо.ИмяОтправителя = "1c";
   
  ПолучательПисьма = Объект.Email.EmailАдес;
   Письмо.Получатели.Добавить(ПолучательПисьма);
   
   
   
     
   Почта = Новый ИнтернетПочта;
   Попытка
      Почта.Подключиться(Профиль);
      Сообщить("Соединение с почтовым сервером установлено");
   Исключение
       Сообщить("Не удалось подключиться к серверу по причине: ");
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   Попытка
      Почта.Послать(Письмо);
      Сообщить("Письмо отправлено в бухгалтерию!");
   Исключение
       Сообщить("Не удалось отправить письмо");
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
    
   Почта.Отключиться();
   Сообщить("Соединение завершено");
 КонецПроцедуры
   ДенисЧ
 
2 - 25.04.21 - 12:50
На форму вытаскиваешь поле ввода, тип - справочник емыло, имя ЕМылоПолучателя
Ну, это если ты не хочешь это в документе хранить.
Пользователь выбирает, по кнопоке отправить обращаешься к ЕМылоПолучателя, берёшь нужный реквизит.
Твоя запись ПолучательПисьма = Объект.Email.EmailАдес; - обращение к реквизиту документа. А в документе, как я понял, у тебя его нет
   Oleg37701
 
3 - 25.04.21 - 12:53
А можно не вытаскивать это на форму документа, а сразу обращаться к справочнику Email ?Чтообы тянуть оттуда? (2)
   ДенисЧ
 
4 - 25.04.21 - 13:07
(3) А к какому элементу справочника ты будешь обращаться? Если ты это знаешь - можешь не вытягивать на форму
   hhhh
 
5 - 25.04.21 - 13:12
(3) какой смысл тогда? если у вас один единственный email? вся фишка в том, что пользователь программы может сам выбрать, кому он хочет отправить.
   Oleg37701
 
6 - 25.04.21 - 13:30
(5) Смысл в том, что в Справочнике Email есть - несколько реквизитов - EmailАдрес, Событие, ФИО.
И в зависимости от документа ( Счет на оплату, Задача). Письмо будет посылаться по заполненному справочнику.

Допустим:

Справочник Email
EmailАдрес ФИО Событие

123@mail.ru  Иванов Отправка счета
1234@mail.ru Петров Задача 

То есть, Email пользователь заводит под конкретное событие в Справочнике.
   Oleg37701
 
7 - 25.04.21 - 13:30
(4) Есть справочник Email, там есть реквизит EmailАдрес. Я хочу к нему обратиться из формы документа.
   hhhh
 
8 - 25.04.21 - 13:39
(6) тогда да, можно не вытаскивать на форму.
   RomanYS
 
9 - 25.04.21 - 13:41
(7) Ну в (1) ты к нему и обратился. Что не получилось то?
   Oleg37701
 
10 - 25.04.21 - 13:45
(9) Появляется ошибка:Поле объекта не обнаружено.

Тогда я добавил реквизит в этот документ со ссылкой на справочник. Ошибка пропала. Сейчас ошибок не выдает, пишет, что отправлено но при этом не отправляет. Не приходят письма.
   Oleg37701
 
11 - 25.04.21 - 13:51
(8) А просто хранить реквизит со ссылкой на справочник в документе ?
   hhhh
 
12 - 25.04.21 - 13:53
(10) ну, выведите там

Сообщить("" +  Объект.Email);
Сообщить("" +  Объект.Email.EmailАдес);

может просто ошиблись в адресе?
   RomanYS
 
13 - 25.04.21 - 13:53
(10) Так включи отладчик и посмотри куда отправляет и где-ты напутал. Если письма уходят, можно ещё свой адрес в копию поставить для отладки... но отладчик точно лучше
   Злопчинский
 
14 - 25.04.21 - 13:57
Попытка
      Почта.Послать(Письмо);
- а это точно что неотправка письма является ОШИБКОЙ?
   Oleg37701
 
15 - 25.04.21 - 13:59
(12) Пустые строки выдает, но все равно пишет отправлено.
   Oleg37701
 
16 - 25.04.21 - 14:00
(14) А почему нет? Цель - отправить, конечный результат - письмо отправлено. Следовательно, если не отправлено - это ошибка. Разве нет?
   RomanYS
 
17 - 25.04.21 - 14:02
(15) Значит поле Email не заполнено
   Oleg37701
 
18 - 25.04.21 - 14:04
(17) Лично только что в справочнике заполнял EmailАдрес, он есть. (
   RomanYS
 
19 - 25.04.21 - 14:05
(18) Поле не заполнено в ДОКУМЕНТЕ
   Oleg37701
 
20 - 25.04.21 - 14:12
(19) Что-то я туплю. Мне нужно заполнять его в документе, его даже на форме быть не должно. Мне нужно, чтобы данные тянулись со справочника.
   Oleg37701
 
21 - 25.04.21 - 14:12
(19) НЕ нужно.
   RomanYS
 
22 - 25.04.21 - 14:20
(20)
Объект - это документ,
Объект.Email - поле документа.

>>Мне нужно, чтобы данные тянулись со справочника
Из какого именно, в справочнике может быть много элементов. Может тебе константа нужна была, а не справочник.

(21) тогда не бери их из документа
   Oleg37701
 
23 - 25.04.21 - 14:22
(22) Смотрите, у меня есть справочник. В нем три реквизита - EmailАдрес, Событие, ФИО.
И в зависимости от документа ( Счет на оплату, Задача). Письмо будет посылаться по заполненному справочнику.

Допустим:

Справочник Email
EmailАдрес ФИО Событие

123@mail.ru  Иванов Отправка счета
1234@mail.ru Петров Задача 

То есть, Email пользователь заводит под конкретное событие в Справочнике.

То есть:

Получатели должны тянуться из справочника из реквизита "EmailАдрес"
   RomanYS
 
24 - 25.04.21 - 14:27
(23) Значит в справочнике нужно найти нужный элемент по реквизиту "событие" и из этого элемента взять адрес.
   Oleg37701
 
25 - 25.04.21 - 14:29
(24) Так вот в том и вопрос.

Процедура отправки я пишу в форме документа. Как из формы мне обратиться к этому справочнику ?
   Злопчинский
 
26 - 25.04.21 - 14:32
(25) ручками. код написать.
   Oleg37701
 
27 - 25.04.21 - 14:36
(26) Я несколько вариантов перепробовал. Не получается. Поэтому и написал сюда.
   Злопчинский
 
28 - 25.04.21 - 14:39
   Oleg37701
 
29 - 25.04.21 - 14:54
(24) Пробовал как-то так,

ПолучательПисьма = Справочники.Email.НайтиПоРеквизиту("Событие","Оплата счета");
ПолучателиПисьма1 = ПолучательПисьма.EmailАдрес;


Пока тоже безуспешно.
   Злопчинский
 
30 - 25.04.21 - 15:02
событие - строчный реквизит?
 
 Рекламное место пустует
   Злопчинский
 
31 - 25.04.21 - 15:03
ну и как бы событий "отправка счета" м.б. много. какой именно майл брать?
   hhhh
 
32 - 25.04.21 - 15:04
(29) реквизит Событие какого типа?
и если найти по реквизиту, тогда реквизит должен быть индексированный. Посмотри, у него стоит галка Индексировать?
   Oleg37701
 
33 - 25.04.21 - 15:09
(32) (30) Тип: ссылка на перечисления. (32) Стоит не индексировать. (31) Какой email брать - Если получится то все с "отправкой счета".
   hhhh
 
34 - 25.04.21 - 15:12
(33) а пишешь найти "Оплата счета". Это вообще-то не перечисление.
   Oleg37701
 
35 - 25.04.21 - 15:20
(34) нужно указать перечисление?
   Chameleon1980
 
36 - 25.04.21 - 15:20
зацепил попутно изучение запросов
хотя бы основ
   Chameleon1980
 
37 - 25.04.21 - 15:21
зацепил=зацепи
   hhhh
 
38 - 25.04.21 - 15:28
(35) надо логику включать. Если там у тебя перечисления, а ты ищешь не перечисление, то что в итоге найдешь?
   Oleg37701
 
39 - 25.04.21 - 15:29
(38) логично, ничего не найду.
   Oleg37701
 
40 - 25.04.21 - 15:31
(38) тогда попробую поизучать запросы. И вытащу запросом.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.