Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
При работе с объектом 1С «ИнтернетПочта» какие варианты отбора доступны «из коробки» при получении писем/заголовков с сервера (то есть без встроенных фильтров по прочитанности или датам в самом вызове получения)?
Можно получить только все письма (или все заголовки), которые есть на сервере.
Правильно: У метода получения сообщений (Выбрать) нет параметров вида «только непрочитанные/прочитанные» или «за период» - он возвращает сообщения с сервера без такого явного фильтра. Если не формировать отдельный список заголовков/идентификаторов для выбора, в результате фактически обрабатывается весь набор писем на сервере.
Можно выбрать либо все письма, либо только непрочитанные - это задается параметром метода.
Неправильно: В методе Выбрать нет параметра, который напрямую включает режим «только непрочитанные». Отбор непрочитанных приходится реализовывать отдельно: например, получить заголовки и отфильтровать их по признакам/идентификаторам, а затем передать в Выбрать массив выбранных заголовков.
Можно выбрать все письма, только непрочитанные или только прочитанные - все это поддерживается в настройках выборки.
Неправильно: Сам вызов получения писем не предлагает готового переключателя «прочитанные/непрочитанные» как режим выборки. Если нужно разделять письма по статусу, это делается через дополнительную логику: серверные флаги/свойства заголовков (для IMAP) или собственный учет обработанных писем по идентификаторам.
Можно получить письма за указанный период дат (например, только за последние 7 дней).
Неправильно: В параметрах метода Выбрать нет прямого ограничения «с даты/по дату». Ограничение по датам достигается только через дополнительный этап (получение заголовков и отбор нужных по дате/идентификатору) либо через серверный отбор заголовков там, где он поддерживается, но это не является встроенным режимом самого Выбрать.
Можно получить письма за период и дополнительно выбрать: все/непрочитанные/прочитанные одним стандартным вызовом.
Неправильно: Такой комбинированный фильтр не предоставляется параметрами одного стандартного вызова получения писем. Чтобы добиться подобного поведения, нужно сначала сформировать набор заголовков/идентификаторов по своим условиям (например, по дате и статусу), и уже затем выбирать полные письма по этому набору.
Пояснение
Развернутая подсказка:
Объект «ИнтернетПочта» предназначен для работы с почтовым сервером (обычно IMAP/POP3) и предоставляет базовые операции: подключиться, получить заголовки, получить письма, при необходимости пометить их прочитанными или удалить.
Ключевой момент: метод «Выбрать» сам по себе не содержит «готовых фильтров» по прочитанности или по диапазону дат. Его параметры относятся к техническому поведению (например, удалять ли выбранные сообщения с сервера и отмечать ли их прочитанными) и к тому, передаете ли вы явно список сообщений (заголовки/идентификаторы), которые нужно скачать целиком.
Как организуют выборку на практике:
1) Сначала получают заголовки писем.
- «ПолучитьЗаголовки()» позволяет скачать только заголовки без тела и вложений - это быстрее и безопаснее, если писем много.
- Далее заголовки можно отбирать программно: по теме, отправителю, дате, наличию вложений и т.п.
2) Затем формируют массив выбранных заголовков (или идентификаторов) и передают его в «Выбрать(...)», чтобы скачать только нужные письма целиком.
Пример логики (словами):
- Получили все заголовки.
- Оставили только те, что пришли «после вчера» и содержат в теме «Акт».
- Передали отобранный массив заголовков в «Выбрать» и скачали только эти письма.
Что важно помнить (типичные ошибки и лучшие практики):
- Осторожно с удалением: у «Выбрать» часто есть поведение «удалять выбранные сообщения с сервера» (в некоторых реализациях это значение по умолчанию). Поэтому при тестах лучше явно указывать, что удалять не нужно.
- Прочитанность: «отмечать как прочитанные» также может управляться параметром. Если вы хотите сначала разобрать письмо и только потом считать его обработанным, лучше не помечать письма прочитанными автоматически.
- Для POP3 отбор на стороне сервера обычно ограничен, поэтому часто приходится получать все заголовки и отбирать локально.
- Чтобы не перечитывать одни и те же письма, удобно хранить список обработанных идентификаторов (или дату/метку) и пропускать уже обработанные письма при следующем запуске.
Итог для теста: стандартная «встроенная» выборка в стиле «только непрочитанные/прочитанные/за период» не задается напрямую одним вызовом получения писем; без дополнительной логики фактически читается весь набор писем на сервере.