При переходе на новые релизы платформы 1С:Предприятие 8.3 (в частности, версию 8.3.26.1498 и выше) системные администраторы и пользователи столкнулись со странным поведением тонкого клиента. При попытке подключения к базе, опубликованной на веб-сервере (IIS или Apache), программа выдает критическую ошибку [json - src\json\src\JSONStreamImpl.cpp (22)] еще до появления окна авторизации. При этом через обычный браузер база открывается без каких-либо нареканий.
В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые алгоритмы ее решения, основываясь на практическом опыте специалистов и технических особенностях новой архитектуры платформы.
Для начала проанализируем ситуацию с технической точки зрения. Начиная с версии 8.3.26, компания «1С» существенно переработала внутренние протоколы обмена данными между тонким клиентом и веб-сервером. Теперь взаимодействие строится на базе более строгого формата JSON. Если раньше платформа могла «прощать» небольшие несоответствия в заголовках или путях, то новый парсер JSON ожидает абсолютно точного соответствия структуры ответов.
Ошибка в файле JSONStreamImpl.cpp сигнализирует о том, что тонкий клиент получил от сервера ответ, который он не смог разобрать как валидный JSON-объект. Часто это происходит, когда веб-сервер вместо ожидаемых данных возвращает HTML-страницу с ошибкой (например, 404 или 403) или некорректно сформированный заголовок из-за разницы в конфигурации.
Рассмотрим самую распространенную причину — чувствительность к регистру символов. В версии 8.3.26 адрес информационной базы стал case sensitive (чувствительным к регистру). Если ваша база опубликована на веб-сервере под именем Baza, а в настройках подключения у пользователя прописано baza (строчными буквами), вы получите ошибку JSON.
Проанализируем шаги для исправления этой ситуации:
MyBase.ibases.v8i для массового распространения настроек, проверим строку подключения:
Connect=ws="http://server-name/MyBase";
mybase или MYBASE, это необходимо исправить вручную.Посмотрим на пример из практики: база была опубликована как so. У пользователя в настройках было указано SO. После приведения к нижнему регистру (соответствующему публикации) ошибка мгновенно исчезла.
Выясним причину, почему обычное удаление и установка платформы часто не помогают. Проблема может крыться в механизме автоматического обновления (так называемая «Новая папка программных компонентов»). Если пользователь обновлял клиент через кнопку «Обновить и запустить», не имея прав администратора, компоненты могли установиться некорректно, оставив «мусор» в реестре и кэше.
Разберем алгоритм глубокой очистки системы:
regedit).1cv8 и удалим все связанные ветки. Внимание: это радикальный метод, требующий осторожности.HKEY_CURRENT_USER\Software\1C\1Cv8\3.0\WebServersCache
Именно здесь хранятся закэшированные данные о веб-серверах, которые могут конфликтовать с логикой парсера в версии 8.3.26.%AppData%\1C\1cv8\
%LocalAppData%\1C\1cv8\Проанализируем ситуацию, когда клиент падает из-за того, что сервер не сообщает тип контента. Если ваш IIS не настроен на отдачу файлов .json с правильным типом application/json, тонкий клиент может интерпретировать ответ как обычный текст или HTML, что вызовет сбой в JSONStreamImpl.cpp.
Для исправления выполним следующие действия в консоли управления IIS:
.json. Если его нет, добавим:
.jsonapplication/jsoniisreset).Если вышеперечисленные способы не помогают, разберем еще несколько критических моментов:
1. Влияние прокси-серверов. Если вы используете Nginx или другой обратный прокси, убедитесь, что он не «нормализует» URL (не переводит всё в нижний регистр автоматически). Тонкий клиент 8.3.26 крайне чувствителен к любым изменениям в структуре HTTP-пакета.
2. Серверный кэш. При обновлении платформы на сервере 1С обязательно очищайте серверный кэш (каталог snaccxt в профиле службы). Это исключит передачу устаревших метаданных клиенту.
3. Права доступа. Замечено, что ошибка чаще проявляется у пользователей с ограниченными правами. Попробуйте запустить тонкий клиент один раз «От имени администратора» — в некоторых случаях это позволяет платформе корректно завершить регистрацию компонентов в системе, после чего ошибка пропадает и при обычном запуске.
Таким образом, мы видим, что ошибка JSONStreamImpl.cpp (22) — это не просто случайный сбой, а следствие ужесточения требований платформы к качеству сетевого соединения и точности путей. Соблюдение регистра в URL и чистота установки клиентской части являются ключом к стабильной работе в новых релизах 1С.