Примеры работы со списком битрикс. Создание списка




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

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 для свежесозданного УС
В итоге получили инструмент-франкенштейн. Работает =)

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

https://сайт/moduli-cms-1s-bitriks/universal_lists/"

Модуль «Универсальные списки»
Гриды + Информационные блоки
Создание интерфейса списков
Настройка списков
Списки + Бизнес-процессы
Примеры использования списков

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

Главная особенность модуля в том, что он позволяет создавать всевозможные списки прямо из публичной части сайта. Не заходя в «админку», вы создадите свои справочники, перечни, реестры и тому подобное и заполните их данными. Делать это - создавать интерфейс и настраивать

Возможности модуля:

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

Гриды + Информационные блоки

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

Модуль работает с указанным типом Информационных блоков, и по умолчанию в настройках компонента этот тип носит название «Список» . Это означает, что все Инфоблоки, которые вы создадите в этом компоненте, будут добавляться в этот, указанный вами тип. Также в параметрах компонента кроме типа инфоблоков, в которых будут храниться списки, задаются адреса всех страниц интерфейса универсальных списков.

Создание интерфейса списков

Чтобы начать работать со списками, нужно создать тип Инфоблока , с которыми будет работать компонент «Универсальные списки» (например «Списки»), создать на сайте страницу; разместить на странице этот комплексный компонент, выбрать в нем созданный тип инфоблока («Списки») и приступить к работе по их наполнению.

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

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

Настройка списков

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

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

Кроме подписей и прав в списках можно настраивать поля . Делать это вы будете точно так же, как до этого делали в административном разделе - в Инфоблоках. При этом сможете добавлять не только стандартные поля - такие как «Название», «Дата активности», так и свойства Инфоблока - такие как «Число», «Дата», «Файл», «Привязка к элементам Инфоблока». Также задаются значения по умолчанию и используются разделы Инфоблока.

Таким образом вы вы сможете очень гибко настроить свой список, добавляя в него только те поля, что вам нужны. И сразу же начнете вести на сайте этот список, скажем, реестр каких-то документов. Модуль «Универсальные списки» использует стандартные возможности Гридов - это значит, что он поддерживает сортировку и фильтрацию элементов, форму редактирования элементов и групповое изменение\удаление.

Списки + Бизнес-процессы

Модуль «Универсальные списки поддерживает встроенные Бизнес-процессы . Чтобы эта возможность - запускать Бизнес-процессы - появилась в ваших списках, вы должны ее включить. Выполняется такое подключение в административном разделе - в свойствах Инфоблока, с которым работают ваши списки.

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

Примеры использования списков

Модуль «Универсальные списки» включен в 2 старшие редакции «1С-Битрикс: Управление сайтом» - «Бизнес» и «Веб-кластер». Конечно же, вы сможете использовать их функционал для ведения списков какого-то внутреннего порядка. Возможно, это будут списки контактов с клиентами. Ваши списки будут использоваться, к примеру, для создания закрытых разделов для бизнес-партнеров. Партнеры смогут в этом случае вести на этой, защищенной и отдельной веб-площадке, свои конфиденциальные списки . То есть, вы можете организовать дополнительные сервисы для различных групп пользователей вашего сайта.

Допустим, у вас будет потребность организовать прием веб-форм на сайте от бизнес-партнеров. При этом, вы, конечно же, не захотите предоставить доступ к административной части посторонним пользователям. Готовый механизм «Универсальных списков» как раз и позволяет уже имеющийся Инфоблок с большим объемом накопленных данных представить в «публичке» и дать партнерам возможность искать по нему, фильтровать информацию. То есть, партнеры будут только работать с данными списков и добавлять в них записи.

Модуль «Универсальные списки» - это практическое решение «Гриды + Инфоблоки» . С помощью этого решения вы можете настроить на сайте работу с самыми разнообразными списками - с любыми данными, с любым их источником. Задействованная в модуле технология Гридов с успехом позволяет это делать - создавать FAQ, справочники и базы знаний, списки контрагентов, структурированные архивы, библиотеки, файловые хранилища и другое.

Конечная цель любого бизнеса – продажа товаров и услуг. Разработчики Битрикс24 это учли и создали удобный механизм для работы с товарами.

Ниже пример того, как в Битрикс24 можно работать с каталогом товаров или объектов:

В Битрикс 24 можно создавать новые товары, редактировать и удалять существующие, импортировать новые товары из файла или с системы складского учета.
Давайте рассмотрим работу с товарами подробнее.

Создание товаров

