29.06.2020

Добавить свое действие в универсальные списки битрикс24. Универсальные списки. Создание интерфейса списков


Мелехова Светлана

25.08.2014


Прикатило мне очередное интересное задание от насяльникама. Необходимо написать инструмент, позволяющий копировать универсальные списки для социальных групп (без контента, только схему). А также и бизнес-процессы принадлежащие этому списку.
Хто здесь? 0_0
Прикинуться куском обоев не получилось, поэтому пришлось делать. И писать статью, иначе я всё забуду.

Сегодня на обсуждении:

    1. копирование универсальных списков для социальных групп
    2. копирование бизнес-процессов этих списков
Обсуждаемый инструмент можно найти в конце статьи. Правда, вы сами должны понимать, что за сотворённое вами с его помощью я ответственности не несу =)

Далее:
  • БП - бизнес-процесс
  • УС - универсальный список (в рамках статьи подразумеваются УС для социальных групп)
  • ИБ - инфоблок
  • КП - корпоративный портал
  • СГ - социальная группа
Что такое УС?
Во-первых, чтобы понять что именно от меня хотят, мне понадобилось некоторое время. КП вообще для меня пока такие дебри =)
Дабы показать работу мысли, буду описывать всё как было.

Сначала выпрашиваем у админа тестовый адресочек и ставим там КП с наполнением.
Потом пытаемся узнать, что такое УС. Потыкав админку, я поняла, что это тупо инфоблок и что работать с ним можно как с инфоблоком определённого типа. На копирование БП пока забиваем, приоритет был поставлен на списки.
На тестовой странице получаем список всех ИБ, понимаем что тип УС для социальных групп - это lists_socnet . Заодно замечаем присутствие поля SOCNET_GROUP_ID , значение которого равно айдишке СГ; логично, правда?

Пробую создать для определённой СГ инфоблок стандартной привычной нам функцией CIBlock::Add(). Получаю созданный УС, который показывается в паблике СГ на редактирование. А уж создание свойств ручками - это потом, уже непосредственно в инструменте.

Окрылённая успехом, начинаю создавать сам инструмент. Как по-человечески работать с формами я уже не помню, поэтому всё на аджаксе.

Планирование шагов инструмента

Первый шаг - получение списка СГ. Из них пользователь выбирает ту группу, из которой надо будет скопировать УС. Делается это функцией CSocNetGroup::GetList() модуля socialnetwork.

Второй шаг - получение УС для указанной на первом шаге группы. Делается это стандартной бля инфоблоков функцией с настроенным фильтром.
CIBlock::GetList(false, array("IBLOCK_TYPE_ID" => "lists_socnet", "SOCNET_GROUP_ID" => $chosen_id));

На третьем шаге опять показываем список СГ, только с возможностью множественного выбора. Пользователь отмечает те группы, куда надо склонировать указанный на втором шаге УС.

Дальнейшая стратегия вполне логична:

    1. получаем список полей и свойств УС
    2. для каждой указанной на третьем шаге СГ создаём инфоблок-УС
    3. для каждого созданного УС создаём такие же свойства как у исходного списка с помощью обычного для инфоблоков класса работы со свойствами CIBlockProperty
    4. на каждом шаге логгируем действия, чтобы потом красиво показать последовательность действий =)
CList
Реализуем, запускаем, смотрим в админку - все красиво создалось, и радостно потираем лапки. Теперь лезем в публичку и понимаем, что свойства для УС там не показываются.

Начинаю археологические раскопки. Находится класс CList с кучей детишек. Матерюсь изысканными ругательствами, смотрю как происходит работа со списками.
А принципиально происходит то же самое, что и при работе с инфоблоками, только со своей надстройкой, прописывающей свои финтифлюшки в базу. Обсуждать зачем это сделано я сейчас не буду, хотя очень интересно. На мои жалобы по этому поводу коллега Максим сказал: "видимо, это сделано для решения неочевидных нам задач" . На что получил ответ, что в битриксе эту фразу можно применить практически к любому решению =)

Итого после разбирательств меняю код пункта три из стратегии: для создания свойств использую CList::AddField() .
Кстати, для получения значений свойства типа листинг использую обычную CIBlockProperty::GetPropertyEnum() . Так как у меня не было задачи обрабатывать что-то кроме строк и листинга, то остальные типы специально я не обрабатываю (такие как файл или картинка; пример обработки можно найти в коде детишек класса CList , где-то я там это видела).

