Перейти к основному содержимому

Настройка и использование библиотеки «Форум»

Описание библиотеки

Площадка, где пользователи могут общаться на различные темы, задавать вопросы и получать советы. Библиотека «Форум» может как дополнять прикладные решения, так и использоваться самостоятельно.

В библиотеке поддерживаются следующие основные функции:

  • создание и редактирование профиля пользователя;
  • навигация по форуму и просмотр тем;
  • создание новых тем;
  • создание новых сообщений;
  • поиск информации по форуму;
  • управление темами, разделами и сообщениями;
  • реализация работы с пользователями;
  • реализация и доработка прав доступа.

Предварительные требования

«1С:Исполнитель» версии 5.x.

Загрузка библиотеки

По ссылке

Вы можете скачать актуальную версию проекта библиотеки по ссылке.

Из шаблона в панели управления

Для знакомства с основными возможностями библиотеки и концепциями технологии «1С:Исполнитель» вы можете использовать демо-приложение, которое представляет собой пример работы данной библиотеки и ее использования с другими библиотеками.

Данное приложение создано исключительно в демонстрационных целях. Оно не является законченным прикладным решением и не предназначено для автоматизации настоящих бизнес-процессов.

Для запуска демо-приложения вам необходимо создать новый проект из встроенного шаблона, как показано ниже:

  1. Откройте панель управления.

  2. На вкладке Приложения нажмите + Новое приложение.

    Создание нового приложения

  3. В открывшемся окне выберите Из проектаНовый проект.

    Создание нового проекта

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

    Настройка параметров проекта

Когда приложение будет создано, оно появится в общем списке приложений. Для запуска приложения кликните по ссылке в колонке URL. Если вы хотите ознакомиться со структурой и содержимым проекта, нажмите Разработать, чтобы открыть проект в среде разработки.

Встраивание библиотеки в проект приложения

  1. Перейдите к описанию проекта и в свойстве Библиотеки добавьте новые элементы:

    • Форум,
    • РассылкиИУведомления.
  2. Реализуйте контракт сущности УчастникиФорума в справочнике пользователей приложения.

    • Проверьте, что в справочнике есть реквизит Пользователь типа Пользователи.Ссылка? — ссылка на пользователя из панели управления, по которому выполняется авторизация в приложении.
    • Импортируйте пространство имен e1c::Форум::Основное. Для этого в подсистеме, к которой относится справочник, необходимо включить использование следующих модулей:
      • e1c::РассылкиИУведомления::Основное,
      • e1c::Форум::Основное.
    • В группе НастройкиТипов в свойстве Справочник.Объект добавьте элемент УчастникиФорума.Объект.
    • Добавьте реквизит ЭтоАдминистраторФорума с типом Булево.
  3. Реализуйте команды для перехода к форуму.

    • В объекте ФрагментКомандногоИнтерфейса импортируйте пространство имен e1c::Форум::Основное.
    • Добавьте новый элемент вида Вычисляемое выражение и в поле Выражение впишите команду:
      • ОткрытьФорум — открывает форум целиком. Содержит список разделов, самые обсуждаемые и свежие темы, а также функции администрирования разделов и поиска по форуму.
    • Альтернативный вариант — сделайте отдельные команды для перехода к основным интерфейсам:
      • ОткрытьСписокРазделовФорума — начальная страница форума со списком разделов и их настройкой;
      • ОткрытьСамоеОбсуждаемое — список тем за последний месяц, по которым получено больше всего ответов;
      • ОткрытьСвежее — новые темы за последний месяц.
    • Добавьте дополнительные команды:
      • ОткрытьПравилаФорума — правила форума;
      • ОткрытьСписокЗаблокированных — заблокированные участники форума. Рекомендуется отображать только для администраторов.
    • Если вы выбрали альтернативный вариант с отдельными командами, то необходимо добавить команду поиска по форуму, например, в группе КомандныйИнтерфейсПанелиДействий компонента интерфейса СтандартноеКлиентскоеПриложениеСРазделами добавьте команду ОткрытьФормуПоиска.
  4. Добавьте в форму объекта справочника пользователей приложения компонент ПрофильУчастникаФорума, который добавляет в карточку пользователя необходимые настройки по форуму.

    Добавление кода заполнения компонента в обработчике «ПослеЧтения»
    @Обработчик
    метод ПослеЧтения()
    // ...
    Компоненты.ПрофильУчастникаФорума.ЗаполнитьПрофильУчастникаФорума(Объект.Ссылка)
    // ...
    ;

Настройка системы контроля доступа

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

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

Для управления правами по группам пользователей необходимо:

  1. Реализовать контракт сущности ГруппыПользователейФорума.
  2. Реализовать контракт сервиса УправлениеГруппамиПользователей.

