function processDataFromMoysklad($userDate)
{
    $orderUrl = "CustomerOrder";
    $goodUrl = "Good";
    $serviceUrl = "Service";
    $courierUrl = "Employee";
    $warehouseUrl = "Warehouse";
    // Getting data from Moysklad
    $courierData = getXmlFromMoysklad($courierUrl, "");
    $goodData = getXmlFromMoysklad($goodUrl, "");
    $serviceData = getXmlFromMoysklad($serviceUrl, "");
    $warehouseData = getXmlFromMoysklad($warehouseUrl, "");
    $date = new DateTime($userDate, new DateTimeZone("Europe/Moscow"));
    $filterTimeTomorrow = (int) $date->format("Ymd");
    $date = new DateTime($userDate . "+1 day", new DateTimeZone("Europe/Moscow"));
    $filterTimeAfterTomorrow = (int) $date->format("Ymd");
    $filterOrderString = urlencode("deliveryPlannedMoment>" . $filterTimeTomorrow . "040000;" . "deliveryPlannedMoment<" . $filterTimeAfterTomorrow . "040000");
    $orderData = getXmlFromMoysklad($orderUrl, "?filter=" . $filterOrderString);
    // Parsing XML
    try {
        $goodXml = new SimpleXmlElement($goodData);
    } catch (Exception $e) {
        echo "Возникла ошибка при загрузке данных о товарах с Moysklad. Пожалуйста, попробуйте еще раз.";
        return;
    }
    $goodArray = parseXml($goodXml, "good");
    $GLOBALS["goodArray"] = $goodArray;
    try {
        $serviceXml = new SimpleXmlElement($serviceData);
    } catch (Exception $e) {
        echo "Возникла ошибка при загрузке данных об услугах с Moysklad. Пожалуйста, попробуйте еще раз.";
        return;
    }
    $serviceArray = parseXml($serviceXml, "service");
    $GLOBALS["serviceArray"] = $serviceArray;
    try {
        $orderXml = new SimpleXmlElement($orderData);
    } catch (Exception $e) {
        echo "Возникла ошибка при загрузке данных о заказах покупателей с Moysklad. Пожалуйста, попробуйте еще раз.";
        return;
    }
    $orderArray = parseXml($orderXml, "customerOrder");
    $GLOBALS["orderArray"] = $orderArray;
    try {
        $warehouseXml = new SimpleXMLElement($warehouseData);
    } catch (Exception $e) {
        echo "Возникла ошибка при загрузке данных о складах с Moysklad. Пожалуйста, попробуйте еще раз.";
        return;
    }
    $warehouseArray = parseXml($warehouseXml, "warehouse");
    $GLOBALS["warehouseArray"] = $warehouseArray;
    try {
        $courierXml = new SimpleXmlElement($courierData);
    } catch (Exception $e) {
        echo "Возникла ошибка при загрузке данных по курьерам с Moysklad. Пожалуйста, попробуйте еще раз.";
        return;
    }
    $courierArray = parseXml($courierXml, "courier");
    $GLOBALS["courierArray"] = $courierArray;
}
function parseXml($xml, $dataType)
{
    $contragentUrl = "Company";
    $array = array();
    switch ($dataType) {
        case "customerOrder":
            $ordersForThisDateCounter = 0;
            $ordersValidForThisDateCounter = 0;
            $ordersWithValidContragentForThisDateCounter = 0;
            foreach ($xml->customerOrder as $customerOrder) {
                $isDeleted = false;
                foreach ($customerOrder->children() as $child) {
                    if ($child->getName() == "deleted") {
                        $isDeleted = true;
                    }
                }
                if (!$isDeleted) {
                    $ordersForThisDateCounter++;
                    $newOrder = new CustomerOrder($customerOrder);
                    if ($newOrder->areAllFieldsValid()) {
                        $ordersValidForThisDateCounter++;
                        $filterCompanyString = urlencode("uuid=" . $newOrder->getSourceAgentUuid());
                        $contragentData = getXmlFromMoysklad($contragentUrl, "?filter=" . $filterCompanyString);
                        try {
                            $contragentXml = new SimpleXmlElement($contragentData);
                            $address = (string) $contragentXml->company->requisite["actualAddress"];
                            $contragentName = (string) $contragentXml->company["name"];
                            if (!empty($address)) {
                                $ordersWithValidContragentForThisDateCounter++;
                                $newOrder->setAddress($address);
                                $newOrder->setContragentName($contragentName);
                                $array[$newOrder->getUuid()] = $newOrder;
                                $GLOBALS["numberOfOrders"]++;
                            }
                        } catch (Exception $e) {
                            //echo "Выброшено исключение: ?filter=".$filterCompanyString."<br>";
                        }
                    }
                }
            }
            $GLOBALS["ordersForThisDateCounter"] = $ordersForThisDateCounter;
            $GLOBALS["ordersValidForThisDateCounter"] = $ordersValidForThisDateCounter;
            $GLOBALS["ordersWithValidContragentForThisDateCounter"] = $ordersWithValidContragentForThisDateCounter;
            break;
        case "good":
            foreach ($xml->good as $good) {
                $newGood = new Good($good);
                $array[$newGood->getUuid()] = $newGood;
            }
            break;
        case "service":
            foreach ($xml->service as $service) {
                $newServiceUuid = (string) $service->uuid;
                $newServiceName = (string) $service["name"];
                $array[$newServiceUuid] = $newServiceName;
            }
            break;
        case "courier":
            foreach ($xml->employee as $courier) {
                $newCourier = new Courier($courier);
                if ($newCourier->areAllFieldsValid() && $newCourier->getIsCourier() && $newCourier->getIsActive()) {
                    $array[$newCourier->getUuid()] = $newCourier;
                }
            }
            break;
        case "warehouse":
            foreach ($xml->warehouse as $warehouse) {
                $newWarehouse = new Warehouse($warehouse);
                $array[$newWarehouse->getUuid()] = $newWarehouse;
            }
            break;
    }
    return $array;
}