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