Настройка и использование библиотеки «Форум»
Описание библиотеки
Площадка, где пользователи могут общаться на различные темы, задавать вопросы и получать советы. Библиотека «Форум» может как дополнять прикладные решения, так и использоваться самостоятельно.
В библиотеке поддерживаются следующие основные функции:
- создание и редактирование профиля пользователя;
- навигация по форуму и просмотр тем;
- создание новых тем;
- создание новых сообщений;
- поиск информации по форуму;
- управление темами, разделами и сообщениями;
- реализация работы с пользователями;
- реализация и доработка прав доступа.
Предварительные требования
«1С:Шина» версии 5.x
.
Загрузка библиотеки
По ссылке
Вы можете скачать актуальную версию проекта библиотеки по ссылке.
Из шаблона в панели управления
Для знакомства с основными возможностями библиотеки и концепциями технологии «1С:Шина» вы можете использовать демо-приложение, которое представляет собой пример работы данной библиотеки и ее использования с другими библиотеками.
Данное приложение создано исключительно в демонстрационных целях. Оно не является законченным прикладным решением и не предназначено для автоматизации настоящих бизнес-процессов.
Для запуска демо-приложения вам необходимо создать новый проект из встроенного шаблона, как показано ниже:
-
Откройте панель управления.
-
На вкладке Приложения нажмите + Новое приложение.
-
В открывшемся окне выберите Из проекта ⟶ Новый проект.
-
В выпадающем меню Шаблон проекта выберите пункт Проект с библиотеками. Заполните оставшиеся поля: укажите представление, имя и версию проекта, задайте имя приложения. Включите режим разработки для создаваемого приложения, выберите тип СУБД и нажмите Создать.
Когда приложение будет создано, оно появится в общем списке приложений. Для запуска приложения кликните по ссылке в колонке URL. Если вы хотите ознакомиться со структурой и содержимым проекта, нажмите Разработать, чтобы открыть проект в среде разработки.
Встраивание библиотеки в проект приложения
-
Перейдите к описанию проекта и в свойстве Библиотеки добавьте новые элементы:
- Форум,
- РассылкиИУведомления.
-
Реализуйте контракт сущности УчастникиФорума в справочнике пользователей приложения.
- Проверьте, что в справочнике есть реквизит Пользователь типа
Пользователи.Ссылка?
— ссылка на пользователя из панели управления, по которому выполняется авторизация в приложении. - Импортируйте пространство имен e1c::Форум::Основное. Для этого в подсистеме, к которой относится справочник, необходимо включить использование следующих модулей:
- e1c::РассылкиИУведомления::Основное,
- e1c::Форум::Основное.
- В группе НастройкиТипов в свойстве Справочник.Объект добавьте элемент УчастникиФорума.Объект.
- Добавьте реквизит ЭтоАдминистраторФорума с типом
Булево
.
- Проверьте, что в справочнике есть реквизит Пользователь типа
-
Реализуйте команды для перехода к форуму.
- В объекте ФрагментКомандногоИнтерфейса импортируйте пространство имен e1c::Форум::Основное.
- Добавьте новый элемент вида Вычисляемое выражение и в поле Выражение впишите команду:
- ОткрытьФорум — открывает форум целиком. Содержит список разделов, самые обсуждаемые и свежие темы, а также функции администрирования разделов и поиска по форуму.
- Альтернативный вариант — сделайте отдельные команды для перехода к основным интерфейсам:
- ОткрытьСписокРазделовФорума — начальная страница форума со списком разделов и их настройкой;
- ОткрытьСамоеОбсуждаемое — список тем за последний месяц, по которым получено больше всего ответов;
- ОткрытьСвежее — новые темы за последний месяц.
- Добавьте дополнительные команды:
- ОткрытьПравилаФорума — правила форума;
- ОткрытьСписокЗаблокированных — заблокированные участники форума. Рекомендуется отображать только для администраторов.
- Если вы выбрали альтернативный вариант с отдельными командами, то необходимо добавить команду поиска по форуму, например, в группе КомандныйИнтерфейсПанелиДействий компонента интерфейса
СтандартноеКлиентскоеПриложениеСРазделами
добавьте команду ОткрытьФормуПоиска.
-
Добавьте в форму объекта справочника пользователей приложения компонент ПрофильУчастникаФорума, который добавляет в карточку пользователя необходимые настройки по форуму.
Добавление кода заполнения компонента в обработчике «ПослеЧтения»@Обработчик
метод ПослеЧтения()
// ...
Компоненты.ПрофильУчастникаФорума.ЗаполнитьПрофильУчастникаФорума(Объект.Ссылка)
// ...
;
Настройка системы контроля доступа
При встраивании библиотеки можно выбрать один из двух способов управления правами пользователей на разделы, темы и сообщения: по группам пользователей и без групп.
По умолчанию незаблокированные пользователи имеют доступ на чтение и создание тем и сообщений во всех разделах форума без исключения.
Для управления правами по группам пользователей необходимо:
- Реализовать контракт сущности ГруппыПользователейФорума.
- Реализовать контракт сервиса УправлениеГруппамиПользователей.
Контракт сервиса УправлениеГруппамиПользователей содержит метод ПолучитьГруппыПользователей()
, который должен возвращать соответствие пользователей их группам.
Чтобы включить пользователя в группу, воспользуйтесь методом Основное::УправлениеРазрешениями::ПользователиСервер.ПересчитатьКлючиДоступаУчастниковФорума([УчастникФорума])
для этого пользователя.
При изменении способа управления правами пересчет ключей доступа необходимо выполнить для всех пользователей форума: Основное::УправлениеРазрешениями::ПользователиСервер.ПересчитатьКлючиДоступаУчастниковФорума()
.
Настройка рассылок и уведомлений
-
В модуле проекта добавьте код инициализации библиотеки:
импорт e1c::РассылкиИУведомления::Основное
@ОбновлениеПроекта(Ид = "Инициализация", Номер = 1)
метод ПриОбновлении()
e1c::РассылкиИУведомления::Основное::РассылкиИУведомленияПИ.Инициализировать()
; -
В справочнике пользователей приложения реализуйте контракты ПолучателиСообщений, ПолучателиСообщенийПИ и ПроверитьНаличиеКлючаДоступаКРассылкам:
-
Импортируйте пространство имен e1c::РассылкиИУведомления::Основное.
-
В группе НастройкиТипов в свойстве Справочник добавьте элементы ПолучателиСообщенийПИ и ПроверитьНаличиеКлючаДоступаКРассылкам, в свойстве Справочник.Объект добавьте элемент ПолучателиСообщений.Объект.
-
Добавьте реквизит АдресПочты, если реквизит, в котором хранится электронная почта пользователя, еще не задан.
-
В модуле менеджера справочника добавьте импорт библиотеки рассылок:
импорт e1c::РассылкиИУведомления::Основное
-
Далее реализуйте методы, указав в них имя справочника и реквизита, содержащего адрес почты:
ОписанияПолучателейСообщений@Реализация @Глобально
метод ОписанияПолучателейСообщений(Получатели: Массив<ПолучателиСообщений.Ссылка>, Канал: КаналыТранспортаСообщений.Ссылка, ТипКонтактнойИнформации: ТипыКонтактнойИнформации, ГруппаПодписок: ГруппыПодписок.Ссылка?): Соответствие<ПолучателиСообщений.Ссылка, ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения>
выбор ТипКонтактнойИнформации
когда ТипыКонтактнойИнформации.АдресЭлектроннойПочты
знч Запрос = Запрос{
ВЫБРАТЬ
Ссылка,
<АдресПочты>,
Наименование
ИЗ
<ПользователиПриложения>
ГДЕ
Ссылка В (%Получатели)
}
возврат Запрос
.Выполнить()
.ВСоответствие<ПолучателиСообщений.Ссылка, ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения>((Элемент) -> Элемент.Ссылка,
(Элемент) -> новый ПолучателиСообщенийПИ.ОписаниеПолучателяСообщения(Элемент.Наименование,
Элемент.АдресПочты))
;
возврат {:}
;ТипПолучателяСообщений@Реализация @Глобально
метод ТипПолучателяСообщений(): Тип<ПолучателиСообщений.Ссылка>
возврат Тип<ПользователиПриложения.Ссылка>
;ПроверитьНаличиеКлючейДоступаКРассылкам@Глобально @Реализация
метод ПроверитьНаличиеКлючейДоступаКРассылкам(Ключи: ЧитаемыйМассив<КлючДоступаКРассылкам.Объект>, Пользователи: ЧитаемыйМассив<Пользователи.Объект>): ЧитаемоеСоответствие<КлючДоступаКРассылкам.Объект, ЧитаемаяКоллекция<Пользователи.Объект|Пользователи.Ссылка>>
знч Результат = <КлючДоступаКРассылкам.Объект, Массив<Пользователи.Ссылка>>{:}
знч ПользователиДляПроверки = Пользователи.Преобразовать(Пользователь -> Пользователь.Ссылка)
знч Запрос = Запрос{
ВЫБРАТЬ
Ссылка
ИЗ
Пользователи
ГДЕ
Ссылка В (%ПользователиДляПроверки)
и Администратор
}
знч Администраторы: Массив<Пользователи.Ссылка>
для Строка из Запрос.Выполнить()
Администраторы.Добавить(Строка.Ссылка)
;
для Ключ из Ключи
Результат.Вставить(Ключ, Администраторы)
;
возврат Результат
;
-
-
Реализуйте команды для перехода к настройкам рассылок:
- В объекте ФрагментКомандногоИнтерфейса импортируйте пространство имен e1c::РассылкиИУведомления::Основное.
- Добавьте новый элемент вида Вычисляемое выражение и в поле Выражение впишите команду НастройкиИАдминистрирование.