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

Обновлено: 05.07.2024

Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт?

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

Постановка задачи

Моей задачей было разработать простейшую учётную систему рекламных конструкций, по условиям гос контракта система должна работать на базе Битрикса (версия 15).

Можно было всё навелосипедить сбоку от Битрикса, но я решил что это будет слишком нечестно по отношению к заказчику, функционал Битрикса был использован по максимуму:

  • аутентификация пользователей
  • система хранения данных (EAV)
  • редактор данных
  • обработчики событий аудита
  • ролевая модель для авторизации действий пользователей
  • управление пользователями
  • работа со справочниками

События аудита

В разработанной системе работа с данными ведётся через API (добавление нового объекта на карту и изменение его координат), другие параметры объекта редактируются через редактор Битрикса, поскольку API обрабатывает не все запросы на изменение данных, то аудит только в API был бы не полным, значит нам необходим аудит на стороне Битрикса.

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

Писать аудит на триггерах СУБД, или писать аудит на событиях Битрикса, разница не большая.
События для обработки прописываются в скрипте "bitrix/php_interface/init.php", если файла нет, то его необходимо создать:


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

Сигнатура метода для обработки события у каждого события своя, какая конкретно смотрим в документации Битрикса или дебажим и смотрим исходники (наглядней, все события и моменты вызова обработчиков так же можно посмотреть в исходниках во время отладки).

И тут мы сталкиваемся в тем что при работе с СУБД у нас есть одновременно текущие (старые) данные и данные которые будут записаны (новые), а при работе с Битриксом, у нас есть или старые данные или новые данные, но ни когда у нас не будет и старых и новых одновременно.

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

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

Если у большинства фреймворков не считается зазорным устаревшие методы помечать как depricated и в дальнейшем выпиливать их из «ядра», то архитекторы Битрикс считают эту практику неприемлемой.

Когда пишешь «на Битриксе» тебе в голове надо держать два (и больше) разных «алгоритма» (стратегии, философии, подхода) работы системы, а потом бизнес не понимает почему Битрикс программисты стоят дороже чем программисты других фреймворков. Потому что дорогой бизнес тебе сэкономили деньги на переписывании кода при переходе к новой версии Битрикс, потому теперь программисту в голове надо держать весь «хвост» обратной совместимости.

Я считаю каждый программист Битрикс должен сказать спасибо авторам фреймворка за свою большую зарплату, и за головную боль тоже :)

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

Использование глобального состояния

Что бы сохранять и передавать состояние между обработчиками событий, приходиться заводить глобальные переменные. Глобальные переменные это то что не поддаётся рефакторигу, поэтому я использую статические свойства класса:


Здесь надо сделать пояснение об использовании «fields» и «properties». Поля это параметры которые есть у каждой записи инфоблока (идентификатор, название, инфоблок «родитель»), свойства это параметры характерные для записей конкретного типа инфоблоков, в EAV модели это атрибуты и их значения.

«names» это наименования атрибутов, в одном событии мы имеем и идентификаторы атрибутов и наименования, в другом событии мы имеем только идентификаторы, и для красивой записи в журнале нам необходимо сохранить названия (можно конечно по идентификатору вычитать, но почему то не хочется).

«operation» текущая операция, для работы с «fields» Битрикс даёт конкретные события, при работе с «properties» (функции «SetPropertyValues» и «SetPropertyValuesEx»), нет события с типом операции, есть событие перед вызовом и после, при этом не известно какая операция выполняется (добавить/обновить/удалить), поэтому операцию так же необходимо передавать из обработчика в обработчик.

Возможно я в чём то не разобрался, и в Битриксе можно одновременно видеть значения как было и как будет, а может быть в журнал надо было отдельно записывать состояние перед и состояние после, но почему то я решил что запись журнала должна быть в формате «свойство %наименование% было %значение перед изменением% => стало %значение после%» и поэтому огрёб проблем с сохранением глобального состояния.

Определение необходимости регистрации изменений

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

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

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

Сохранение состояние перед изменениями