Как упоминалось выше, создавать товары можно прямо на странице сделки. Для этого нужно открыть вкладку Товары и нажать кнопку «Добавить новый товар». Дальше откроется форма, в которой нужно будет заполнить все поля, после чего нажать кнопку «Создать».

Также создавать товары можно в Каталоге. Нужно перейти на вкладку «Товары» («Еще/Товары») и дальше «Добавить новый товар».

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

Автоматическое добавление товаров

В CRM не обязательно создавать все товары вручную. Например, если для товарного учета вы используете 1С, то можно настроить обмен и товары будут попадать в Bitrix24 автоматически. Причем структура разделов в 1С и в CRM может отличаться.

Также в системе предусмотрен импорт товаров с файлов (в формате.csv). Для перехода к данной процедуре достаточно нажать кнопку настроек (шестеренка) в разделе «Товары» и в выпадающем меню выбрать «Импорт товаров».

Обратите внимание! Импорт товаров с csv файла рекомендуется использовать только для первичной загрузки товаров. Повторно импорт делать не стоит, поскольку это может привести к появлению дублей товаров.

Удаление и редактирование товаров

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


Битрикс24.сайты и товары

При оформлении сделки есть возможность вручную задать нужные товары.
Но этим Битрикс24 разработчики не ограничились. Функционал системы позволяет создавать сайты и лендинги. Формы заказа на таких сайтах можно связать с товарами. Тогда при оформлении заказа все данные с формы, в том числе и выбранные товары, сразу будут попадать в CRM в виде заполненных полей новой сделки.
Как это будет выглядеть на сайте и в CRM, вы можете посмотреть в данном видео

В перспективе в Битрикс24 можно будет также легко собирать и интернет-магазины с товарами (на данный момент эти наработки на этапе тестирования).

Битрикс24 - удобный инструмент для увеличения эффективности работы компании.

При регистрации используйте промокод ниже для получения дополнительных бонусов (можно использовать только 1 промо-код):

  • Используйте промокод positive2bst и получите бесплатно дополнительно 12 пользователей на 6 месяцев!
  • Используйте промокод positive2bs2 и получите бесплатно дополнительные 5 гб на 1 год!
Эти же промокоды можно использовать даже если вы уже работаете с Битрикс24. Куда вводить промокод в этом случае можно узнать в предыдущей публикации «

Модуль "Универсальные списки" - достаточно мощный и функциональный. Его можно с успехом использовать для предоставления пользователям сайта возможности добавлять и редактировать свои элементы инфолока в публичной части. Однако принцип работы с ним сильно отличается от того, к чему мы привыкли, работая, например, с компонентом "Добавление элементов инфоблока". Прежде всего это касается настройки прав доступа. В этой статье я расскажу как настроить модуль для выполнения задачи, аналогичной той, которая раньше решалась с помощью компонента "Добавление элементов инфоблока", т.е. чтобы пользователь мог добавлять элементы инфоблока, и редактировать элементы, но только добавленные им самим, с возможностью модерации редактором сайта.

1. Создаем тип инфоблока

Т.к. комплексный компонент "Универсальные списки" (bitrix:lists) не работает с отдельными инфоблоками, cоздаем тип инфоблока "Компании".

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

Для этого заходим в настройки модуля "Универсальные списки" (Настройки > Настройки продукта > Настройки модулей > Универсальные списки) и на вкладке "Права доступа" разрешаем группе "Администраторы" управлять списками в нашем созданном типе инфоблока "Компании".

Этот шаг обязателен, т.к. без него при размещении компонента наш тип инфоблока не появится в выпадающем списке в параметрах компонента.

3. Размещаем компонент

Создаем на сайте раздел, и размещаем в нем компонент "Универсальные списки".

В параметрах компонента выбираем наш тип инфоблока и включаем поддержку ЧПУ (в режиме не-ЧПУ лично мне не удалось заставить компонент работать).

Добавляем инфоблок (список)

После размещения компонента, мы увидим на странице панель с одной кнопкой "Добавить". С помощью нее мы и сможем добавить инфоблок.

Нажимаем кнопку "Добавить". Откроется форма добавления инфоблока.

На вкладке "Доступ" устанавливаем для группы "Зарегистрированные пользователи" право "Добавление", а для категории пользователей "Автор" - право "Изменение". Последнее даст возможность пользователю редактировать свои элементы. Если же установить для группы "Зарегистрированные пользователи" право "Изменение", то пользователь сможет редактировать все элементы инфоблока, а не только свои. Вместо группы "Зарегистрированные пользователи", можно также использовать категорию "Все авторизованные пользователи".

