МенеджерКонтактов.ПоддерживаетсяДобавлениеКонтактов

Методы · ContactsAddingSupported

Определяет возможность добавления, редактирования, или удаления контактов на данном устройстве.

Синтаксис

ПоддерживаетсяДобавлениеКонтактов()
Полное описание, параметры и ограничения

МенеджерКонтактов.ПоддерживаетсяДобавлениеКонтактов (ContactManager.ContactsAddingSupported)

МенеджерКонтактов (ContactManager)

ПоддерживаетсяДобавлениеКонтактов (ContactsAddingSupported)

Доступен, начиная с версии 8.3.10.

Синтаксис:
ПоддерживаетсяДобавлениеКонтактов()
Возвращаемое значение:
Тип: Булево.
Возвращает Истина в зависимости от используемой операционной системы:
Android – всегда,

iOS – всегда,

Windows Phone – никогда.

Описание:

Определяет возможность добавления, редактирования, или удаления контактов на данном устройстве.

Доступность:

Мобильный клиент, мобильное приложение (клиент).

См. также:
МенеджерКонтактов, метод ДобавитьКонтакт

Использование в версии:

Доступен, начиная с версии 8.3.10.

Методическая информация

Практические примеры

Проверить доступ к контактам, не раскрывая адресную книгу

Читаем число контактов и возможности устройства; идентификаторы записей, телефоны и имена не выводятся.

Где и как запускать

Полный клиентский модуль собственной мобильной управляемой формы. Не вставляйте процедуры внутрь другой процедуры.

Подготовка

  1. Только мобильный клиент/мобильное приложение 1С на собственном тестовом устройстве и отдельная пустая конфигурация УчебнаяКонфигурацияСинтаксиса. Настольный клиент не заменяет этот API.

  2. Вручную разрешите доступ к контактам только своему учебному приложению. Поддержка метода не доказывает разрешение ОС.

  3. Изменения адресной книги выполняйте только в отдельном локальном учебном профиле без синхронизации и реальных контактов. Не используйте корпоративные/личные учётные записи.

  4. Создайте отдельную управляемую форму для каждого урока. Полный код вставляется на уровне модуля; команды и указанные строковые реквизиты создаются вручную.

  5. Рецепты изменения/удаления при ручном запуске реально меняют адресную книгу ОС. Здесь они не исполнялись, runtime-проверка 1С не заявляется.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Менеджер = Новый МенеджерКонтактов;
    Сообщить("Добавление контактов: " + Строка(Менеджер.ПоддерживаетсяДобавлениеКонтактов()));
    Сообщить("Глобальные ключи: " + Строка(Менеджер.ПоддерживаютсяГлобальныеКлючиКонтактов()));
    Сообщить("Контактов на устройстве: " + Строка(Менеджер.ПолучитьКоличествоКонтактов()));
    Записи = Менеджер.ПолучитьУчетныеЗаписиКонтактов();
    Сообщить("Доступных учётных записей: " + Строка(Записи.Количество()));
    Для Каждого Запись Из Записи Цикл
        Сообщить(ТипЗнч(Запись) = Тип("УчетнаяЗаписьКонтактов"));
        Сообщить(ТипЗнч(Запись.Идентификатор) = Тип("Строка"));
        Сообщить(ТипЗнч(Запись.ИсточникУчетнойЗаписи) = Тип("Строка"));
    КонецЦикла;
    ЛокальнаяЗапись = Менеджер.ПолучитьЛокальнуюУчетнуюЗаписьКонтактов();
    Сообщить(ТипЗнч(ЛокальнаяЗапись) = Тип("УчетнаяЗаписьКонтактов"));
КонецПроцедуры

Разбор по шагам

  1. Создайте команду ВыполнитьПример; подготовьте разрешение ОС в своём учебном профиле.

  2. ПолучитьКоличествоКонтактов возвращает число, а не данные контактов. ПолучитьУчетныеЗаписиКонтактов возвращает массив записей, не строки имён.

  3. Идентификатор и ИсточникУчетнойЗаписи читаются только для проверки типов; они доступны только для чтения и не присваиваются.

  4. По установленной справке глобальные ключи контактов не поддерживаются. Код показывает фактический ответ текущей ОС, не выдумывает глобальный ID.

  5. ПолучитьКонтакт и НайтиКонтакты здесь не вызываются: содержимое адресной книги не перебирается.

Как проверить результат

  1. Проверки типов записей дают Истина при успешном разрешённом доступе; числа показывают фактическое состояние учебного устройства.

  2. В Сообщить нет имён людей, адресов, телефонов или идентификаторов учётных записей.

Ожидаемый результат

Получено понимание возможностей менеджера без выгрузки содержимого контактов.

