# Отладка и исправление ошибок



# Логирование работы модуля

#### Общее

Для контроля работы модуля и своевременного выявления ошибок предусмотрена гибкая система логирования, фиксирующая все ключевые процессы.

Доступ к журналу логов и настройки логирования находятся в разделе «Журнал обмена» в настройках модуля:

[![log1.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/yCpPdP6mOyTn20XH-log1.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/yCpPdP6mOyTn20XH-log1.jpg)

С помощью настроек в данном разделе можно управлять объёмом сохраняемой информации и настраивать срок хранения логов.

Логи работы модуля сохраняются в отдельные файлы и условно делятся на два типа:

* Основные логи — содержат ключевую информацию, необходимую для общего контроля процесса синхронизации;
* Детальные логи — включают расширенные данные, используемые для диагностики и отладки.

Детальные логи рекомендуется включать только при необходимости, так как при длительной работе они могут занимать значительный объём дискового пространства.

В логах также могут содержаться дополнительные ссылки на файлы с расширенной информацией по отдельным операциям. Эти файлы формируются автоматически в процессе работы модуля и позволяют более детально проанализировать выполнение конкретных процессов.

Контролировать объём основных и детальных логов можно с помощью соответствующих настроек хранения.

Для этого предусмотрены два параметра:

1. Сколько дней хранить основные логи:

  [![log2.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/6O1TtxOOQhnFU6FP-log2.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/6O1TtxOOQhnFU6FP-log2.jpg)
  
  2. Сколько дней хранить детальные логи:

[![log4.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/rNxniExWl6Q950XM-log4.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/rNxniExWl6Q950XM-log4.jpg)


В этих полях указывается количество дней, в течение которых логи будут сохраняться. По истечении указанного срока устаревшие логи автоматически удаляются. 

Также в настройках модуля можно полностью отключить сбор детальных логов:

[![log3.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/TF4760sWJEiGqgVl-log3.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/TF4760sWJEiGqgVl-log3.jpg)

Кроме этого, логи разделены на отдельные категории — всего доступно 10 типов, соответствующих различным процессам и сущностям. В каждой категории доступны как основные, так и детальные логи.

Выбрать нужную категорию для просмотра можно с помощью выпадающего списка, в котором представлены все доступные типы логов:

[![log10.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/mOXm0ZxEg4lvI3eV-log10.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/mOXm0ZxEg4lvI3eV-log10.jpg)

В блоке просмотра логов доступны инструменты для управления отображением:

1. Календарь — позволяет выбрать дату, за которую будут отображаться основные или детальные логи:  
   [![log9.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/OLDZx5kiiRNd5quI-log9.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/OLDZx5kiiRNd5quI-log9.jpg)
   
2. Кнопка «Скачать» — позволяет выгрузить лог-файл за выбранную дату:
   [![log8.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/JdHTdosNZatvPt9y-log8.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/JdHTdosNZatvPt9y-log8.jpg)

3. Кнопка «Обновить» — используется для подгрузки актуальных данных логов без перезагрузки страницы.
   [![log7.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/t6DoOdfCUjgEWpid-log7.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/t6DoOdfCUjgEWpid-log7.jpg)

4. Переключатель режима — позволяет выбрать тип отображаемых логов: основные или детальные.
   [![log6.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/ZYoZEXckrCmfws1V-log6.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/ZYoZEXckrCmfws1V-log6.jpg)

Также важно учитывать, что вся информация из основных логов полностью дублируется в детальных логах, при этом детальные логи дополнительно содержат расширенные данные для отладки.

#### Сохранение отладочной информации о запросах к МойСклад

Иногда для более точной настройки модуля и контроля обращений к МойСклад требуется дополнительная информация о выполненных запросах, а также об отправленных и полученных заголовках.

Для этого в модуле предусмотрена отдельная настройка — «Сохранять в детальных логах полную статистику по запросам в МойСклад»:

[![log5.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/uZaj144cgIddRWvr-log5.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/uZaj144cgIddRWvr-log5.jpg)

Если опция отключена, в детальных логах будет сохраняться только общая информация о количестве и типах запросов. Данные о заголовках запросов и ответов при этом фиксироваться не будут.

#### Контроль размера и очистка логов

Файлы логов для разных процессов могут занимать различный объём. При большом количестве сущностей и операций размер логов может существенно увеличиваться, что влияет на использование дискового пространства.

Для контроля объёма логов предусмотрено несколько механизмов:

- настройка срока хранения логов (количество дней), после которого старые записи автоматически удаляются;
- дополнительные инструменты ручного управления логами.

В разделе «Журнал обмена» доступна вкладка «Управление логами»:

[![log13.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/qLw2DzXx6r6Km3l4-log13.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/qLw2DzXx6r6Km3l4-log13.jpg)

Используя эту вкладку можно: 
- удалять основные и детальные логи по отдельным процессам и сущностям;
- вручную очищать неиспользуемые логи для освобождения места на диске;
- использовать фильтр для просмотра объёма логов за определённый период и последующего удаления.

[![log14.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/lzF6FJadhSIaMiNK-log14.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/lzF6FJadhSIaMiNK-log14.jpg)

Также важно учитывать, что помимо настроек хранения и ручного управления логами, в модуле реализован дополнительный механизм автоматической очистки.

Если общий размер логов превышает 1 ГБ, запускается автоматическая очистка части файлов.

Данный механизм работает через отдельный агент, который выполняется один раз в день и контролирует общий объём логов, при необходимости уменьшая его.

# Проверка окружения и настройки модуля

#### Проверка 1С-Битрикс окружения

Для исключения ошибок, связанных с настройками 1С-Битрикс, серверного окружения и общей работоспособности системы, в первую очередь рекомендуется выполнить встроенную проверку окружения, доступную в 1С-Битрикс «Управление сайтом».

Некоторые выявленные проблемы могут не оказывать прямого влияния на работу модуля, однако во всех случаях рекомендуется добиться успешного прохождения всех тестов, выполняемых системой в данном разделе.

Выполнить такую проверку можно в специальном разделе административной части 1С-Битрикс:

[![environment1.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/n7xVuzbE3oqtDAbl-environment1.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/n7xVuzbE3oqtDAbl-environment1.jpg)

#### Проверка совместимости настроек 1C-Битрикс и корректности настройки модуля.

В настройках модуля синхронизации предусмотрен дополнительный инструмент для проверки корректности его конфигурации и совместимости с настройками 1С-Битрикс (например, с модулем «Торговый каталог»).

Данный инструмент позволяет выявить и исключить типовые ошибки, а также заранее предотвратить возможные проблемы, связанные с работой модуля.

Рекомендуется, чтобы все проверки были успешно пройдены — это подтверждается отображением зелёного статуса для каждого пункта после выполнения тестирования.

Запуск проверки осуществляется в разделе "Частые вопросы" в настройках модуля:

[![environment2.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/2tI1o9E6eEDbp5qy-environment2.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/2tI1o9E6eEDbp5qy-environment2.jpg)

После прохождения тестирования, результат будет отображен в этой же вкладке:

[![environment3.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/11xXnh2TqlEX7TXI-environment3.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/11xXnh2TqlEX7TXI-environment3.jpg)


#### Проверка доступности API МойСклад с сервера сайта

В некоторых случаях проблемы с работой модуля могут быть связаны с ограничениями или затруднениями доступа с сервера, на котором размещён сайт, к МойСклад.

Такие ограничения могут возникать как на стороне МойСклад, так и на стороне сервера.

Для их выявления можно использовать специальный скрипт, который запускается через командную PHP-строку в административной части 1С-Битрикс (https://ВашСайт.ru/bitrix/admin/php_command_line.php?lang=ru):

[![environment4.jpg](https://doc.aprix.ru/uploads/images/gallery/2026-05/scaled-1680-/Gke0x4kN8p13BEVQ-environment4.jpg)](https://doc.aprix.ru/uploads/images/gallery/2026-05/Gke0x4kN8p13BEVQ-environment4.jpg)

Для проверки доступности API МойСклад необходимо выполнить приведённый ниже скрипт в этой командной строке:

``` PHP
$url = "https://api.moysklad.ru/api/remap/1.2/entity/product?limit=1";

echo "🚦 ОБЩАЯ ДИАГНОСТИКА ДОСТУПНОСТИ\n";
echo "🔗 URL: {$url}\n";

// === ОС и PHP ===
echo "\n🖥️ СИСТЕМНАЯ ИНФОРМАЦИЯ:\n";
echo "- ОС: " . PHP_OS . "\n";
echo "- PHP: " . PHP_VERSION . "\n";
echo "- exec() доступен: " . (function_exists('exec') ? "да" : "нет") . "\n";
echo "- shell_exec() доступен: " . (function_exists('shell_exec') ? "да" : "нет") . "\n";

// === Парсинг URL ===
$parsedUrl = parse_url($url);
if (!is_array($parsedUrl) || empty($parsedUrl['host'])) {
    echo "❌ Ошибка: невозможно распарсить хост из URL.\n";
    return;
}
$host = $parsedUrl['host'];

// === DNS ===
echo "\n🌐 DNS-ПРОВЕРКА:\n";
$dnsStart = microtime(true);
$ip = gethostbyname($host);
$dnsTime = round((microtime(true) - $dnsStart) * 1000, 2);

if ($ip === $host) {
    echo "❌ DNS: не удалось разрешить {$host} в IP.\n";
} else {
    echo "✅ DNS: {$host} → {$ip} ({$dnsTime} мс)\n";
}

// === TCP-соединение ===
echo "\n🔌 TCP-ПОРТ 443:\n";
if (function_exists('fsockopen')) {
    $errno = 0;
    $errstr = '';
    $start = microtime(true);
    $conn = @fsockopen($host, 443, $errno, $errstr, 5);
    $elapsed = round((microtime(true) - $start) * 1000, 2);
    if ($conn) {
        echo "✅ Порт 443 открыт ({$elapsed} мс)\n";
        fclose($conn);
    } else {
        echo "❌ Порт 443 закрыт или фильтруется: {$errstr} ({$errno})\n";
    }
} else {
    echo "⚠️ Расширение fsockopen недоступно.\n";
}

// === CURL ===
echo "\n📡 CURL-ПРОВЕРКА:\n";
if (function_exists('curl_init')) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

    curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlErr = curl_error($ch);
    $curlErrNo = curl_errno($ch);
    $connectTime = round(curl_getinfo($ch, CURLINFO_CONNECT_TIME) * 1000, 2);
    $totalTime = round(curl_getinfo($ch, CURLINFO_TOTAL_TIME) * 1000, 2);
    curl_close($ch);

    if ($httpCode > 0) {
        echo "✅ Ответ: HTTP {$httpCode}\n";
        echo "⏱ Время соединения: {$connectTime} мс\n";
        echo "⏱ Общее время: {$totalTime} мс\n";
    } elseif (!empty($curlErr)) {
        echo "❌ CURL ошибка ({$curlErrNo}): {$curlErr}\n";
    } else {
        echo "❌ CURL: неизвестная ошибка.\n";
    }
} else {
    echo "⚠️ Расширение curl не установлено.\n";
}

// === PING (условный вывод) ===
if (function_exists('exec')) {
    $pingOutput = [];
    exec("ping -c 4 " . escapeshellarg($host), $pingOutput, $pingStatus);
    if (!empty($pingOutput) && strpos(implode("\n", $pingOutput), 'icmp_seq=') !== false) {
        echo "\n📶 PING:\n";
        echo implode("\n", $pingOutput) . "\n";
    }
}

// === Traceroute (условный вывод) ===
if (function_exists('exec')) {
    $traceroutePath = trim(shell_exec("which traceroute"));
    if (!empty($traceroutePath)) {
        $tracerouteOutput = [];
        exec("traceroute " . escapeshellarg($host), $tracerouteOutput, $trStatus);
        if (!empty($tracerouteOutput)) {
            echo "\n🛰️ TRACEROUTE:\n";
            echo implode("\n", $tracerouteOutput) . "\n";
        }
    }
}

echo "\n🟢 Диагностика завершена.\n";
```

После запуска команды, вы получите такой ответ:
[![sUMQbLsByH.png](https://doc.aprix.ru/uploads/images/gallery/2025-08/scaled-1680-/ioQBqEx5wd2tgIRR-sumqblsbyh.png)](https://doc.aprix.ru/uploads/images/gallery/2025-08/ioQBqEx5wd2tgIRR-sumqblsbyh.png)

Если в результате выполнения скрипта отображаются ошибки, это может свидетельствовать о наличии ограничений со стороны хостинга или МойСклад.