На этот раз в публичке свойства появляются, и мы переходим к решению задачи копирования БП, привязанных к УС.

Копирование бизнес-процессов
Первым делом гугление приводит меня к теме Копирование бизнес-процессов полностью и отдельных элементов. Тема с экспортом мне не нравится, мудрёно, да и для сотни УС делать экспорт ручками грустно, а программно - это разбираться ещё пару дней =) Подсказка куда двигаться честным способом: есть CBPWorkflowTemplateLoader::GetList() ,но разбираться очень не хотелось.

Поэтому идём "опасным" способом из темы - непосредственным тыканием базы данных. Да, можете меня расстреливать, но я была ограничена по времени исполнения задачи, поэтому попёрла напролом. Да и задача не самая стандартная.

Создаём ручками БП и смотрим что изменилось в таблице b_bp_workflow_template: добавилась строка, где поле ENTITY установлено в CIBlockDocument, а поле DOCUMENT_TYPE имеет значение iblock_#ID#, где #ID# - айдишка УС, где создавался БП.

Возвращаемся к инструменту копирования. На третьем шаге добавляем чекбокс "копировать также БП списка".

К стратегии добавляем пункты

    1. выясняем какие БП привязаны к УС
    2. копируем строку в таблице, переназначая DOCUMENT_TYPE для свежесозданного УС
В итоге получили инструмент-франкенштейн. Работает =)

На данный момент мы проводим внедрение Битрикс24 одному крупному клиенту. И последнюю неделю мы занимаемся тем, что внедряем в жизнь предприятия учет различных документов с применением универсальных списков в Битрикс24.

Хочется рассказать поподробнее о таком замечательном инструменте как универсальные списки.

Для того, чтобы было максимально понятно, что они из себя представляют скажу, что данный клиент учитывал все эти моменты до Битрикс24 в MS Excel. Все примерно понимают функционал Excel, если рассматривать его не для вычисления каких-то сложных формул, а как журнал регистраций. Часть информации заполняется как текстовая строка (пиши что хочешь), часть рассчитываться как счетчик (номер по порядку), что-то выбирается из заранее подготовленного списка. Весь этот функционал excel присутствует и в универсальных списках Битрикс24.

Важно подметить, что число списков не ограничено, один вы можете предназначить для договоров, другой для выданных сим-карт сотрудникам для корпоративной связи, третий для реестра материальных ценностей, которые числятся в вашем офисе (например, столы, стулья, компьютеры и т.д).

Один из списков нашего клиента мы посвятили учету договоров с контрагентами.

Итак, универсальный список представляет собой перечень элементов, каждый из которых состоит из полей. Проще говоря, каждый элемент — это договор (в случае нашего клиента), а поля этого элемента — это важная информация о договоре, его номер, наименование контрагента, с которым заключен этот договор, сумма, ответственные лица и т.д. Конкретно у этого клиента реестр договоров состоит из таких полей:

  • № договора (текстовое поле, в которое вносится номер договора, присвоенный ему при создании);
  • дата договора (при редактировании этого поля раскрывается календарь, в котором вы можете выбрать нужную дату);
  • префикс договора (префикс договора присваивается в зависимости от того, на какой продукт заключается договор, и при редактировании предлагается выбрать его из списка префиксов);
  • № доп. соглашения (при редактировании вводится число);
  • скан. копия договора (прикрепляется файл в любом формате, содержащий копию договора на бумажном носителе);
  • Компания (при редактировании предлагается выбрать компанию из тех, которые уже имеются в CRM системе, либо добавить новую компанию, а при просмотре появляется ссылка на карточку компании в CRM).

Это далеко не полный список полей, которые применяются в данном реестре договоров. Есть и сотрудники, которые каким-то образом касаются этого договора, их необходимо выбирать из списка сотрудников портала Битрикс24. Поле «Кем создано» заполняется автоматически при создании нового элемента.

На рисунке выше вы видите реестр договоров нашего клиента. Все поля, которые нам важно видеть в таблице мы выводим через специальное меню. Это позволяет оперативно получать нужную нам информацию о договорах, которые мы заключили, фильтровать, получая те договора, которые интересуют сейчас и, если информации из таблицы нам будет не достаточно, мы можем зайти в элемент и получить ее там.

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


