Разберем одну из распространенных и вызывающих много вопросов проблем, с которой сталкиваются разработчики при работе с мобильным клиентом 1С – некорректная работа поля типа «Форматированный документ». Мы проанализируем различные проявления этой ошибки, возможные причины и существующие решения или обходные пути.
Когда мы пытаемся использовать элемент формы с типом ФорматированныйДокумент в мобильном клиенте 1С, многие из нас сталкиваются с критической ошибкой, блокирующей работу приложения. Основное проявление этой проблемы – возникновение ошибок преобразования данных XDTO при любом контекстном вызове сервера, например, при попытке сохранения формы, содержащей такой реквизит. Даже минимальная форма, без какого-либо кода, содержащая только реквизит типа ФорматированныйДокумент, вызывает сбой.
Типичное сообщение об ошибке выглядит следующим образом:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине: Ошибка преобразования данных XDTO: НачалоСвойства: v Форма: Элемент Тип: {
по причине: Ошибка преобразования данных XDTO: Значение: None Тип:
по причине: Несоответствие типов XDTO: Тип '{ не соответствует типу '{ Показать
Эта ошибка указывает на фундаментальную проблему в обмене данными между мобильным клиентом и сервером при попытке сериализации/десериализации значения ФорматированногоДокумента.
Помимо критических XDTO-ошибок, пользователи обнаруживают ряд других проблем, которые свидетельствуют о «сырости» функционала ФорматированногоДокумента в мобильной платформе 1С. Рассмотрим подробнее эти проявления:
ФорматированногоДокумента может быть недоступно для редактирования, как если бы для него было установлено свойство ТолькоПросмотр = Истина.ФорматированныйДокумент при открытии формы, поведение становится непредсказуемым. Иногда текст не добавляется вовсе, иногда появляется с задержкой в несколько секунд, после чего документ становится доступным для редактирования. В отладчике текст может отображаться как добавленный, но на экране клиента его может не быть или он появится со временем.ФорматированногоДокумента (дополнительная строка над клавиатурой) может не появляться или работать крайне нестабильно. Команды (например, «жирность», «курсив») либо не работают совсем, либо срабатывают через раз, что делает редактирование практически невозможным.ФорматированнымДокументом, при последующих открытиях может наблюдаться, что элемент становится доступным для редактирования без явной причины, открывается экранная клавиатура, а привязки других элементов формы нарушаются.ФорматированногоДокумента могут не работать URL-ссылки, что ограничивает его интерактивный потенциал, хотя изображения обычно отображаются корректно.Многие из нас, столкнувшись с этой проблемой, предприняли ряд шагов для её локализации и подтверждения:
ФорматированныйДокумент, и убеждались, что проблема воспроизводится даже без какого-либо программного кода в модуле объекта или формы. Это позволяет нам исключить влияние собственного кода.Эти диагностические шаги позволяют нам с уверенностью утверждать, что проблема не является специфической для конкретной конфигурации, устройства или серверной инфраструктуры, а относится к функционалу мобильной платформы 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-контентом.ФорматированногоДокумента.Недостатки и сложности:
ПолемHTMLДокумента может быть менее удобной и более сложной в реализации. Нам придется генерировать HTML-код программно и управлять им, что требует дополнительных усилий.ПолеHTMLДокумента не предоставляет встроенного интерактивного редактора, как ФорматированныйДокумент. Нам нужно будет либо предоставить пользователю внешний HTML-редактор, либо реализовать логику редактирования средствами 1С (что будет весьма трудоемко).Если вы решили использовать ПолеHTMLДокумента, будьте готовы к тому, что вам потребуется больше программного контроля над содержимым и внешним видом, а также возможная интеграция с внешними инструментами для редактирования.
Рассмотрим несколько дополнительных моментов и общих советов, которые могут быть полезны при столкновении с подобными проблемами в мобильном клиенте 1С:
Этот метод иногда помогает при некорректно кэшированных или зарегистрированных ошибках, но не является панацеей для системных проблем.
ФорматированнымДокументом, который заявлен платформой, но не работает), самым верным решением будет обращение в техническую поддержку 1С. Именно они могут предоставить официальное решение, обходной путь или зафиксировать баг для исправления в будущих версиях.ФорматированногоДокумента в мобильном приложении может быть «сырым» и не готовым к полноценному использованию. Возможно, нам придется «забыть» о нем на год-полтора, пока 1С не доработает его до стабильного состояния.Мы выяснили, что ФорматированныйДокумент в мобильном клиенте 1С является проблемным элементом, часто приводящим к XDTO-ошибкам и нестабильной работе. Для частичного решения мы можем рассмотреть обновление платформы до более поздних версий (например, 8.3.18.47). В качестве обходного пути, хоть и более трудоемкого, предлагается использование ПоляHTMLДокумента. Мы рекомендуем также тщательно отлаживать мобильные приложения, обеспечивать актуальность платформы и при необходимости обращаться в официальную поддержку 1С.