/*
Скрипт для Битрикс24
В списке пользовательских полей CRM в таблице добавляется дополнительная колонка справа.
В этой колонке записывается id поля, который берется из ссылки в названии поля.
*/
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
async function start() {
await waitForElm('#fields_list')
var fieldList = document.getElementById('fields_list');
var rowCellCount, newCell, currentRow;
var children, fieldId;
// перебираем таблицу построчно
var i, j;
for (i = 0; i < fieldList.rows.length; i++) {
currentRow = fieldList.rows[i];
rowCellCount = currentRow.cells.length;
// ищем среди ячеек строки ту, где есть ссылка
for (j = 0; j < rowCellCount; j++) {
children = currentRow.cells[j].children;
// проверяем что в ячейке есть ссылка, не кнопка "Действия"
if(children.length > 0 && children[0].tagName == 'A' && children[0].title != 'Действия') {
fieldId = children[0].href.split('/')[8]; // берем id поля из ссылки
}
}
newCell = currentRow.insertCell(rowCellCount); // добавляем новую ячейку
if(currentRow.classList.contains('bx-grid-gutter')) { // игнорируем первую не отображаемую строку
} else if(currentRow.classList.contains('bx-grid-head')) { // добавляем текст в строку заголовка
newCell.innerText = 'ID поля';
} else if(currentRow.classList.contains('bx-grid-footer')) { // игнорируем футер
} else {
newCell.innerText = fieldId; // во все прочие строки таблицы добавляем найденный id
}
}
}
start()