Контракт сервиса УправлениеГруппамиПользователей содержит метод ПолучитьГруппыПользователей(), который должен возвращать соответствие пользователей их группам.

Чтобы включить пользователя в группу, воспользуйтесь методом Основное::УправлениеРазрешениями::ПользователиСервер.ПересчитатьКлючиДоступаУчастниковФорума([УчастникФорума]) для этого пользователя.

При изменении способа управления правами пересчет ключей доступа необходимо выполнить для всех пользователей форума: Основное::УправлениеРазрешениями::ПользователиСервер.ПересчитатьКлючиДоступаУчастниковФорума().

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

  1. В модуле проекта добавьте код инициализации библиотеки:

    импорт e1c::РассылкиИУведомления::Основное

    @ОбновлениеПроекта(Ид = "Инициализация", Номер = 1)
    метод ПриОбновлении()
    e1c::РассылкиИУведомления::Основное::РассылкиИУведомленияПИ.Инициализировать()
    ;
  2. В справочнике пользователей приложения реализуйте контракты ПолучателиСообщений, ПолучателиСообщенийПИ и ПроверитьНаличиеКлючаДоступаКРассылкам:

    • Импортируйте пространство имен e1c::РассылкиИУведомления::Основное.

    • В группе НастройкиТипов в свойстве Справочник добавьте элементы ПолучателиСообщенийПИ и ПроверитьНаличиеКлючаДоступаКРассылкам, в свойстве Справочник.Объект добавьте элемент ПолучателиСообщений.Объект.

    • Добавьте реквизит АдресПочты, если реквизит, в котором хранится электронная почта пользователя, еще не задан.

    • В модуле менеджера справочника добавьте импорт библиотеки рассылок:

      импорт e1c::РассылкиИУведомления::Основное
    • Далее реализуйте методы, указав в них имя справочника и реквизита, содержащего адрес почты:

      ОписанияПолучателейСообщений
      @Реализация @Глобально
      метод ОписанияПолучателейСообщений(Получатели: Массив<ПолучателиСообщений.Ссылка>, Канал: КаналыТранспортаСообщений.Ссылка, ТипКонтактнойИнформации: ТипыКонтактнойИнформации, ГруппаПодписок: ГруппыПодписок.Ссылка?): Соответствие<ПолучателиСообщений.Ссылка, ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения>
      выбор ТипКонтактнойИнформации
      когда ТипыКонтактнойИнформации.АдресЭлектроннойПочты

      знч Запрос = Запрос{
      ВЫБРАТЬ
      Ссылка,
      <АдресПочты>,
      Наименование
      ИЗ
      <ПользователиПриложения>
      ГДЕ
      Ссылка В (%Получатели)
      }

      возврат Запрос
      .Выполнить()
      .ВСоответствие<ПолучателиСообщений.Ссылка, ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения>((Элемент) -> Элемент.Ссылка,
      (Элемент) -> новый ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения(Элемент.Наименование,
      Элемент.АдресПочты))
      ;
      возврат {:}
      ;
      ТипПолучателяСообщений
      @Реализация @Глобально
      метод ТипПолучателяСообщений(): Тип<ПолучателиСообщений.Ссылка>
      возврат Тип<ПользователиПриложения.Ссылка>
      ;
      ПроверитьНаличиеКлючейДоступаКРассылкам
      @Глобально @Реализация
      метод ПроверитьНаличиеКлючейДоступаКРассылкам(Ключи: ЧитаемыйМассив<КлючДоступаКРассылкам.Объект>, Пользователи: ЧитаемыйМассив<Пользователи.Объект>): ЧитаемоеСоответствие<КлючДоступаКРассылкам.Объект, ЧитаемаяКоллекция<Пользователи.Объект|Пользователи.Ссылка>>
      знч Результат = <КлючДоступаКРассылкам.Объект, Массив<Пользователи.Ссылка>>{:}

      знч ПользователиДляПроверки = Пользователи.Преобразовать(Пользователь -> Пользователь.Ссылка)

      знч Запрос = Запрос{
      ВЫБРАТЬ
      Ссылка
      ИЗ
      Пользователи
      ГДЕ
      Ссылка В (%ПользователиДляПроверки)
      и Администратор
      }

      знч Администраторы: Массив<Пользователи.Ссылка>
      для Строка из Запрос.Выполнить()
      Администраторы.Добавить(Строка.Ссылка)
      ;

      для Ключ из Ключи
      Результат.Вставить(Ключ, Администраторы)
      ;

      возврат Результат
      ;
  3. Реализуйте команды для перехода к настройкам рассылок:

    • В объекте ФрагментКомандногоИнтерфейса импортируйте пространство имен e1c::РассылкиИУведомления::Основное.
    • Добавьте новый элемент вида Вычисляемое выражение и в поле Выражение впишите команду НастройкиИАдминистрирование.

См. также