Web Extension для Safari (macOS) и Google Chrome, которое помогает разработчикам Битрикс24 быстро получать ID полей сущностей при работе с CRM и другими модулями.
- Автоматическое обнаружение полей — расширение автоматически находит все поля сущностей Битрикс24 на странице
- Показ ID при наведении — при наведении курсора на поле появляется тултип с его ID
- Копирование ID одним кликом — клик по тултипу копирует ID в буфер обмена
- Работа с динамическим контентом — автоматически обрабатывает поля, загружаемые через AJAX
- Поддержка iframe — работает даже если форма находится внутри iframe
Для полей типа enumeration (список) и select доступны дополнительные функции:
- Показ всех значений — тултип отображает ID поля и все доступные значения с их ID
- Копирование в JSON формате — генерация JSON объекта с транслитерированными ключами
- Копирование в Python dataclass — генерация Python класса с транслитерацией
- Включение/выключение — переключатель в popup для временного отключения расширения
- Сохранение состояния — настройки сохраняются между сессиями
- Откройте проект в Xcode
- Соберите проект (⌘+B)
- Запустите приложение (⌘+R)
- В Safari перейдите в Настройки → Расширения
- Включите расширение "bitrix24-help-developer Extension"
- Разрешите доступ к нужным сайтам
- Откройте Chrome и перейдите в chrome://extensions/
- Включите режим разработчика (Developer mode) в правом верхнем углу
- Нажмите Загрузить распакованное расширение (Load unpacked)
- Выберите папку
bitrix24-help-developer Chrome Extension/Resources - Расширение будет установлено и готово к использованию
- Откройте любую страницу Битрикс24 с формами редактирования сущностей (CRM, Сделки, Контакты и т.д.)
- Наведите курсор на любое поле формы
- Появится тултип с ID поля
- Кликните по тултипу, чтобы скопировать ID в буфер обмена
Пример:
При наведении на поле "Название сделки":
┌─────────────────┐
│ 📋 TITLE │ ← ID поля
└─────────────────┘
После клика: "TITLE" скопировано в буфер обмена
Для полей типа список (например, "Статус", "Тип сделки") расширение показывает дополнительную информацию:
Пример тултипа для списочного поля:
┌─────────────────────────────┐
│ 📋 STATUS │ ← ID поля
│ NEW: Новая │ ← ID значения: Текст
│ PREPARATION: Приоритизация │
│ PREPAYMENT_INVOICE: Счет │
│ EXECUTING: В работе │
│ FINALIZED: Завершена │
│ SUCCESS: Успешно реализована│
│ LOSE: Проиграна │
│ │
│ [JSON] [Python] │ ← Кнопки копирования
└─────────────────────────────┘
Кнопка JSON генерирует объект с транслитерированными ключами:
Пример результата:
{
"NEW": "NEW" // Новая
"PREPARATION": "PREPARATION" // Приоритизация
"PREPAYMENT_INVOICE": "PREPAYMENT_INVOICE" // Счет
"EXECUTING": "EXECUTING" // В работе
"FINALIZED": "FINALIZED" // Завершена
"SUCCESS": "SUCCESS" // Успешно реализована
"LOSE": "LOSE" // Проиграна
}Использование в коде:
const STATUS = {
"NEW": "NEW",
"PREPARATION": "PREPARATION",
"EXECUTING": "EXECUTING",
// ...
};
// Использование
BX24.callMethod('crm.deal.update', {
id: 123,
fields: {
STATUS: STATUS.NEW
}
});Кнопка Python генерирует Python dataclass класс:
Пример результата:
@dataclass
class Status:
ID: str = "STATUS"
NEW: str = "NEW" # Новая
PREPARATION: str = "PREPARATION" # Приоритизация
PREPAYMENT_INVOICE: str = "PREPAYMENT_INVOICE" # Счет
EXECUTING: str = "EXECUTING" # В работе
FINALIZED: str = "FINALIZED" # Завершена
SUCCESS: str = "SUCCESS" # Успешно реализована
LOSE: str = "LOSE" # ПроигранаИспользование в коде:
from dataclasses import dataclass
@dataclass
class Status:
ID: str = "STATUS"
NEW: str = "NEW" # Новая
PREPARATION: str = "PREPARATION" # Приоритизация
# ...
# Использование
deal_data = {
'id': 123,
'fields': {
'STATUS': Status.NEW
}
}Примечание: Если название поля не найдено, используется транслитерированный ID поля в качестве имени класса.
Тултип позиционируется относительно элемента поля (не курсора), что позволяет навести на него курсор для клика:
- Позиционирование всегда слева от элемента поля
- Смещение на 12px от границы элемента
- Автоматическая корректировка по вертикали: если не помещается снизу — отображается сверху
- Минимальные отступы 10px от краев viewport
- Кликните на иконку расширения в панели инструментов Safari
- Используйте переключатель для включения/выключения расширения
- Статус отображается под переключателем ("Включено" / "Выключено")
- Откройте форму редактирования сделки в Битрикс24
- Наведите курсор на поле "Название"
- В тултипе увидите:
TITLE - Кликните по тултипу
- ID
TITLEскопирован в буфер обмена
- Наведите курсор на поле "Статус"
- В тултипе увидите:
STATUS NEW: Новая PREPARATION: Приоритизация EXECUTING: В работе ... - Кликните кнопку JSON для копирования в JSON формате
- Или кликните кнопку Python для копирования в Python dataclass формате
// Получили ID поля через расширение: "TITLE"
BX24.callMethod('crm.deal.update', {
id: 123,
fields: {
TITLE: 'Новая сделка'
}
});# Получили Python dataclass через расширение
from dataclasses import dataclass
@dataclass
class Status:
ID: str = "STATUS"
NEW: str = "NEW"
# ...
# Использование в запросе
import requests
response = requests.post(
f'{bitrix_url}/rest/crm.deal.update',
json={
'id': 123,
'fields': {
'STATUS': Status.NEW
}
}
)- ✅ Текстовые поля (
text,string) - ✅ Числовые поля (
integer,double) - ✅ Дата и время (
date,datetime) - ✅ Списочные поля (
enumeration,select) — с расширенными возможностями- Обычные
<select>элементы - Элементы с атрибутом
data-items(JSON массив) - Popup-списки с
data-itemатрибутами - UI Selector Dialog элементы
- Обычные
- ✅ Множественный выбор (
multiselect) - ✅ Пользовательские поля (
custom) — включая поля в форматеUSER_FIELDS[ID] - ✅ Канбан-колонки — элементы с классом
.main-kanban-column-body
Расширение использует несколько стратегий для обнаружения полей:
- Основной селектор:
.ui-entity-editor-content-block[data-cid]— стандартные поля редактора сущностей - Альтернативный селектор: элементы с атрибутом
data-field-tagвнутри блоков редактора - Пользовательские поля: элементы с классом
.tasks-uf-panel-row,.js-id-item-set-itemили содержащие инпут с атрибутомnameв форматеUSER_FIELDS[ID] - Канбан-колонки: элементы с классом
.main-kanban-column-bodyи атрибутомdata-id - Автоматическое отслеживание: динамически добавляемые поля через
MutationObserver
Приоритет извлечения ID:
data-cid— основной атрибут (наивысший приоритет)data-field-tag— запасной вариант для полей редактора- Атрибут
nameинпута в форматеUSER_FIELDS[ID]— для пользовательских полей (ID извлекается из скобок) data-id— для канбан-колонок
Расширение автоматически транслитерирует русские названия полей и значений в латиницу для использования в:
- Ключах JSON объектов
- Именах классов Python
- Именах параметров Python
Примеры транслитерации:
- "Статус" → "Status"
- "Новая" → "Novaya"
- "В работе" → "V_rabote"
Расширение автоматически обрабатывает поля, загружаемые через AJAX:
MutationObserverотслеживает добавление новых элементов в DOM- При обнаружении новых полей автоматически добавляются обработчики событий
- Проверка выполняется с задержкой для оптимизации производительности
- Safari: Работает только в Safari на macOS (требует macOS приложение-обертку)
- Chrome: Работает в Google Chrome и других браузерах на базе Chromium
- Требует разрешения на доступ к сайтам Битрикс24
- Для работы с iframe требуется, чтобы iframe был доступен (не cross-origin)
- Расширение работает на всех страницах (
<all_urls>), но функциональность активируется только на страницах с формами Битрикс24
bitrix24-help-developer/
├── bitrix24-help-developer/ # macOS приложение-обертка для Safari
│ ├── AppDelegate.swift # Точка входа приложения
│ ├── ViewController.swift # Управление окном и взаимодействие с Safari Extension API
│ ├── Assets.xcassets/ # Ресурсы приложения (иконки, цвета)
│ ├── Base.lproj/ # Локализованные ресурсы
│ └── Resources/ # HTML/CSS/JS ресурсы для окна приложения
│ ├── Main.html # HTML интерфейса окна приложения
│ ├── Script.js # JavaScript логика окна приложения
│ └── Style.css # Стили окна приложения
│
├── bitrix24-help-developer Extension/ # Safari Web Extension
│ ├── SafariWebExtensionHandler.swift # Обработчик нативных сообщений
│ ├── Info.plist # Конфигурация расширения для macOS
│ └── Resources/
│ ├── manifest.json # Конфигурация расширения (WebExtensions API)
│ ├── content.js # Основная логика обнаружения полей и показа ID
│ ├── background.js # Background script для обработки событий
│ ├── popup.html/js/css # Интерфейс popup расширения
│ ├── tooltip.css # Стили тултипа с ID полей
│ ├── images/ # Иконки расширения различных размеров
│ └── _locales/ # Локализация
│ └── en/messages.json # Тексты интерфейса на английском
│
├── bitrix24-help-developer Chrome Extension/ # Chrome Web Extension
│ └── Resources/
│ ├── manifest.json # Конфигурация расширения (Chrome MV3)
│ ├── background.js # Service worker для обработки событий
│ ├── content.js # Основная логика обнаружения полей и показа ID
│ ├── popup.html/js/css # Интерфейс popup расширения
│ ├── tooltip.css # Стили тултипа с ID полей
│ ├── images/ # Иконки расширения различных размеров
│ └── _locales/ # Локализация
│ └── en/messages.json # Тексты интерфейса на английском
│
└── bitrix24-help-developer.xcodeproj/ # Xcode проект
# Откройте проект в Xcode
open bitrix24-help-developer.xcodeproj
# Или соберите через командную строку
xcodebuild -project bitrix24-help-developer.xcodeproj -scheme bitrix24-help-developerChrome Extension не требует сборки — это готовые файлы в папке bitrix24-help-developer Chrome Extension/Resources. Для разработки:
- Внесите изменения в файлы расширения
- В Chrome перейдите в
chrome://extensions/ - Нажмите кнопку обновления (🔄) на карточке расширения
- Изменения применятся автоматически
При возникновении проблем:
- Проверьте, что расширение включено в настройках Safari (Настройки → Расширения)
- Убедитесь, что расширение имеет доступ к нужным сайтам
- Проверьте консоль разработчика Safari (⌥⌘C) на наличие ошибок
- Убедитесь, что вы находитесь на странице с формами Битрикс24
- Перезапустите приложение-обертку, если расширение не работает
- Проверьте, что расширение включено в
chrome://extensions/ - Убедитесь, что расширение имеет доступ к нужным сайтам (проверьте разрешения)
- Проверьте консоль разработчика (F12) на наличие ошибок
- Убедитесь, что вы находитесь на странице с формами Битрикс24
- Попробуйте перезагрузить страницу после установки расширения
[Укажите лицензию проекта]
[Укажите авторов проекта]