Битрикс КП. Копирование универсальных списков и бизнес-процессов. Создание списка Гибкая настройка любых бизнес-процессов

Хочется представить очень важный для многих разработчиков функционал, который найдет (и уже находит) широкое применение в продуктах «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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

Настройки


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

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

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

Подписи


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

Доступ


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

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

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



Для автоматизации этого бизнес-процесса, нужно уметь работать со списками.

В списки бывают 2х видов:

  • списки «Живой ленты» (перейти к ним можно через «Процессы в ленте» либо через «Живая лента», кнопка «Еще», далее «Настройки»).
Заходим в конкретный процесс и видим список:


  • универсальные списки (раздел «Компания», пункт «Списки»)



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


Начинаем работу над БП с создения двух разных списков:

  • «Согласование КП»
    список «Живой ленты», который будет использоваться для согласования коммерческого предложения (КП).
  • «Реестр КП»
    сюда сохраняется информация для того, чтобы позже вернуться к её редактированию.

Отличие первого списка «Согласование КП» в том, что сотрудник может максимально быстро отправить нужному эксперту коммерческое предложение на согласование. Здесь нужно лишь задать необходимые поля, а именно:

  • Название КП;
  • Ответственный – кому отправляем бизнес- процесс;
  • Название компании;
  • Дата – заполняется автоматически при создании;
  • Файл КП;
  • Комментарии;
  • Телефон;
  • Email;
  • Статус – вспомогательное поле, где отображается результат бизнес-процесса.



Во втором списке «Реестр КП» присутствуют дополнительные поля, которые позволяют сохранить информацию, которая может пригодиться в дальнейшем:
  • Название - берется из живой ленты;
  • Дата создания;
  • Ответственный;
  • ID сделки;
  • ID компании, которую мы создали;
  • Сумма сделки.



Работы с бизнес-процессами осуществляется через опцию «активити». Здесь создаем элемент списка: в поле «Тип документа» выбираем любой из списков, который есть на портале. В результате мы видим поля, которые задали в этих списках. Можно приступить к заполнению их данными.




Все файлы, с которыми мы работаем хранятся на Битрикс Диске.

* Битрикс Диск – это такое же хранилище данных, как и диски на ПК. Соответственно, работа с ними похожа на ту, что происходит с дисками на ПК, в проводнике.

Какие диски существуют в :
  • Общий диск (раздел «Компания», пункт «Общий диск»)- доступен всем сотрудникам. Имеет смысл хранить там документы, которые могут понадобиться любому сотруднику (бланки писем, договоров и прочее). Файлы здесь видны всем;
  • Личный диск сотрудника (раздел «Избранное», пункт «Мой диск»). Помимо тех файлов, которые загрузил на ПК сотрудник, видны еще файлы, которые доступны из других мест (например из раздела «Общий диск»). Файлы видны только вам, если вы не настроите права доступа кому-то ещё;
  • Диск группы – для обособленное хранилище, в котором вы обсуждаете конкретные вопросы. Другими словами, на этот диск вы можете загружать файлы, создавать документы, но видны они будут только тем, кто состоит в данной группе.
На файлах диска можно также запускать бизнес-процессы, а так же создавать публичные ссылки. На рисунке представлен весь перечень «активити» для работы с диском:




Рассмотрим работу с КП (2 сценария развития):
  • Заходим в раздел «Процессы в ленте», находим список «Согласование КП», кнопку «Бизнес-Процессы», попадаем в редактор бизнес-процессов и создаем последовательный бизнес-процесс, который так и назовем: «Согласование КП». Запускаться он будет автоматически при появлении КП(по этому оставляем только первую галочку сверху).
  • Чтобы узнать, что делать с КП, его должен посмотреть эксперт. То есть, в поле документа выбираем ответственного. Даем название документу «Выберите что делать». В Описании можно указать название КП, дату создания и необходимые комментарии. Затем создаем список вариантов ответа для эксперта:
  1. Отклонить;
  2. Подумать;
  3. Создать сделку.
Нажимаем кнопку «Установить». Пусть по умолчанию будет отклонить (не так часто попадаются действительно полезные КП)




Чтобы запросить у человека файл, перед тем, как отправлять КП еще куда-то, добавляем в настройках «активити» запрос дополнительной информации в поле типа «Файл». Назовем его «Файл дополнительный» и выберем тип «Файл». Нажимаем кнопку «Сохранить». Аналогичным образом узнаем сумму сделки: в настройках «активити» выбираем нужные элементы, заполняем поля, даем название поля «Укажите сумму сделки», нажимаем кнопку «Сохранить».
  • На основании ответа эксперта ставим условие: «Что делать». Затем варианты: «Отклонить» - это действие будет выполняться, если переменная «Что делать» будет равна ответу эксперта «Отклонить». Здесь можно в элементе списка поставить статус «Отклонен», чтобы понимать, что КП было рассмотрено и признано бесполезным. Другой вариант - «Подумать», то есть значение переменной «Что делать» равно «Подумать». Чтобы все документы были в одном месте, сохраняем их в папку (раздел «активити» «Диск»). Выбираем «Загрузить в Диск», затем «Сохранить».
  • Перенесем информацию, которая уже есть в живой ленте, в список «Реестр КП», который будем дополнять. Заходим в «Создание элементов диска» в разделе «Обработка документа», находим «активити», открываем и выбираем документы. Битрикс 24 сразу предоставляет необходимые поля для заполнения. Заполняем их так же, как рассматривали ранее (дата, ответственный и тд). Нажимаем кнопку «Сохранить».
Проверку можно осуществить, если зайти в живую ленту, выбрать раздел «Процессы» и «Согласование КП».

Бизнес-процессы и CRM

Для работы в CRM понадобятся следующие разделы(их можно найти в меню слева):
  • Лента,
  • Основные 4 сущности: лиды, контакты, компании, сделки.
*Лид – "зародыш" контакта (КП, звонок и др.). Здесь хранится вся предварительная информация о клиенте, но он еще не готов приступить к стадии сделки. Также есть лента, в которой видны все события по лиду. Можно назначать встречи, звонки, заполнять необходимую информацию. Когда появилась более подробная информация по клиенту, можно конвертировать его в компанию или контакт. После этого, если уже необходимо заключать сделку, то лид конвертируется в сделку и работа продолжается уже в этой сущности. У лидов и сделок есть линейка статусов, которая показывает на каком этапе находится сделка с этим лидом.

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

Создадим алгоритм работы бизнес-процесса, если КП оказалось полезным и компания будет заключать договор:




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




Теперь, когда БП завершён, он появится в CRM как новая сделка.




Заходим в созданную сделку и видим: компанию, которую мы создали, сумму сделки и ответственного - все те данные, которые мы указали. БП работает корректно.


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

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