Каждая запись инфоблока состоит из двух частей, одна часть это «fields», и эти параметры изменяются методами:

  • CIBlockElement::Add()
  • CIBlockElement::Update()
  • CIBlockElement::Delete()
  • CIBlockElement::SetPropertyValues()
  • CIBlockElement::SetPropertyValuesEx()

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

Сигнатуры событий для «fields» и «properties» различаются, в части с обработкой «fields» мы сохраняем текущее состояние для fields и устанавливаем значение operation, в части обработки «properties» мы сохраняем properties и их names.

Делаем мы это конечно в обработчике «перед».

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

При составлении списка различий в записях, есть проблема с атрибутами которые могут принимать множественные значения. Формат записи их состояния «перед» и состояния «после», отличается настолько, что из одного нельзя вывести другой, поэтому при определении необходимости регистрации изменений вы всегда будете делать вывод о том что регистрация необходима.
Исходный код ведения аудита в репозитории в файле src/Topliner/Scheme/Logger.php.

Добавление пользовательской вкладки в карточку инфоблока (в классификаторе Битрикса)

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


В методе 'OnInit' мы определяем остальные методы для работы с вкладкой в редакторе Битрикса:


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

Рассказывать тут особо не чего, смотрите исходники в репозитории src/Topliner/Scheme/PermitTab.php, читайте документацию.

Ролевая модель для авторизации действий пользователей

Методы Битрикса для авторизации работают с линейной шкалой прав, то есть сценария когда одним можно первое и второе, но нельзя третье, а другим можно второе и третье, но нельзя первое, в лоб с помощью Битрикса не реализуешь.

Для таких хитрых сценариев в Битриксе есть просто проверка некоторого разрешения, и в коде при выполнении операции, вы смотрите, есть у пользователя разрешение или нет, и одной роли вы разрешаете первое и второе, а другой роли разрешаете второе и третье.

  1. $constSec->getBlock() — идентификатор инфоблока
  2. $constSec->getSection() — идентификатор раздела
  3. BitrixPermission::ELEMENT_ADD — код разрешения

Аутентификация

Если вам для каких то страниц требуется аутентификация пользователя, то просто добавите:


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

Если вам просто необходимо подключить Битрикс в каком то скрипте, то:

Работа со справочниками

«Новые» (на ноябрь 2019) справочники в Битриксе называются «HighloadBlock», работа с ними чуть чуть нестандартна.

Каждый Хайлоад блок можно хранить в отдельной таблице, поэтому для доступа к справочнику надо каждый раз определять имя таблицы для чтения. Что бы постоянно этого не делать, в Битриксе надо создавать экземпляр класса для доступа к данным. Создаётся экземпляр в две строки:

Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом". Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер.

Если вы добросовестно изучите курс, то научитесь:

  • управлять доступом к системе, сайтами, пользователями, группами пользователей;
  • работать с инструментами системы;
  • использовать возможности интерфейса по управлению системой;
  • работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
  • выполнять работу по конфигурированию веб-системы для оптимальной работы.

Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".

Начальные требования

Необходимый минимум знаний для изучения курса:

  • базовые навыки компьютерной грамотности и навыков работы с ОС Windows;
  • базовые знания о WWW и организации доступа к веб-серверу;
  • знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.

Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.

У нас часто спрашивают, сколько нужно заплатить

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

Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

Баллы опыта

В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:


уроке.

Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

Тесты и сертификат

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

Иконка успешно сданного вами курса отображается в вашем профиле на Freelance, если вы укажите ссылку на ваш профиль на сайте компании 1С-Битрикс.

Комментарии к урокам

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).

Если нет интернета

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 01.10.2021.

Как проходить учебный курс?

Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом". Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер.

Если вы добросовестно изучите курс, то научитесь:

  • управлять доступом к системе, сайтами, пользователями, группами пользователей;
  • работать с инструментами системы;
  • использовать возможности интерфейса по управлению системой;
  • работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
  • выполнять работу по конфигурированию веб-системы для оптимальной работы.

Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".

Начальные требования

