Как решить проблему неработающего форматированного документа в мобильном клиенте 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разберем одну из распространенных и вызывающих много вопросов проблем, с которой сталкиваются разработчики при работе с мобильным клиентом 1С – некорректная работа поля типа «Форматированный документ». Мы проанализируем различные проявления этой ошибки, возможные причины и существующие решения или обходные пути.

Проблема неработающего форматированного документа в мобильном клиенте 1С: Подробное описание

Когда мы пытаемся использовать элемент формы с типом ФорматированныйДокумент в мобильном клиенте 1С, многие из нас сталкиваются с критической ошибкой, блокирующей работу приложения. Основное проявление этой проблемы – возникновение ошибок преобразования данных XDTO при любом контекстном вызове сервера, например, при попытке сохранения формы, содержащей такой реквизит. Даже минимальная форма, без какого-либо кода, содержащая только реквизит типа ФорматированныйДокумент, вызывает сбой.

Типичное сообщение об ошибке выглядит следующим образом:


Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине: Ошибка преобразования данных XDTO: НачалоСвойства: v Форма: Элемент Тип: {
по причине: Ошибка преобразования данных XDTO: Значение: None Тип:
по причине: Несоответствие типов XDTO: Тип '{ не соответствует типу '{ Показать

Эта ошибка указывает на фундаментальную проблему в обмене данными между мобильным клиентом и сервером при попытке сериализации/десериализации значения ФорматированногоДокумента.

Дополнительные проблемы и проявления «сырого» функционала

Помимо критических XDTO-ошибок, пользователи обнаруживают ряд других проблем, которые свидетельствуют о «сырости» функционала ФорматированногоДокумента в мобильной платформе 1С. Рассмотрим подробнее эти проявления:

  1. Недоступность для редактирования: Мы обнаруживаем, что если документ пуст при открытии формы, то поле ФорматированногоДокумента может быть недоступно для редактирования, как если бы для него было установлено свойство ТолькоПросмотр = Истина.
  2. Нестабильное программное добавление текста: Если мы пытаемся программно добавить текст в ФорматированныйДокумент при открытии формы, поведение становится непредсказуемым. Иногда текст не добавляется вовсе, иногда появляется с задержкой в несколько секунд, после чего документ становится доступным для редактирования. В отладчике текст может отображаться как добавленный, но на экране клиента его может не быть или он появится со временем.
  3. Непостоянное отображение и работа командной панели: Даже когда текст успешно добавлен и поле доступно для редактирования, командная панель ФорматированногоДокумента (дополнительная строка над клавиатурой) может не появляться или работать крайне нестабильно. Команды (например, «жирность», «курсив») либо не работают совсем, либо срабатывают через раз, что делает редактирование практически невозможным.
  4. «Улетающие» привязки элементов: После первого корректного открытия формы с ФорматированнымДокументом, при последующих открытиях может наблюдаться, что элемент становится доступным для редактирования без явной причины, открывается экранная клавиатура, а привязки других элементов формы нарушаются.
  5. Неработающие URL-ссылки: Внутри ФорматированногоДокумента могут не работать URL-ссылки, что ограничивает его интерактивный потенциал, хотя изображения обычно отображаются корректно.

Подтверждение проблемы и диагностические шаги

Многие из нас, столкнувшись с этой проблемой, предприняли ряд шагов для её локализации и подтверждения:

  1. Минимальная форма без кода: Мы создавали максимально упрощенные формы, содержащие только реквизит типа ФорматированныйДокумент, и убеждались, что проблема воспроизводится даже без какого-либо программного кода в модуле объекта или формы. Это позволяет нам исключить влияние собственного кода.
  2. Новая конфигурация: Мы пробовали создавать совершенно новую конфигурацию, предназначенную исключительно для мобильных устройств, и добавляли в неё проблемный элемент. Результат оставался тем же – ошибка воспроизводилась.
  3. Тестирование на разных устройствах и эмуляторах: Чтобы исключить специфику конкретного мобильного устройства, мы тестировали приложение на различных марках телефонов и в эмуляторах. Проблема сохранялась повсеместно.
  4. Обновление мобильной платформы: Мы пытались обновлять мобильную платформу до промежуточных версий (например, 8.3.14.62), но это не приводило к решению.
  5. Развертывание на чистом сервере: Для исключения влияния настроек сервера приложений, IIS или устаревшего кэша, мы развертывали базу на совершенно новом Windows Server 2019 с последними версиями MS SQL и 1С. Эффект оставался прежним, что указывает на фундаментальную проблему в самой платформе, а не в окружении.

Эти диагностические шаги позволяют нам с уверенностью утверждать, что проблема не является специфической для конкретной конфигурации, устройства или серверной инфраструктуры, а относится к функционалу мобильной платформы 1С.

Основное решение: Обновление платформы

После длительных поисков и экспериментов, один из пользователей сообщил о решении проблемы путем обновления платформы 1С. В его случае обновление до версии 8.3.18.47 решило эту проблему. Этот опыт подчеркивает важность использования актуальных версий платформы, поскольку многие ошибки, особенно связанные с обменом данными (XDTO), могут быть исправлены в последующих релизах.

Мы рекомендуем всегда использовать самые свежие стабильные версии платформы 1С. Обратите внимание, что 1С сама подтверждала ошибки преобразования данных XDTO при использовании функций преобразования строки в число с плавающей точкой в операциях XDTO для версий платформы 8.3.22.1603 и 8.3.21.1508. Эти ошибки были исправлены в версиях 8.3.22.1672/8.3.21.1607 и выше, а проблемные версии были удалены с сайта 1С. Это демонстрирует, как обновление может устранить подобные фундаментальные ошибки.

Альтернативное решение: Использование Поля HTML-документа

Если обновление платформы не помогает или мы не можем обновиться до рекомендованной версии, нам приходится искать альтернативы. Одним из предложенных обходных путей является использование ПоляHTMLДокумента вместо ФорматированногоДокумента.

Преимущества ПоляHTMLДокумента:

  1. Стабильность: В некоторых случаях ПолеHTMLДокумента работает более стабильно в мобильном клиенте 1С, позволяя отображать и взаимодействовать с HTML-контентом.
  2. Функциональность: Оно позволяет отображать форматированный текст, изображения и ссылки, что частично покрывает функционал ФорматированногоДокумента.

Недостатки и сложности:

  1. Сложность реализации: Работа с ПолемHTMLДокумента может быть менее удобной и более сложной в реализации. Нам придется генерировать HTML-код программно и управлять им, что требует дополнительных усилий.
  2. Отсутствие встроенного редактора: ПолеHTMLДокумента не предоставляет встроенного интерактивного редактора, как ФорматированныйДокумент. Нам нужно будет либо предоставить пользователю внешний HTML-редактор, либо реализовать логику редактирования средствами 1С (что будет весьма трудоемко).

Если вы решили использовать ПолеHTMLДокумента, будьте готовы к тому, что вам потребуется больше программного контроля над содержимым и внешним видом, а также возможная интеграция с внешними инструментами для редактирования.

Дополнительные рекомендации и обходные пути

Рассмотрим несколько дополнительных моментов и общих советов, которые могут быть полезны при столкновении с подобными проблемами в мобильном клиенте 1С:

  1. Общие ошибки XDTO: Если мы сталкиваемся с ошибками XDTO, и наша база при этом корректно работает через браузер или толстый клиент (но не через тонкий клиент или мобильный), мы можем попробовать следующий подход:
    1. Включим режим «Функции технического специалиста».
    2. Найдем пункт «Управление настройками обработки ошибок».
    3. Удалим возникшую ошибку XDTO из списка.
    4. Сохраним изменения и перезапустим программу.

    Этот метод иногда помогает при некорректно кэшированных или зарегистрированных ошибках, но не является панацеей для системных проблем.

  2. Актуальность платформы: Мы неоднократно убеждаемся, что использование актуальных версий платформы 1С крайне важно. Многие баги, особенно в активно развивающихся компонентах, таких как мобильная платформа, исправляются в новых релизах.
  3. Отладка мобильных приложений: Для более глубокого анализа проблем на Android, мы можем использовать Android Debug Bridge (ADB), который позволяет запускать отладку без публикации клиентской части решения. Это может помочь нам получить более подробную информацию о происходящем на мобильном устройстве.
  4. Особенности iOS: При работе с мобильным клиентом на iOS, особенно при наличии расширений, может потребоваться дополнительная настройка в XCode, что добавляет свои сложности.
  5. Разрешения файлов на Android: Иногда ошибки при запуске мобильной платформы на Android (например, 'Ошибка доступа к файлу ('/sdcard/Download/InfoBaseMA/1cema.xml')') могут быть связаны с недостатком разрешений. Мы должны убедиться, что приложение 1С имеет необходимые разрешения на управление всеми файлами через настройки устройства.
  6. Обращение в техническую поддержку 1С: Если все вышеперечисленные методы не помогают, и проблема явно носит системный характер (как в случае с ФорматированнымДокументом, который заявлен платформой, но не работает), самым верным решением будет обращение в техническую поддержку 1С. Именно они могут предоставить официальное решение, обходной путь или зафиксировать баг для исправления в будущих версиях.
  7. «Подождать» с функционалом: Один из пользователей справедливо отметил, что функционал ФорматированногоДокумента в мобильном приложении может быть «сырым» и не готовым к полноценному использованию. Возможно, нам придется «забыть» о нем на год-полтора, пока 1С не доработает его до стабильного состояния.

Ключевые выводы

Мы выяснили, что ФорматированныйДокумент в мобильном клиенте 1С является проблемным элементом, часто приводящим к XDTO-ошибкам и нестабильной работе. Для частичного решения мы можем рассмотреть обновление платформы до более поздних версий (например, 8.3.18.47). В качестве обходного пути, хоть и более трудоемкого, предлагается использование ПоляHTMLДокумента. Мы рекомендуем также тщательно отлаживать мобильные приложения, обеспечивать актуальность платформы и при необходимости обращаться в официальную поддержку 1С.

← На главную