Рубрики
JS

Удаление повторяющихся объектов в массиве

function removeDuplicates(arr) {

    const result = [];
    const duplicatesIndices = [];

    // Перебираем каждый элемент в исходном массиве
    arr.forEach((current, index) => {
    
        if (duplicatesIndices.includes(index)) return;
    
        result.push(current);
    
        // Сравниваем каждый элемент в массиве после текущего
        for (let comparisonIndex = index + 1; comparisonIndex < arr.length; comparisonIndex++) {
        
            const comparison = arr[comparisonIndex];
            const currentKeys = Object.keys(current);
            const comparisonKeys = Object.keys(comparison);
            
            // Проверяем длину массивов
            if (currentKeys.length !== comparisonKeys.length) continue;
            
            // Проверяем значение ключей
            const currentKeysString = currentKeys.sort().join("").toLowerCase();
            const comparisonKeysString = comparisonKeys.sort().join("").toLowerCase();
            if (currentKeysString !== comparisonKeysString) continue;
            
            // Проверяем индексы ключей
            let valuesEqual = true;
            for (let i = 0; i < currentKeys.length; i++) {
                const key = currentKeys[i];
                if ( current[key] !== comparison[key] ) {
                    valuesEqual = false;
                    break;
                }
            }
            if (valuesEqual) duplicatesIndices.push(comparisonIndex);
            
        } // Конец цикла
    });  
    return result;
}

Источник: https://www.internet-technologies.ru/articles/udalenie-povtoryayuschihsya-obektov-iz-massiva-js.html

Рубрики
Bitrix disk

Получить файл из Диск по ID файла

<?php  function getRealFileFromDiskById($diskId) {     \Bitrix\Main\Loader::includeModule(‘disk’);     $resObjects = \Bitrix\Disk\Internals\ObjectTable::getList([             ‘select’ => [‘NAME’, ‘FILE_ID’],             ‘filter’ => [                 ‘=ID’ => $diskId,             ]     ]);     if ($arObject = $resObjects->fetch()) {         $arObject[‘PATH’] = CFile::GetPath($arObject[‘FILE_ID’]);         $arObject[‘FULL_PATH’] = $_SERVER[‘DOCUMENT_ROOT’].$arObject[‘PATH’];         return $arObject; }     return false; } ?>

Источник: https://divasoft.ru/blog/find-the-file-from-bitrix24-disk-by-id/

Источник: https://nikaverro.ru/blog/bitrix/api-disk/

Рубрики
Bitrix

Генератор документов

Источник: https://dev.1c-bitrix.ru/api_d7/bitrix/documentgenerator/document/index.php

$template_id = 3; //id шаблона документа
$entity_id = 147; //id сущности (лида / сделки / элемента смарт-процесса и т.п.), по которой нужно создать документ

//загрузка шаблона
$template = \Bitrix\DocumentGenerator\Template::loadById($template_id);
//далее нужно указать на конкретный класс сущности CRM, чтобы установить тип провайдера. Вместо Lead может быть Deal, Company и т.п.
//для смарт-процесса вместо Lead поставить Dynamic130 (где 130 - ENTITY_TYPE_ID смарт-процесса)
//даже если по запросу списка провайдеров выводит \Dynamic130_2 или подобное, пишется сокращенный вариант
$template->setSourceType(\Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Lead::class);
//создание документа
$document = \Bitrix\DocumentGenerator\Document::createByTemplate($template, $entity_id);
//устанавливаем значения переменных в шаблоне
$fields = array(
    'MyCompanyTitle' => array('VALUE' => 'ООО Наша компания'),
    'MyCompanyRequisiteRqDirector' => array('VALUE' => 'Вася Мужичков'),
);
$document->setFields($fields);
//сохраняем файл
$result = $document->getFile();
if($result->isSuccess()){
    $diskFileID = $result->getData()['emailDiskFile'];
}
echo $diskFileID;
Рубрики
Bitrix

Получить ID группы по символьному коду

$result = \Bitrix\Main\GroupTable::getList(array(
    'select'  => array('NAME','ID','STRING_ID'), // выберем название, идентификатор, символьный код, сортировку
    'filter'  => ["STRING_ID" => "ADMIN"]
));
while ($arGroup = $result->fetch()) {

    print_r($arGroup);

}
Рубрики
Bitrix

UploadFile event

https://lyrmin.ru/poleznoe/opyt-razrabotki-v-bitriks/zagruzka-faylov-na-server-s-pomoshchyu-drag-drop-sobytiya-dlya-obrabotki.html

<?$APPLICATION->IncludeComponent("bitrix:main.file.input", "drag_n_drop",
array(
"INPUT_NAME" => "CSV_FILE",
"MULTIPLE" => "N",
"MODULE_ID" => "main",
"MAX_FILE_SIZE" => "",
"ALLOW_UPLOAD" => "F",
"ALLOW_UPLOAD_EXT" => "csv"
),
false
);?>
<script>
BX.addCustomEvent('BFileDLoadFormControllerInit', function (e) {
console.log('BFileDLoadFormControllerInit', e);
});
BX.addCustomEvent('BFileDSelectFileDialogLoaded', function (e) {
console.log('BFileDSelectFileDialogLoaded', e);
});
BX.addCustomEvent('BFileDLoadFormController', function (e) {
console.log('BFileDLoadFormController', e);
});

BX.addCustomEvent('uploadStart', function (e) {
console.log('uploadStart', e);
});
BX.addCustomEvent('progress', function (e) {
console.log('progress', e);
});
BX.addCustomEvent('uploadFinish', function (e) {
console.log('uploadFinish', e);
});
BX.addCustomEvent('OnFileUploadSuccess', function (e) {
console.log('OnFileUploadSuccess', e);
});
BX.addCustomEvent('OnFileUploadFail', function (e) {
console.log('OnFileUploadFail', e);
});
BX.addCustomEvent('OnFileUploadRemove', function (e) {
console.log('OnFileUploadRemove', e);
});
</script>
Рубрики
OpenServer

Не удалось запустить MySQL-8.0-Win10 2023-01-24 01:32:04 Сбой запуска openserver

Только что победил эту проблему. Рассказываю.

1) Настройки -> Сервер
2) Ставим птицу «Запускать сервер в отладочном режиме»
3) «Запустить»
4) В папке …\modules\database\MySQL-8.0-Win10 появляется bat-файл debug.bat
5) «Выход», закрываем сервер
6) Запускаем debug.bat в его папке, я запускал в FAR’е
7) debug.bat запускает …\bin\mysqld.exe с параметрами
8) Молотит около 5-6 минут, обновляя версию с 8.0.28 до 8.0.29
9) Как закончит работу, запускаем сервер, отключаем отладочный режим
10) «Запустить», получаем долгожданный зелёный флажок, при этом debug.bat исчезает

Источник: https://ospanel.io/forum/viewtopic.php?t=431&start=1900

Рубрики
JQuery JS

Создать HTML тег и вставить на страницу

https://itchief.ru/javascript/jquery-add-delete-elements#element-create

Рубрики
Bitrix

Отправить почту из Битрикса

Jan 12 06:58:04 host=smtp.office365.com tls=on auth=on user=»i@a.su from=i@a.su recipients=a@b.ru errormsg=’the server sent an invalid reply’ exitcode=EX_PROTOCOL

https://dobrohost.ru/faq/msmtp.html

https://www.vdgb.ru/blog/kak-podklyuchit-pochtu-office365-k-bitriks24/

Рубрики
Bitrix

Вызвать методы Компонентов и Модулей по ajax

https://prominado.ru/blog/novye-ajax-zaprosy-v-bitrix/

Рубрики
Bitrix

runComponentAction

https://machaon-dev.github.io/blog/posts/bitrix-ajax-controllers/