ДанныеСобытияКалендаря.Организатор

Свойства · Organizer

Тип: Строка. Содержит имя организатора события.

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

ДанныеСобытияКалендаря.Организатор (CalendarEventData.Organizer)

ДанныеСобытияКалендаря (CalendarEventData)

Организатор (Organizer)

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

Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит имя организатора события.
Доступность:

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

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

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

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

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

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

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

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

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

Подготовка

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

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

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

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

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

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Календарь = Новый ДанныеКалендаря("Учебное чтение");
    Календарь.Цвет = Новый Цвет(40, 90, 180);
    НачалоUTC = Дата(2026, 10, 5, 10, 0, 0);
    КонецUTC = Дата(2026, 10, 5, 10, 30, 0);
    Событие = Новый ДанныеСобытияКалендаря(НачалоUTC, КонецUTC);
    Событие.Тема = "Учебное чтение Книги";
    Событие.Описание = "Только собственный черновик, без приглашений";
    Событие.Место = "Учебный стол";
    Событие.ВесьДень = Ложь;
    Событие.Организатор = "";
    Событие.Участники = Новый Массив;
    Событие.ЧасовойПояс = "UTC";
    Событие.Повторение = ПовторениеСобытияКалендаря.ОдинРаз;
    Сообщить(Календарь.Имя = "Учебное чтение");
    Сообщить(ТипЗнч(Календарь.Цвет) = Тип("Цвет"));
    Сообщить(Событие.Начало = НачалоUTC);
    Сообщить(Событие.Конец = КонецUTC);
    Сообщить(Событие.Конец - Событие.Начало = 1800);
    Сообщить(Не Событие.ВесьДень);
    Сообщить(Событие.Тема = "Учебное чтение Книги");
    Сообщить(Событие.Место = "Учебный стол");
    Сообщить(Не ПустаяСтрока(Событие.Описание));
    Сообщить(ПустаяСтрока(Событие.Организатор));
    Сообщить(Событие.Участники.Количество() = 0);
    Сообщить(Событие.ЧасовойПояс = "UTC");
    Сообщить(Событие.Повторение = ПовторениеСобытияКалендаря.ОдинРаз);
    Сообщить("Тип исходных данных календаря: " + Строка(ТипЗнч(Календарь.ИсходныеДанные)));
    Сообщить("Тип исходных данных события: " + Строка(ТипЗнч(Событие.ИсходныеДанные)));
    Напоминания = Событие.Напоминания;
    Если ТипЗнч(Напоминания) = Тип("Массив") Тогда
        Сообщить("Исходных напоминаний: " + Строка(Напоминания.Количество()));
    Иначе
        Сообщить("Тип напоминаний требует отдельной проверки: " + Строка(ТипЗнч(Напоминания)));
    КонецЕсли;
КонецПроцедуры

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

  1. Создайте команду ВыполнитьПример. Конструкторы создают описания в памяти, а не календарь и событие операционной системы.

  2. Начало и Конец данных события используют универсальное время. Разность дат 1С — секунды: 30 минут равно 1800, не 30.

  3. ЧасовойПояс — отдельное строковое описание зоны. Установка UTC не преобразует уже переданные даты; значения дат в коде изначально трактуются как UTC.

  4. ОдинРаз задаёт отсутствие повторения. ВесьДень = Ложь означает событие с конкретным временем; это не ежедневный интервал и не весь день.

  5. Участники пусты, Организатор пуст. Никаких приглашений не отправляется: менеджер добавления вообще не вызывается.

  6. В установленной справке Напоминания объявлены Число, но описание говорит о массиве минут. Код читает фактический тип и ничего в напоминания не записывает.

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

  1. Тринадцать логических проверок дают Истина; длительность собственного черновика 1800 секунд.

  2. На устройстве не появилось события: ДобавитьСобытие не вызывался. Отдельно видны фактические типы исходных данных и напоминаний.

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

Готов понятный черновик занятия с явными датами UTC без обращения к календарям ОС.

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

  1. Не используйте ТекущаяДата как UTC без явного преобразования и согласования зоны.

  2. Не присваивайте Напоминания число или массив наугад из-за противоречия справки.

  3. Фиксированная учебная дата может быть в прошлом; это не планировщик актуальных напоминаний.

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

Добавить своё занятие, перенести на час и удалить

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

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

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

Подготовка

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

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

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

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

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

&НаКлиенте
Перем КлючМоегоСобытия;
&НаКлиенте
Перем ТемаМоегоСобытия;

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Используйте новую отдельную форму. Модуль полностью включает команды создания, переименования и удаления пустого своего календаря из предыдущего урока.

  2. Добавьте строковый реквизит ПодтверждениеУчебногоДействия. Создайте команды СоздатьСвойКалендарь, ПереименоватьСвойКалендарь, УдалитьСвойПустойКалендарь, СоздатьСвоёСобытие, ПеренестиСвоёСобытиеНаЧас, ПрочитатьСвоёСобытие, УдалитьСвоёСобытие.

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

  4. Событие — одно занятие на 30 минут в UTC. Участники и организатор пусты; напоминания очищаются только после подтверждения фактического типа Массив. При другом типе реальное добавление запрещено.

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

  6. Перенос прибавляет 3600 секунд к обеим датам; длительность сохраняется 1800. ИзменитьСобытие получает локальный ключ события, не карточку календаря.

  7. ПрочитатьСвоёСобытие не выводит глобальные ключи и личные данные. Конструктор ДанныеСобытияКалендаряУчетнойЗаписи не вызывается: в установленной справке его аргумент ошибочно указан ДанныеКалендаря, поэтому карточку получаем штатным менеджером.

  8. Удаляйте сначала собственное событие по сохранённому ключу с отдельной фразой. Только потом удаляйте собственный пустой календарь: наличие любого оставшегося события запрещает удаление календаря.

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

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

  2. При фактическом типе напоминаний не Массив событие не добавлено и показана причина. Это честный отказ, а не выдуманная поддержка API.

  3. Вручную проверьте в ОС одно собственное занятие, перенос, затем удаление. После очистки собственный календарь может быть удалён только если пуст.

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

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

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

  1. Действия при ручном запуске реально меняют календарь устройства. Они не выполнялись инструментами и не доказывают синхронизацию с внешними сервисами.

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

  3. Ни отсутствие участников, ни префикс имени не являются запретом синхронизации ОС: отдельный локальный несинхронизируемый учебный профиль обязателен.

  4. Не сравнивайте ключи по строковому представлению и не ищите чужие события для демонстрации удаления.

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

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

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

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

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