Подытоживая хочется сказать, что общее количество таких списков у нашего клиента составило 10 штук. В них он планирует учесть все необходимые для бизнеса моменты. Они всегда будут под рукой у тех специалистов, которым нужна эта информация. Это позволит полностью отказаться от excel, который обладает недостатками для организации такой работы. Доступ к файлу excel (он доступен только по локальной сети, он доступен тем, кому возможно этот доступ не нужен, а если наложить пароль на файл, его необходимо помнить, в противном случае все данные будут потеряны), поиск файла (если все вести в excel, со временем файлов становится очень много и какой именно файл нужен при той или иной ситуации иногда понять бывает не просто), файл легко удалить. Всех этих недостатков лишены универсальные списки в Битрикс24.

После внедрения этого инструмента в работу нашего клиента, мы решили провести опрос среди сотрудников этого предприятия. И встретили неподдельные положительные эмоции. Специалисты, которым приходилось по роду деятельности работать в списках, дали только положительные отзывы, отмечая удобство доступа, удобство использования. Один из самых популярных моментов оказался тот, что информация о договоре доступна не только из самого списка, но и из карточки контрагента всегда можно ознакомиться со списком договоров, которые заключены с ним.

Универсальные списки – модуль Битрикс24, позволяющий представлять информацию в виде структурированных списков. При этом нет необходимости заходить в админпанель, чтоб создать свой интерфейс или настроить внешний вид списка. Набор удобных визуальных инструментов Битрикс24 списки позволяет создавать реестры, справочники или перечни и заполнять их информацией.

Модуль «Универсальные списки» - это:

Возможность работы со структурированными данными и их хранение;

Создание произвольных хранилищ, с любой иерархией;
Удобная и эффективная фильтрация;
Возможность коллективного редактирования;
Установка прав доступа с определенными ограничениями и без них;
Возможность использования для перечня вопросов, справочников, библиотек, хранилищ файлов, архивов и т.д.;

Для создания списков необходимо иметь права администратора. Все пользователи Битрикс24 вашей компании имеют доступ к универсальным спискам, когда они находятся в разделе «Компания». Можно расположить их в рабочей группе – тогда пользоваться ими будут только члены группы, а создавать их – только владельцы групп. Чтобы пользователи могли просматривать или изменять список, нужно определить их права доступа в закладке «Доступ».

Создание списка

Для создания списка зайдите на контекстную панель страницы «Списки» и нажмите кнопку создания нового. Откроется форма «Новый список» с настройками, правами доступа и закладкой «Подписи». Заполните все обязательные поля. При необходимости можно настроить поддержку бизнес-процессов – в том случае, если список требует использования бизнес-процессов – установите флажок.

Закладка «Подписи» очень облегчает работу сотрудникам – например, если создается список арендаторов, то вместо «элемент» будет автоматически указываться «арендатор», вместо «раздел» - «группа арендаторов».

Обратите особое внимание на закладку «Доступ» - при отсутствии прав доступа к определенному списку пользователи не будут видеть на странице списков. Есть возможность отказать в доступе ко всему списку или отдельным его элементам, дать сотруднику право чтения, просмотра в админпанели, добавления, изменения либо установить полный доступ к списку. Кроме того, в разделе есть кнопка «Добавить», позволяющая изменять уже установленные права доступа.

Битрикс24 Универсальные списки - это возможность структурировано представить любую информацию. Привязка списков к бизнес-процессам позволяет автоматизировать различные потребности вашей компании.

Списки - удобный инструмент хранения информации с собственной структурой и полями. Кроме того, списки можно автоматически обрабатывать с помощью бизнес-процессов.

Создавать списки может только администратор.


Перейдите на страницу Списки и нажмите Создать новый .

Настройки


Во вкладке Настройки укажите название списка и его описание.

Введите значение сортировки. Чем ниже она будет, тем выше располагается список среди остальных. Добавьте картинку для вашего списка.

Если планируется использовать бизнес-процессы в работе списков, то активируйте опцию Включить поддержку бизнес-процессов .

Подписи


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

Доступ


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

  • Нет доступа - список даже не будет виден.
  • Чтение - даёт возможность только просматривать список.
  • Просмотр в панели - просмотр элементов списка.
  • Добавление - можно добавлять элементы в список.
  • Добавление в панели - можно добавлять элементы в список и просматривать их.
  • Изменение - допускается добавлять элементы и изменять список, а также запускать бизнес-процессы по элементам списка.
  • Изменение с ограничениями - запрещено добавлять и удалять разделы элементов. В остальном все те же действия что и для прав на Изменение.
  • Полный доступ - устанавливается полный уровень прав доступа к списку.