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