При разработке мобильных решений на платформе 1С разработчики нередко сталкиваются с тем, что конфигурация, успешно работающая в клиент-серверном варианте, выдает критические ошибки при попытке сборки мобильного приложения. Одной из наиболее частых проблем является сообщение о том, что переменная УровеньЖурналаРегистрации или функция ЗаписьЖурналаРегистрации не определены. Давайте разберем, почему это происходит и как правильно адаптировать код.
Для начала важно уяснить фундаментальное различие между типами мобильных решений. Ошибка возникает из-за того, что механизм АвтономнаяРабота в типовых конфигурациях пытается вызвать функции логирования, которые физически отсутствуют в архитектуре мобильной платформы.
Мы должны понимать следующие моменты:
ЖурналРегистрации, так как он является серверным механизмом.Когда мы пытаемся собрать автономное приложение, система контроля целостности конфигурации проверяет доступность методов. Поскольку ЗаписьЖурналаРегистрации не поддерживается мобильной платформой, сборка прерывается с ошибкой.
Самый эффективный и правильный способ «объяснить» платформе, что определенные куски кода не предназначены для выполнения в мобильном окружении — использование директив препроцессора. Это позволяет исключить выполнение кода на этапе компиляции.
Рассмотрим, как спрятать вызов ЗаписьЖурналаРегистрации от мобильной платформы:
#Если Не МобильноеПриложениеКлиент Тогда
ЗаписьЖурналаРегистрации(Событие, УровеньЖурналаРегистрации.Ошибка, ...);
#КонецЕсли
При использовании такой конструкции, при сборке мобильного приложения компилятор просто «вырежет» данный блок кода, и ошибка исчезнет. Если же нам необходимо выполнить какое-то действие только на клиенте, мы можем использовать обратную логику.
Чтобы не дожидаться финальной стадии сборки (которая может занимать много времени), давайте разберем, как проверять проект на лету:
Мобильное приложение (клиент), использовать его напрямую в коде приложения нельзя.Поскольку встроенный ЖурналРегистрации недоступен, нам нужно организовать альтернативную систему сбора логов, если это критически важно для бизнес-задачи. Рассмотрим три популярных подхода:
ЗаписьТекста для создания текстовых файлов в локальной директории устройства. Это самый простой способ сохранения истории действий пользователя.HTTPЗапрос).Подводя итог, можно сказать, что ошибка при сборке — это не баг платформы, а защита от запуска невыполнимого кода. Анализируйте контекст исполнения, используйте директивы препроцессора, и ваше приложение будет стабильно компилироваться без подобных препятствий.