На что обратить внимание

  1. Число контактов не является числом учётных записей и не доказывает доступ к конкретному контакту.

  2. Истина у поддержки добавления не гарантирует успешную запись в любую учётную запись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Создать, изменить и удалить только собственный вымышленный контакт

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

Где и как запускать

Полный клиентский модуль собственной мобильной управляемой формы. Не вставляйте процедуры внутрь другой процедуры.

Подготовка

  1. Только мобильный клиент/мобильное приложение 1С на собственном тестовом устройстве и отдельная пустая конфигурация УчебнаяКонфигурацияСинтаксиса. Настольный клиент не заменяет этот API.

  2. Вручную разрешите доступ к контактам только своему учебному приложению. Поддержка метода не доказывает разрешение ОС.

  3. Изменения адресной книги выполняйте только в отдельном локальном учебном профиле без синхронизации и реальных контактов. Не используйте корпоративные/личные учётные записи.

  4. Создайте отдельную управляемую форму для каждого урока. Полный код вставляется на уровне модуля; команды и указанные строковые реквизиты создаются вручную.

  5. Рецепты изменения/удаления при ручном запуске реально меняют адресную книгу ОС. Здесь они не исполнялись, runtime-проверка 1С не заявляется.

&НаКлиенте
Перем КлючМоегоКонтакта;
&НаКлиенте
Перем ИмяМоегоКонтакта;

&НаКлиенте
Процедура СоздатьСвойКонтакт(Команда)
    ПроверитьСобственнуюУчебнуюКонфигурацию();
    Если КлючМоегоКонтакта <> Неопределено Тогда
        ВызватьИсключение "Свой контакт уже создан; дубликат запрещён";
    КонецЕсли;
    Если ПодтверждениеУчебногоДействия <> "СОЗДАТЬ МОЙ УЧЕБНЫЙ КОНТАКТ" Тогда
        ВызватьИсключение "Подтвердите создание только в собственном локальном учебном профиле";
    КонецЕсли;
    Менеджер = Новый МенеджерКонтактов;
    Если Не Менеджер.ПоддерживаетсяДобавлениеКонтактов() Тогда
        ВызватьИсключение "Добавление контактов не поддерживается";
    КонецЕсли;
    ЛокальнаяЗапись = Менеджер.ПолучитьЛокальнуюУчетнуюЗаписьКонтактов();
    ИмяМоегоКонтакта = "guide-owned-contact-" + Строка(Новый УникальныйИдентификатор);
    Данные = Новый ДанныеКонтакта;
    Данные.Имя = ИмяМоегоКонтакта;
    Данные.Фамилия = "Учебный";
    Данные.Заметка = "guide-owned-note-created";
    Карточка = Новый ДанныеКонтактаУчетнойЗаписи(Данные, ЛокальнаяЗапись, "");
    ПодтверждениеУчебногоДействия = "";
    КлючМоегоКонтакта = Менеджер.ДобавитьКонтакт(Карточка);
    ПровереннаяКарточка = ПолучитьИПроверитьСвойКонтакт(Менеджер);
    Сообщить(ПровереннаяКарточка.ДанныеКонтакта.Заметка = "guide-owned-note-created");
    Сообщить("Создан только собственный контакт: " + ИмяМоегоКонтакта);
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьЗаметкуСвоегоКонтакта(Команда)
    ПроверитьСобственнуюУчебнуюКонфигурацию();
    Если ПодтверждениеУчебногоДействия <> "ИЗМЕНИТЬ МОЙ УЧЕБНЫЙ КОНТАКТ" Тогда
        ВызватьИсключение "Нужно подтверждение изменения собственного контакта";
    КонецЕсли;
    Менеджер = Новый МенеджерКонтактов;
    Карточка = ПолучитьИПроверитьСвойКонтакт(Менеджер);
    Если Не Менеджер.ПоддерживаетсяИзменениеКонтакта(КлючМоегоКонтакта) Тогда
        ВызватьИсключение "Изменение своего контакта не поддерживается";
    КонецЕсли;
    Карточка.ДанныеКонтакта.Заметка = "guide-owned-note-changed";
    ПодтверждениеУчебногоДействия = "";
    Менеджер.ИзменитьКонтакт(КлючМоегоКонтакта, Карточка);
    ПровереннаяКарточка = ПолучитьИПроверитьСвойКонтакт(Менеджер);
    Сообщить(ПровереннаяКарточка.ДанныеКонтакта.Заметка = "guide-owned-note-changed");
КонецПроцедуры