Примечание: инфоблок также можно добавить через административную часть битрикс, если включить расширенные права доступа .

После выполнения данных действий, пользователи группы "Зарегистрированные пользователи", увидят следующее на главной странице раздела:

При выборе инфоблока (списка) "Компании", пользователю будет доступен список его элементов.

При нажатии кнопки "Добавить компанию", откроется форма редактирования:

Добавление полей

Интерфейс добавления полей один для собственно полей и свойств инфоблока. При этом можно задать собственное название для любого поля, как и в компоненте "Добавление элементов инфоблока".



Отправка уведомлений и утверждение

Отправка уведомлений администратору сайта и утверждение документов при работе с универсальными списками как правило осуществляется с помощью бизнес-процессов. Т.к. использовать стандартные бизнес-процессы в данном случае не представляется удобным, то придется создать свой бизнес-процесс. Можно также использовать вместо бизнес-процессов модуль "Документооборот", но настраивать инфоблок на работу с документооборотом придется через административную часть битрикс, т.к. в компоненте "Универсальные списки" такая возможность отсутствует).

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

После нажатия на кнопку мы увидим список шаблонов бизнес-процессов.

Нажимаем кнопку "Создать последовательный бизнес-процесс". Откроется страница редактирования шаблона бизнес-процесса.

Это немного модифицированный стандартный бизнес-процесс "Утверждение по первому голосу". Т.к. стандартный механизм публикации использовать не удалось - при снятии с публикации, элементы не отображаются в списке (даже под админом), я использовал вместо блоков "Публикация"/"Снятие документа с публикации" блоки "Изменение документа" с простой активацией/деактивацией. Кроме того, вместо почтовых сообщений, я использовал сообщения соцсети.

В параметрах шаблона устанавливаем галочку "Автоматически запускать при добавлении".

Если же установить галочку "Автоматически запускать при изменении", то процесс будет запускаться пользователем при изменении элемента. Либо можно создать для этого отдельные бизнес-процесс, который будет функционировать по другому сценарию, например, не деактивировать элемент, а просто отправлять уведомление редакторам сайта.

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

Правка шаблона компонента

Правка шаблона компонента в нашем случае будет сводится в основном к упрощению и отключению лишнего функционала.

Например, чтобы изменить внешний вид списка по умолчанию (по умолчанию отображаются все колонки полей, цветовая схема - синяя), добавим в шаблон компонента lists.list в файл result_modifier.php, следующий код:

$aOptions = CUserOptions :: GetOption ("main.interface.grid" , $arResult [ "GRID_ID" ], array()); $aOptions ) { $aOptions = array (
"views" =>
array (
"default" =>
array (
"name" => "<Представление по умолчанию>" ,
"columns" => "NAME,BIZPROC" ,
"sort_by" => "NAME" ,
"sort_order" => "asc" ,
"page_size" => "20" ,
"saved_filter" => "" ,
),
),
"filters" =>
array (
),
"current_view" => "default" ,
"filter_rows" => "list_section_id" ,
"theme" => "grey" ,
); CUserOptions :: SetOption ("main.interface.grid" , $arResult [ "GRID_ID" ], $aOptions );

Данный код установит вывод только колонок "Название", "Бизнес-процессы", серую цветовую схему и пр. Если же пользователь уже выбирал колонки или что-то другое, его выбор не будет изменен.

В том же файле result_modifier.php убирем ссылку на бизнес-процесс в списке, оставляем только название. Само название колонки "Бизнес-процессы" меняем на "Статус". Таким образом в этой колонке будет отображаться статус бизнес-процесса, например, мы можем в самом бизнес-процессе устанавливать статусы "На модерации", "Опубликован", "Отклонен".

Чтобы убрать возможность запуска бизнес-процесса из контекстного меню, в том же файле вставляем код:

foreach($arResult [ "ELEMENTS_ROWS" ] as $i => $arRow ) { $arActions = Array(); $arRow [ "actions" ] as $a => $arAction )
if(! $arAction [ "MENU" ]) $arActions = $arAction ; $arResult [ "ELEMENTS_ROWS" ][ $i ][ "actions" ] = $arActions ;

Теперь правим шаблон компонента lists.element.edit - полностью убираем вкладки "Бизнес-процессы" и "Разделы". Для первого достаточно найти в файле template.php конструкцию CModule::IncludeModule("bizproc") и подставить рядом с ней " && false", для второго - найти и закомментировать строку:
array("id" => "tab_se" , "name" => $arResult [ "IBLOCK" ][ "SECTION_NAME" ], "icon" => "" , "fields" => $arTabSection ),

Итог

В целом использование модуля "Универсальные списки" для решения данной простой задачи не является оправданным и даже удобным (пришлось выполнять слишком много действий, не обошлось без правки шаблона компонента). Компонент "Добавление элементов инфоблока" гораздо лучше подходит для этого, если бы не одно но - этот компонент больше не поддерживается компанией 1С-Битрикс, и самые простые вещи приходится дорабатывать почти с нуля. Поэтому во многих случаях описанный метод может иметь преимущества.

Хочется представить очень важный для многих разработчиков функционал, который найдет (и уже находит) широкое применение в продуктах «1С-Битрикс» - как в «Управлении сайтом» так и в «Корпоративном портале». Особенно важный, если учесть актуальную тенденцию настоящего времени - что сайт сейчас - не просто сайт, как презентация компании, а все больше как бизнес-приложение, как функционал для организации взаимодействия с партнерами и клиентами. Речь пойдет об Универсальных списках, использующих технологию Гридов. О самих Гридах мы поговорим немного - только на уровне "что это такое". Подробнее остановимся на Универсальных списках - о том, как именно используется "кухня" Гридов в этом модуле, почему это сильно упрощает работу веб-разработчика по созданию всяческих списков на сайтах, а пользователю позволяет с ними работать легко и удобно.

Немного про Гриды

В техподдержку «1С-Битрикс» постоянно поступают вопросы на тему: "А как бы вот то, что в "админке" да вынести "на улицу" - людям?" Действительно, как представить в "публичке" какой-то функционал, например, универсальные гриды? И не просто представить, но и дать возможность вводить туда данные?

При разработке нового продукта - «Корпоративный портал» разработчики «1С-Битрикс» столкнулись с тем, что все публичные интерфейсы получились разрозненными. И только потому, что не было инструмента по созданию однотипного интерфейса. Решением стали визуальные Гриды - набор компонентов ядра для создания унифицированного интерфейса. Что же это за Гриды, что нужно знать о них? Это, прежде всего, инструмент разработчика! Это не пользовательский компонент, поэтому никакого смысла в добавлении его на страничку проекта через дерево компонентов нет. Это API для разработчика - для того, чтобы он представлял свои данные.


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

У вас может сложиться ошибочное представление о Гридах, что они могут выводить только Инфоблоки. Это совершенно не так - Гриды могут работать с абстрактными данными и выводить все что им "подсовывают". Также Гриды нагружены типовым функционалом для работы со списками и формами. То есть, то, что является общим моментом, гриды облегчают и упрощают. И одна из отличительных особенностей гридов - это то, что они предоставляют довольно широкие возможности кастомизации для пользователя - "под себя". Это значит, что каждый из пользователей может выполнить свои настройки Гридов, которые будут удобны только для него.


Настройка пользовательских представлений

Как выглядит общая схема использования Гридов? Поскольку Гриды работают в публичном разделе, то, скорее всего, вы будете создавать компонент для публичного раздела, который представляет данные, сортирует, фильтрует и так далее. Чтобы представить эти данные, вы в шаблоне своего компонента вызываете компонент Гридов, компонент формы и просто передаете с них данные для отображения. И, если необходимо, вы можете использовать готовые компоненты, скажем один из простейших - "тулбар", который ваш тулбар и отображает кнопками.

Универсальные списки

Компоненты гридов внедряются в продуктах «1С-Битрикс», в частности, Библиотека документов в «1С-Битрикс: Корпоративный портал» использует компоненты гридов, модуль «Бизнес-процессы без документов» используют гриды. Все это позволяет пользоваться унифицированным интерфейсом с одними и теми же настройками для пользователя и функциональными возможностями. Один из таких модулей, ради которого, собственно, и затевалась "кухня" Гридов, это модуль Универсальных списков. Что же это за модуль?


Список - Правительство РФ

Часто возникают задачи по сопровождению данных в публичном разделе, и для этого до сих пор не было никаких интерфейсов кроме, естественно, административного. Созданный модуль является надстройкой для Инфоблоков, организован в виде публичного комплексного компонента и позволяет пользователю внести свои данные в виде списка. Компонент работает с указанным типом Инфоблока (в дистрибутиве выведено "Списки"), это по умолчанию задано в настройках компонента. Это означает, что все Инфоблоки, создаваемые в этом компоненте, будут добавляться в этот тип.


Настройки компонента - тип Инфоблока

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


Списки, они же Инфоблоки

Что мы видим на сайте? По сути, список Инфоблоков. То есть, добавляя новый список, например, "Партнеры", мы добавляем новый Инфоблок. В этом списке-инфоблоке мы можем настроить подписи, надписи к элементам и разделам списка. К примеру, если речь идет о списке партнеров, то "Добавить элемент" можно переименовать в "Добавить партнера". Владелец списка может сразу же определить доступ к своему списку: какой-то группе - чтение, какой-то - изменение элементов. Таким образом, можно сразу же определиться и настроить порядок коллективной работы с создаваемыми списками.

Чтобы начать работать со списками, нужно создать страницу, создать тип Инфоблока, разместить на странице компонент "Универсальные списки", выбрать в нем тип инфоблока "Списки" и начать работу.

В планах развития Списков в продуктах «1С-Битрикс» предусмотрено следующее:

Контроль над списками опустить до уровня рабочей группы, чтобы в рамках группы работать со своими списками;

Чтобы можно было самостоятельно создать свой, личный список в своем профиле. Пока, чтобы "завести" списки на своей страничке, пользователь должен обращаться к администратору, чтобы тот разместил компонент на его странице и настроил его, после чего со списками можно начинать работать.


Настройка полей списка

Что можно настраивать в списке? Про подписи и права мы уже говорили. А самое интересное, что в списках можно настраивать поля! Причем, нужно особо отметить, делается это точно так же, как вы делали в административном разделе в Инфоблоках. При этом можно добавлять как стандартные поля - такие как "Название", "Дата активности", так и свойства Инфоблока, такие как Число, Дата, Файл, Привязка к элементам Инфоблока. Также можно задавать значения по умолчанию и использовать разделы Инфоблока.


Основные настройки поля

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

Как мы уже говорили, модуль Списков использует стандартные возможности Гридов, то есть, он поддерживает сортировку элементов, поддерживает фильтрацию элементов, форму редактирования элементов и групповое редактирование\удаление.

Списки + Бизнес-процессы

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


Бизнес-процессы в списках включаются в админке - в свойствах инфоблока

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


Списки поддерживают бизнес-процессы

Примеры использования списков

Модуль Универсальных списков включен во все редакции «1С-Битрикс: Корпоративный портал» (www .1c -bitrix .ru /products /intranet /) - понятно, что там он нужен для ведения списков какого-то внутреннего порядка, например, это могут быть списки контактов с клиентами. В «1С-Битрикс: Управление сайтом» (www.1c-bitrix.ru/products/cms/) модуль присутствует в 3-х старших редакциях, начиная с Бизнеса. Предполагается, что списки будут использоваться, к примеру, для создания закрытых разделов для бизнес-партнеров. Партнеры смогут в этом случае вести там свои конфиденциальные списки. То есть, мы можем организовать дополнительный сервис для каких-то посетителей сайта.


Списки на сайте государственной организации

Можно привести пример конкретнее - организовать прием веб-форм на сайте. По сути, веб-формы становятся формой ввода в элемент инфоблока. В административной части вы ведете различные Инфоблоки и, естественно, не хотите допускать в админку различные группы пользователей - там работают только ваши контент-редакторы. Однако нужно дать возможность, скажем, партнерам компании обрабатывать данные из этих Инфоблоков - осуществлять поиск по ним, добавлять новые записи. Причем, делать это нужно быстро, к тому же именно в "публичке" - без захода, повторим, в административный отдел. Тут и приходит на помощь готовый механизм Универсальных списков, как раз и позволяющий уже имеющийся Инфоблок с большим объемом накопленных данных представить в "публичке" и дать возможность искать по нему, фильтровать информацию - в общем, работать с этими данными.

Еще раз напомним, Гриды - это технология, с помощью которой вы можете работать с любыми своими данными, с любым источником. Например, вы берете данные из проекта на MySQL, на Гридах организовываете работу - ввод и обработку этих данных. А вот Списки - это уже практическое решение "Гриды + Инфоблоки". Как они связаны? Список и Инфоблок - это по сути одно и то же - те же данные, только доступные для организации с ними прямо из "публички".

Итак, с помощью Универсальных списков, вы можете быстро создавать на своем веб-проекте такие списки, как частые вопросы. Еще раз подчеркнем - прямо из «публички» - не заходя в административную панель! Визуальный редактор универсальных списков поможет вам быстро создать и настроить хранилища любого типа информации. А задействовав визуальные компоненты с поддержкой drag&drop, вы это сделаете запросто. Причем, сможете не только вводить данные в хранилища, но и редактировать их.

Наталья Сергеева для Softomania