Как исправить ошибку «Значение: '' не соответствует простому типу: anyURI» при работе 1С через веб-сервер

Системный администратор 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При работе с базами данных 1С, опубликованными на веб-серверах (IIS или Apache), лаунчер для 1C с проверкой доменной авторизации поможет избежать проблем, с которыми системные администраторы и пользователи иногда сталкиваются в виде специфической ошибки XDTO. Она возникает внезапно: при попытке входа через тонкий клиент после ввода логина и пароля система выдает сообщение: «Несоответствие типов XDTO по причине: Ошибка проверки данных XDTO: Значение: '' не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}anyURI». При этом вход через обычный браузер (веб-клиент) может работать абсолютно штатно.

Выясним причину возникновения ошибки

Для начала проанализируем ситуацию с технической точки зрения. Ошибка указывает на то, что в процессе обмена данными между тонким клиентом 1С и веб-сервером один из XML-пакетов содержит пустое значение там, где по схеме XDTO должен быть валидный идентификатор ресурса (URI). Поскольку anyURI не может быть пустой строкой в данной структуре, парсер XDTO на стороне клиента обрывает соединение (для глубокой работы со схемами может потребоваться автоматическое формирование XSD-пакета).

Тот факт, что в браузере база открывается, а в тонком клиенте — нет, говорит нам о различиях в механизмах обработки сетевого трафика. Тонкий клиент более чувствителен к целостности XDTO-пакетов и корректности HTTP-заголовков. Часто проблема кроется в промежуточном оборудовании или программном обеспечении, которое «инспектирует» или «кэширует» трафик, искажая его содержимое. Проверить доступ к метаданным в обход тонкого клиента поможет универсальный Python-коннектор к 1С.

Решение 1: Настройка сетевых экранов и прокси-серверов (TMG ForeFront и аналоги)

Как показывает практика и опыт участников профессиональных сообществ, одной из главных причин является работа корпоративных шлюзов, таких как Microsoft ForeFront Threat Management Gateway (TMG). Эти системы могут некорректно обрабатывать специфические запросы 1С.

Разберем алгоритм действий для администратора сети:

  1. Проанализируем настройки веб-кэширования на сервере шлюза. Если используется TMG, необходимо полностью отключить веб-кэширование для трафика, идущего к серверу 1С. Кэширование может отдавать клиенту устаревшие или неполные XML-схемы, что и приводит к появлению пустой строки вместо URI.
  2. Проверим правила инспекции HTTP. Некоторые фильтры безопасности могут вырезать «подозрительные», по их мнению, заголовки или части тела запроса.
  3. Если проблема наблюдается только у определенных пользователей, проверим настройки прокси в Windows (параметры Internet Explorer). Попробуем временно отключить опцию «Автоматическое определение параметров» в настройках локальной сети.

Решение 2: Диагностика антивирусного ПО и SSL-инспекции

Современные антивирусы (например, Kaspersky Endpoint Security) часто используют технологию перехвата защищенных соединений (HTTPS). Рассмотрим подробнее, как это влияет на 1С:

Антивирус подменяет сертификат сервера своим, расшифровывает трафик для анализа и упаковывает его обратно. В процессе этой «переупаковки» сложные структуры XDTO могут быть повреждены. Если тонкий клиент получает пустой ответ на запрос схемы метаданных, мы увидим обсуждаемую ошибку.

Чтобы исключить этот фактор, выполним следующие шаги:

  1. Добавим адрес веб-сервера 1С в исключения проверки защищенных соединений (HTTPS) в настройках антивируса на клиентской машине.
  2. В некоторых случаях требуется добавить исполняемый файл тонкого клиента 1cv8c.exe в список доверенных программ с разрешением не сканировать сетевой трафик.

Решение 3: Корректная публикация на IIS и управление пулами приложений

Если сетевые экраны ни при чем, проанализируем состояние самого веб-сервера. Иногда ошибка возникает из-за «зависания» или некорректного состояния публикации базы.

Выполним процедуру перепубликации по шагам:

  1. Запустим конфигуратор от имени администратора.
  2. Перейдем в меню «Администрирование» — «Публикация на веб-сервере».
  3. Нажмем кнопку «Удалить публикацию» и закроем окно.
  4. В консоли управления IIS (Internet Information Services) проверим, что виртуальное приложение базы действительно исчезло.
  5. Важный момент: очистим пул приложений. Рекомендуется создать для каждой базы 1С отдельный пул приложений, чтобы их настройки не влияли друг на друга.
  6. Снова зайдем в конфигуратор и выполним публикацию заново. Убедимся, что установлены флажки «Публиковать тонкий клиент и стандартный интерфейс» и «Публиковать XDTО-сервисы».

Решение 4: Проверка компонентов сервера IIS (Static Content)

Тонкому клиенту для работы требуются файлы статического содержимого (схемы .xsd, конфигурационные файлы). Если на сервере IIS не установлен компонент «Статическое содержимое» (Static Content), сервер не сможет отдать эти файлы, и клиент получит пустую строку в ответ на запрос ресурса.

Проанализируем настройки Windows Server:

  1. Откроем «Диспетчер серверов» и перейдем в раздел добавления ролей и компонентов.
  2. В разделе Web Server (IIS) -> Web Server -> Common HTTP Features проверим наличие установленной отметки на пункте Static Content.
  3. Если компонент отсутствует — установим его и перезапустим службу IIS командой iisreset в командной строке.

Решение 5: Очистка кэша WinHTTP и настроек клиента

Тонкий клиент использует системную библиотеку WinHTTP для связи с сервером. У этой библиотеки есть собственный кэш, который не всегда очищается стандартными средствами 1С. Рассмотрим, как принудительно сбросить эти настройки.

Запустим командную строку от имени администратора и выполним последовательно команды:


netsh winhttp reset proxy
netsh interface ipv4 reset
netsh winsock reset

После этого рекомендуется очистить локальный кэш пользователя 1С, удалив содержимое папок:

Решение 6: Проверка файла default.vrd

Файл default.vrd управляет параметрами публикации. Если в нем некорректно прописаны URI для внешних компонентов или расширений, это вызовет ошибку anyURI.

Откроем файл default.vrd (он находится в папке публикации на сервере) любым текстовым редактором и внимательно проанализируем структуру. Пример корректного начала файла:


<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/BaseName"
       ib="Srvr="ServerName";Ref="BaseName";">

Если в файле присутствуют пустые атрибуты в секциях <ws> или <standardMethod>, это может быть источником проблемы. В таком случае лучше пересоздать публикацию через конфигуратор, как было описано выше.

Подводя итог, можно сказать, что ошибка «Значение: '' не соответствует простому типу: anyURI» чаще всего является следствием внешнего вмешательства в HTTP-трафик. Начните диагностику с проверки сетевых фильтров, прокси-серверов и антивирусов, и только после этого переходите к манипуляциям с настройками самого веб-сервера IIS или Apache.

← На главную