При переходе на новые версии платформы 1С:Предприятие (начиная с 8.3.18.1483 и выше) многие разработчики мобильных приложений столкнулись с неприятной проблемой. При попытке загрузить конфигурацию в мобильную платформу или в процессе публикации на веб-сервере система выдает критическую ошибку: «поле объекта не обнаружено (item)». Эта ошибка блокирует возможность обновления мобильного клиента и делает невозможной дальнейшую разработку до её устранения.
В этой статье мы подробно разберем причины возникновения этой ситуации и изучим пошаговые алгоритмы её решения, основываясь на опыте практикующих разработчиков и особенностях механизмов 1С.
Проанализируем ситуацию: почему ошибка возникает именно на версиях 8.3.18.х? Дело в том, что в этой ветке платформы компания 1С существенно переработала механизмы сериализации метаданных и структуру хранения разрешений (Permissions) мобильного приложения. Теперь описание требуемых разрешений (таких как доступ к камере, контактам или геопозиции) хранится в файле конфигурации в ином формате XML.
Когда мы пытаемся опубликовать конфигурацию, созданную или измененную в более старых версиях, парсер новой платформы ищет узел item в коллекции разрешений. Если структура данных осталась «старой», этого узла в ожидаемом месте не оказывается, что и приводит к программному исключению. Давайте рассмотрим, как привести структуру конфигурации в соответствие с требованиями новой платформы.
Как показывает практика, наиболее быстрым и действенным способом является полное удаление информации о разрешениях из свойств информационной базы и их повторное добавление. Это заставляет платформу перезаписать XML-структуру манифеста в новом формате.
Разберем этот процесс по шагам:
Этот метод исправляет внутренние несоответствия в файле ManagedApplication.mdo, добавляя те самые недостающие элементы item.
Если мы используем специализированный инструмент «Сборщик мобильных приложений», крайне важно, чтобы его версия соответствовала версии используемой платформы. Проанализируем ситуацию: использование сборщика версии 8.3.17 совместно с платформой 8.3.18 практически гарантированно приведет к ошибке, так как логика формирования пакета (APK или IPA) была изменена.
Рассмотрим порядок действий:
Иногда ошибка «залипает» в кэше веб-сервера (IIS или Apache) или во временных файлах платформы. Посмотрим, как выполнить «чистую» публикацию:
C:\inetpub\wwwroot\myapp\).%TEMP%), так как именно там 1С формирует временные XML-описания при сборке манифеста.Если стандартные средства визуального интерфейса не помогают, мы можем прибегнуть к «хирургическому» вмешательству в структуру метаданных. Разберем, как проанализировать XML-файлы конфигурации:
Выгрузим конфигурацию в файлы (Конфигурация — Выгрузить конфигурацию в файлы...). Нам необходимо найти файлы, описывающие свойства мобильного приложения. Обычно это связано с узлом RequiredMobileApplicationPermissions.
Проанализируем пример корректной структуры XML, которую ожидает новая платформа:
<RequiredMobileApplicationPermissions>
<item>
<Permission>Multimedia</Permission>
<Use>true</Use>
</item>
<item>
<Permission>Location</Permission>
<Use>true</Use>
</item>
</RequiredMobileApplicationPermissions>
Если в ваших файлах вместо структуры с тегом <item> присутствуют просто перечисления или пустые узлы, их нужно привести к указанному виду или просто удалить содержимое секции, чтобы потом перевыставить разрешения в Конфигураторе после загрузки файлов обратно.
Не забудем про стандартные процедуры обслуживания базы данных. Выполнение команды «Тестирование и исправление» (с включенной проверкой логической целостности) помогает выявить скрытые ошибки в структуре объектов, которые могут косвенно влиять на процесс выгрузки конфигурации в мобильное устройство.
Также стоит обратить внимание на выбор версии платформы в параметрах Конфигуратора (Сервис — Параметры — Запуск 1С:Предприятия — Основные). Убедимся, что там жестко не прописана старая версия платформы, которая может конфликтовать с установленной мобильной платформой на устройстве.
Подведем итог: Ошибка «поле объекта не обнаружено (item)» является следствием эволюции мобильной платформы 1С. Основным решением остается пересоздание списка разрешений в свойствах конфигурации и синхронизация версий сборщика и основной платформы. Следуя нашим пошаговым инструкциям, вы сможете восстановить работоспособность вашего мобильного приложения и продолжить разработку на актуальных версиях системы 1С.