&НаКлиенте
Процедура УдалитьСвойКонтакт(Команда)
    ПроверитьСобственнуюУчебнуюКонфигурацию();
    Если ПодтверждениеУчебногоДействия <> "УДАЛИТЬ МОЙ УЧЕБНЫЙ КОНТАКТ" Тогда
        ВызватьИсключение "Нужно подтверждение удаления собственного контакта";
    КонецЕсли;
    Менеджер = Новый МенеджерКонтактов;
    ПолучитьИПроверитьСвойКонтакт(Менеджер);
    Если Не Менеджер.ПоддерживаетсяИзменениеКонтакта(КлючМоегоКонтакта) Тогда
        ВызватьИсключение "Удаление собственного контакта не поддерживается";
    КонецЕсли;
    ПодтверждениеУчебногоДействия = "";
    Менеджер.УдалитьКонтакт(КлючМоегоКонтакта);
    КлючМоегоКонтакта = Неопределено;
    ИмяМоегоКонтакта = "";
    Сообщить("Собственный контакт удалён. Вручную проверьте результат в учебной адресной книге");
КонецПроцедуры

&НаКлиенте
Функция ПолучитьИПроверитьСвойКонтакт(Менеджер)
    Если КлючМоегоКонтакта = Неопределено Или ПустаяСтрока(ИмяМоегоКонтакта) Тогда
        ВызватьИсключение "Нет сохранённого ключа собственного добавления";
    КонецЕсли;
    Карточка = Менеджер.ПолучитьКонтакт(КлючМоегоКонтакта);
    Если Карточка.ДанныеКонтакта.Имя <> ИмяМоегоКонтакта
        Или Карточка.ДанныеКонтакта.Фамилия <> "Учебный" Тогда
        ВызватьИсключение "Данные собственного контакта изменились; действие запрещено";
    КонецЕсли;
    ЛокальнаяЗапись = Менеджер.ПолучитьЛокальнуюУчетнуюЗаписьКонтактов();
    Если Карточка.УчетнаяЗапись.Идентификатор <> ЛокальнаяЗапись.Идентификатор
        Или Карточка.УчетнаяЗапись.ИсточникУчетнойЗаписи <> ЛокальнаяЗапись.ИсточникУчетнойЗаписи Тогда
        ВызватьИсключение "Контакт не принадлежит локальной учебной записи";
    КонецЕсли;
    Возврат Карточка;
КонецФункции

&НаСервереБезКонтекста
Процедура ПроверитьСобственнуюУчебнуюКонфигурацию()
КонецПроцедуры

Разбор по шагам

  1. В одной отдельной форме создайте строковый реквизит ПодтверждениеУчебногоДействия и поле ввода. Создайте три команды СоздатьСвойКонтакт, ИзменитьЗаметкуСвоегоКонтакта, УдалитьСвойКонтакт.

  2. Перед каждым действием заново введите точную фразу из обработчика. До записи/изменения/удаления фраза очищается.

  3. ДобавитьКонтакт получает ДанныеКонтактаУчетнойЗаписи и возвращает ЛокальныйКлючКонтакта. Этот конкретный ключ сохраняется в памяти формы; дубликаты запрещены.

  4. Перед изменением карточка читается по сохранённому ключу и сравнивается с собственным уникальным именем, фамилией Учебный и локальной записью.

  5. Меняем только заметку в полученной собственной карточке. ИзменитьКонтакт получает ключ и карточку данных учётной записи; другие поля не заменяются пустым новым контактом.

  6. Удаление получает только ключ собственного добавления после повторных проверок. Код не ищет контакт для удаления по имени и не удаляет все контакты с похожим префиксом.

  7. Не закрывайте форму до удаления своего контакта. Если ключ потерян или исход операции неизвестен, вручную проверьте собственные объекты; не продолжайте автоматическое удаление по поиску.

Как проверить результат

  1. После создания проверка собственной заметки Истина; после изменения снова Истина для изменённой заметки.

  2. Вручную проверьте в учебной адресной книге один вымышленный контакт, заметку и его удаление. Повторное создание при сохранённом ключе запрещено.

  3. Чужое имя/фамилия/учётная запись запрещают автоматические действия. После успешного удаления собственный ключ очищен.

Ожидаемый результат

Показан безопасно ограниченный жизненный цикл собственного контакта с правильными типами данных менеджера.

На что обратить внимание

  1. Это не транзакция базы 1С; откат изменения/удаления контакта ОС автоматически не предусмотрен.

  2. При ошибке после фактического изменения сначала проверьте ОС вручную, а не повторяйте команду вслепую.

  3. Локальная запись и отсутствие телефонов не заменяют проверки синхронизации профиля. Используйте отдельный изолированный профиль.

  4. Пример не выполнялся на настоящем телефоне и не является доказательством разрешений или работы конкретной ОС.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.