Необходимый минимум знаний для изучения курса:

  • базовые навыки компьютерной грамотности и навыков работы с ОС Windows;
  • базовые знания о WWW и организации доступа к веб-серверу;
  • знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.

Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.

У нас часто спрашивают, сколько нужно заплатить

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

Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

Баллы опыта

В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:


уроке.

Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

Тесты и сертификат

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

Иконка успешно сданного вами курса отображается в вашем профиле на Freelance, если вы укажите ссылку на ваш профиль на сайте компании 1С-Битрикс.

Комментарии к урокам

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).

Если нет интернета

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 01.10.2021.

Как проходить учебный курс?

Курс предназначен для базовой подготовки пользователей, осуществляющих администрирование порталов, созданных на коробочной версии сервиса Битрикс24. Изучение курса позволяет освоить основные методы администрирования системы. Если вы хотите ознакомиться с тем как внедрить наш сервис в работу вашей компании, то для вас создан курс Внедрение корпоративного портала.

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

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

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

При условии качественного изучения материалов курса, по его окончании специалист должен уметь:

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

Начальные требования

Для прохождения курса необходимо:

  • наличие базовых навыков компьютерной грамотности и навыков работы с ОС Windows;
  • наличие представлений о WWW и организации доступа к веб-серверу;
  • базовые навыки установки и администрирования *nix-систем.

Если вам предстоит самостоятельная установка системы, то рекомендуется к изучению курс Установка и настройка.

Администратору системы будет полезно ознакомиться с курсом Разработчик Bitrix Framework, рассказывающем о принципах работы Bitrix Framework.

Примечание. Битрикс24 создан на основе платформы Bitrix Framework, на которой ранее был создан другой продукт "1С-Битрикс: Управление сайтом". В административной части системы сохранена терминология, относящаяся к этому продукту. Поэтому в текущем курсе понятие "сайт" нужно рассматривать как синоним слова "портал".

У нас часто спрашивают, сколько нужно заплатить

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

Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

Баллы опыта

В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:


уроке.

Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

Тесты и сертификат

После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче линейки тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 10 дней (70 академических часов).

Если нет интернета

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 06.09.2021.

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

Если какой-то пункт отсутствует, то он не представлен на вашем тарифе.

Подробную информацию о всех тарифах читайте на странице сравнения редакций.

Настройки

Секция настроек отвечающих за основные данные на портале.

  • Укажите Название компании и Название компании в логотипе, которое будет отображаться в левом верхнем углу.
  • Текст кнопки "Мне нравится" до голосования – какой текст будет на кнопке для лайков в вашей компании.
  • E-Mail администратора сайта (отправитель по умолчанию) – какой адрес будет указываться в качестве отправителя, если не произведены настройки.

Функция Убрать логотип 24 доступна не на всех тарифах Битрикс24. Узнать подробнее вы можете на странице тарифов. Примечание: чтобы снять выбор со всех дней недели (вы работаете без выходных), нужно оставить один выходной, затем зажать клавишу CTRL (CMD на macOS) и кликнуть мышкой по последнему выделенному дню. Это снимет выбор со всех дней недели.

Настройки портала внешний вид.jpg

Внимание! Данная функция будет отключена 1 сентября 2021 года. Подробнее. В интеграции Яндекс.Карт с CRM используется продукт «JavaScript API и Геокодер». Как получить API-ключ, узнать о тарифах и ограничениях можно найти в документации Яндекс.

Настройки безопасности

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

Перед настройкой OTP для сотрудников администратор должен настроить двухэтапную авторизацию для себя.

Сервисы

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

Примечание: Доступно только на верхних тарифных планах Компания и Команда.

Ограничения по IP

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

Подробнее данный инструмент описан в статье Ограничение по IP.

Функция Ограничения доступа к Битрикс24 по IP-адресу доступна только на максимальном тарифе Битрикс24. Узнать подробнее вы можете на странице тарифов.

Перенос данных в Битрикс24 из других систем

В данном разделе находятся ссылки на приложения, которые сделают ваш переход на Битрикс24 максимально легким и безболезненным :)

Читайте также: