ДанныеКонтактаУчетнойЗаписи.УчетнаяЗапись

Свойства · Account

Тип: УчетнаяЗаписьКонтактов. Содержит учетную запись, к которой привязан контакт.

Полное описание, параметры и ограничения

ДанныеКонтактаУчетнойЗаписи.УчетнаяЗапись (AccountContactData.Account)

ДанныеКонтактаУчетнойЗаписи (AccountContactData)

УчетнаяЗапись (Account)

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

Использование:
Чтение и запись.
Описание:
Тип: УчетнаяЗаписьКонтактов.
Содержит учетную запись, к которой привязан контакт.
Доступность:

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

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

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

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

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

Связать свой черновик контакта с локальной записью без добавления

Конструктор карточки связывает данные и настоящую запись ОС, но сам не создаёт контакт в адресной книге.

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

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

Подготовка

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

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

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

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

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

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

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

  1. Создайте команду ВыполнитьПример. Настоящую локальную учётную запись получаем от менеджера; конструктор УчетнаяЗаписьКонтактов не выдумываем.

  2. ДанныеКонтакта содержат поля человека, а ДанныеКонтактаУчетнойЗаписи — данные, запись и глобальный ключ. Это разные объекты.

  3. Третий аргумент карточки — строка глобального ключа. Для своего нового черновика он пуст, а не случайный UUID вместо ключа внешнего сервиса.

  4. ДобавитьКонтакт не вызывается. ЛокальныйКлючКонтакта пока отсутствует: он появляется как результат реального добавления, не как имя человека.

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

  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С» и не аффилирован с ней.