Версия для печати темы (https://pro1c.org.ua/index.php?s=5d17f79124d7ca49612b8e4e5fe61c00&showtopic=60832)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ некорректная работа почтового клиента

Автор: kapacb 10.08.20, 17:22

Добрый день.

Пробую подружить "Бухгалтерия для Украины" 2.0 с почтой. Почтовый сервер в организации использует нестандартный порт imap. Почему-то какой порт ни указываю в настройках учетной записи эл. почты, 1с все равно берет 993.

в функцииРаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись, ДляПолучения = Ложь) Экспорт

есть такой код:

    Результат = Новый ИнтернетПочтовыйПрофиль;
    ЗаполнитьЗначенияСвойств(Результат, Выборка, ТребуемыеСвойства, ИсключаемыеСвойства);

после этого Результат.ПортIMAP = 993

если немного подправить:
    Результат = Новый ИнтернетПочтовыйПрофиль;
    ЗаполнитьЗначенияСвойств(Результат, Выборка, ТребуемыеСвойства, ИсключаемыеСвойства);
    Результат.ПортIMAP = Выборка.ПортIMAP;

то все работает и порт заполняется корректно.
ИсключаемыеСвойства = неопределено. ТребуемыеСвойства = "АдресСервераIMAP,ПортIMAP,ИспользоватьSSLIMAP,ПользовательIMAP,ПарольIMAP,ТолькоЗащищеннаяАутентификацияIMAP"

Почему ЗаполнитьЗначенияСвойств() может пропускает свойство "ПортIMAP"?


Автор: daveal 11.08.20, 13:34

По ходу он заполняет, но использование порта по умолчанию на изменение флага "ИспользоватьSSLIMAP" завязано - т.е. при изменении флага, меняется и порт. Перенесите порт в конец списка свойств
"АдресСервераIMAP,ИспользоватьSSLIMAP,ПользовательIMAP,ПарольIMAP,ТолькоЗащищеннаяАутентификацияIMAP,ПортIMAP"

Автор: kapacb 11.08.20, 16:43

daveal @ Сегодня, 14:34 * ,
действительно, перенос в конец списка помог. Но не совсем понятно почему так? Насколько я понимаю ЗаполнитьЗначенияСвойств() просто копирует значения. Причем тут порядок следования?

Автор: daveal 11.08.20, 17:03

kapacb @ Сегодня, 17:43 * ,
ПортIMAP меняется на 993 при изменении флага ИспользоватьSSLIMAP. Вот если сначала изменить порт, потом изменить флаг, то порт будет 993. Если сначала меняем флаг, потом порт, то соответственно остается указанный порт

Автор: kapacb 11.08.20, 17:07

daveal,
на форме? После установки флага заменяю порт на тот, что мне нужен. нажимаю сохранить. после чего жму проверить... в структуру выборки порт правильный попадает, но... после заполнения в результате оказывается порт 993. ну или 143 если флаг не стоит.

Автор: daveal 11.08.20, 17:27

kapacb @ Сегодня, 18:07 * ,
Свойства копируются в том порядке, который указан в строке.
Флаг не на форме, а у почтового профиля. Даже если просто вызвать, код

    Результат = Новый ИнтернетПочтовыйПрофиль;
    Результат.ПортIMAP = 55; // любой порт не 143, 993
    Результат.ИспользоватьSSLIMAP = Ложь; // или Истина, не важно

то после установки значения флага ИспользоватьSSLIMAP порт сбрасывается.

Автор: kapacb 11.08.20, 17:48

daveal @ Сегодня, 18:27 * ,
Понял. Спасибо за объяснение.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua