php Имитируетподключениемодулявыгрузкитоваровиз1СУТнасайтБитриксУС

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Имитируетподключениемодулявыгрузкитоваровиз1СУТнасайтБитриксУС相关的知识,希望对你有一定的参考价值。

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
header("Content-type:text/html; charset=windows-1251");
$_SESSION["BX_CML2_IMPORT"]["NS"]["STEP"]=0;

function js_str($s)
{
    return '"' . addcslashes($s, "\0..\37\"\\") . '"';
}

function js_array($array)
{
    $temp = array_map('js_str', $array);
    return '[' . implode(',', $temp) . ']';
}

$dir = '/var/www/upload/1c_catalog/goods/';
$dir_for_js = 'goods/';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
$files_list = [];
foreach ($files2 as $key => $value) {
    $dir_file = scandir($dir.$value);
    foreach ($dir_file as $key2 => $value2) {
        if (strpos($value2, 'import___') !== false) {
           $files_list[$value] = $dir_for_js.$value.'/'.$value2;
        }
    }
}
ksort($files_list);
$js_array = json_encode($files_list);

print('<pre>');
//print_r($files_list);
//print(js_array($files_list));
print('</pre>');

?>

<a href="javascript:start('import.xml')">импорт import.xml</a>
<a href="javascript:startGlobal()">импорт всех import.xml</a>
<a href="javascript:start('offers.xml')">импорт offers.xml</a>
<a href="javascript:start('prices.xml')"> импорт prices.xml</a>
<a href="javascript:start('rests.xml')"> импорт rests.xml</a>
<a style='color:red;' href="javascript:reset()">обнулить шаг</a>
<a style='color:red;' href="javascript:status='stop'">остановить импорт</a><hr>

<div id='main' style='display:none;width:400;font-size:12;border:1px solid #ADC3D5; padding:5'>
    <div id="log"></div>
    <div align=right id="load"></div>
</div>
<div id="timer"></div>

<style type="text/css">
    a {
        border: 1px solid;
        padding: 6px 10px;
        margin: 5px;
    }
</style>

<script type='text/javascript'>
<?php
echo "var file_list = ". $js_array . ";\n";
?>
</script>

<script type="text/javascript">
var
log = document.getElementById("log");
timer = document.getElementById("timer");
load = document.getElementById("load");
var zup_import=false;
//переменные таймера
m_second = 0;
seconds = 0;
minute = 0;
//переменные импорта
i = 1;
globalStep = 1;
a = '';
proccess = true;
status = "continue";

function createHttpRequest() {
    var httpRequest;
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){}
        try {
            httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e){}
    }
    return httpRequest;
}

//var tid = setTimeout(startGlobal, 1000);
var oneStart = 0;
function startGlobal() {
    if (oneStart == 0) {
        proccess = false;
        oneStart = 1;
    }
    $nameNextFile = file_list[globalStep];
    console.log('Идет обработка файла ' + $nameNextFile );
    if (proccess == false) {
        start($nameNextFile);
        globalStep++;
        if (!file_list[globalStep]) {
           abortTimer();
           load.innerHTML = "<b>Загрузка завершена</b>"
        }
    }
    tid = setTimeout(startGlobal, 1000);
}
function abortTimer() {
    clearTimeout(tid);
}

function start(file) {
    document.getElementById("main").style.display = 'block';
    load.innerHTML = "<b>Загрузка</b>...<img align='center' src='https://img-fotki.yandex.ru/get/483127/126771498.c/0_1fedb1_513c8853_orig' width='50' height='50'/>"
    i = 1;
    a = "";
    m_second = 0;
    seconds = 0;
    proccess = true;
    start_timer();
    timer.innerHTML = "";
    if (file == "company.xml") {
        zup_import = true;
    }
    log.innerHTML = "<b>Импорт " + file + "</b><hr>";
    query_1c(file);
}

function query_1c(file) {
    var import_1c=createHttpRequest();
    if (zup_import == true) {
        r = "/bitrix/admin/1c_intranet.php?type=catalog&mode=import&filename="+file;
    } else {
        r = "/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename="+file;
    }
    load.style.display = "block";
    import_1c.open("GET", r, true);
    import_1c.onreadystatechange = function() {
        a = log.innerHTML;
        if (import_1c.readyState == 4 && import_1c.status == 0) {
            error_text = "<em>Ошибка в процессе выгрузки</em><div style='width:270;font-size:11;border:1px solid black;background-color:#ADC3D5;padding:5'>Сервер упал и не вернул заголовков.</div>"
            log.innerHTML = a + "Шаг " + i + ": " + error_text;
            load.style.display = "none";
            status = "continue";
            alert("Import is crashed!");
        }

        if (import_1c.readyState == 4 && import_1c.status == 200) {
            if ((import_1c.responseText.substr(0,8) != "progress") && (import_1c.responseText.substr(0,7) != "success")) {
                error_text = "<em>Ошибка в процессе выгрузки</em><div style='width:270;font-size:11;border:1px solid black;background-color:#ADC3D5;padding:5'>"+import_1c.responseText + "</div>";
                log.innerHTML = a + "Шаг " + i + ": " + error_text;
                status = "error";
            } else {
                n = import_1c.responseText.lastIndexOf('s') + 1;
                l = import_1c.responseText.length;
                mess = import_1c.responseText.substr(n,l);
                log.innerHTML = a + "Шаг " + i + ": " + mess + " (" + seconds + " сек.)" + "<br>";
                seconds = 0;
                load.style.display = "none";
                i++;
            }
            if ((import_1c.responseText.substr(0,7) == "success") || (status == "error") || (status == "stop")) {
                load.style.display = "none";
                status = "continue"
                proccess = false;
                timer.innerHTML = "<hr>Время выгрузки: <b>" + minute + " мин. " + m_second + " сек.</b>";
            } else {
               query_1c(file);
            }
        }
    };
    import_1c.send(null);
}

function start_timer() {
    if (m_second == 60) {
        m_second = 0;
        minute += 1;
    }
    if (proccess == true) {
        seconds += 1;
        m_second += 1;
        setTimeout("start_timer()", 1000);
    }
}

function reset() {
    var rest = createHttpRequest();
    //q="bx_1c_import_lite.php";
    q = "local_import.php";
    rest.open("GET", q, true);
    rest.onreadystatechange = function() {
        if (rest.readyState == 4 && rest.status == 200) {
            alert("Шаг импорта обнулён!");
        }
    }
    rest.send(null);
}

</script>

以上是关于php Имитируетподключениемодулявыгрузкитоваровиз1СУТнасайтБитриксУС的主要内容,如果未能解决你的问题,请参考以下文章

php Имитируетподключениемодулявыгрузкитоваровиз1СУТнасайтБитриксУС

php Подключениеклассов(модулей)вБитрикс

php Автоподключениеклассов(модулей)вБитриксе

php обрезаемпоследнююбукву - делаемизмножественногочислаединственное

sh Редактироватьконфигвредакторепоумолчанию。 Еслинезаданпараметр--global,торедактируется.git / confi

csharp Получаематрибутиложимвпеременнуюпроекта