|   |   | 
| 
 | Обращение к реквизиту справочника из модуля формы | ☑ | ||
|---|---|---|---|---|
| 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 = "mail@mail.ru"; Профиль.ПарольSMTP = "***"; Профиль.ИспользоватьSSLSMTP = Истина; Профиль.ПортSMTP = 465; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("Текст"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "В бухгалтерию"; Письмо.Отправитель = "mail@mail.ru"; Письмо.ИмяОтправителя = "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Адрес ФИО Событие 123@mail.ru Иванов Отправка счета 1234@mail.ru Петров Задача То есть, 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Адрес ФИО Событие 123@mail.ru Иванов Отправка счета 1234@mail.ru Петров Задача То есть, 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) тогда попробую поизучать запросы. И вытащу запросом.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |