Найти только собственный учебный календарь по точному имени

Учебные задачи

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

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

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

Подготовка

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

  2. Первый урок работает только с данными в памяти. Для обращения к календарям вручную разрешите учебному приложению доступ в настройках ОС; доступность API не заменяет разрешение.

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

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

  5. Никакой из этих рецептов в настоящем мобильном клиенте не запускался автоматически. Проверяйте разрешения, фактические типы и контрольные результаты на своём учебном устройстве.

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

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

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

  2. НайтиКалендари со строкой ищет по имени. Ноль результатов — нормальная ситуация; больше одного — неоднозначность, а не повод использовать первый.

  3. ЛокальныйКлючКалендаря — объект, полученный от менеджера. Не собираем его через Новый и не заменяем строкой имени.

  4. ПолучитьКалендарь возвращает ДанныеКалендаряУчетнойЗаписи: вложенные ДанныеКалендаря отдельно от УчетнаяЗапись и глобального ключа.

  5. Две проверки сравнивают идентификатор и источник с локальной записью. Чужие значения не выводятся, исходные данные ОС не выгружаются.

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

  1. Если своего календаря нет, выводится сообщение и нет создания. При однозначном локальном календаре шесть логических проверок дают Истина.

  2. Никакие события не прочитаны и не изменены. Возможности изменения выводятся как фактические значения, не обязательные Истина.

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

Показано получение настоящего локального ключа и вложенных данных одного выбранного календаря.

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

  1. Префикс имени — соглашение учебного примера, не доказательство собственности и не механизм безопасности.

  2. Глобальный ключ и локальный ключ различаются; перенос локального ключа на другое устройство не предполагается.

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

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

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

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

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