Разбираюсь с обменом и автономным режим в мобильном клиенте в самописной конфигурации. Для запуска минимального прототипа взял демонстрационную базу с версии 8.3.20.2039 (ссылка). Поднял сервер 1с версии 8.3.20.2039, опубликовал демку на apache, поставил в NOX приложение 1с мобильный клиент с автономным режимом, подключил туда опубликованную базу, настроил отладку по HTTP, все отлично. Но!
Есть в данной демобазе модуль "ОбменМобильныеАвтономныйСервер", (приоритет в составе автономной конфигурации = "Автономный сервер"). В этом модуле есть процедура "ВыполнитьОбменДанными"
// Процедура выполняет синхронизацию данных с основной базой. через опубликованный ею веб-сервис
Процедура ВыполнитьОбменДанными() Экспорт
.....
Константы.ОтправленоЗаписей.Установить(0);
Константы.ПринятоЗаписей.Установить(0);
ДанныеОбмена = ОбменМобильныеОбщее.СформироватьПакетОбмена(ЦентральныйУзелОбмена);
ЗаписатьДанные(ДанныеОбмена);
ДанныеОбмена = ОсновнойСервер.ОбменМобильныеВызовПК.ВыполнитьОбменДанными(Узел.Код, ДанныеОбмена);
ЗаписатьДанные(ДанныеОбмена);
ОбменМобильныеОбщее.ПринятьПакетОбмена(ЦентральныйУзелОбмена, ДанныеОбмена);
ЗаписатьДанные(ДанныеОбмена);
КонецПроцедуры
Показать
Как поймать отладчиком этот модуль и эту процедуру?
Отладчик видит "Мобильный клиент" И "Сервер", код выполняемый на этих контекстах отлаживается без проблем. Код выполняемый на "автономном сервере" никак не получается поймать в отладку. Для платформ версий 8.3.20 была заявлена прозрачная поддержка отладки основной и автономной конфигурации, без переключения в настройках. Сначала пробовал на 8.3.18, поставил 8.3.20 в надежде на перемены, но счастья не случилось.
(1)
Отладка автономного мобильного приложения Отладка сразу всех составных частей автономного мобильного приложения не поддерживается. Предоставляется возможность отлаживать или часть, работающую на мобильном устройстве или часть, работающую с основным сервером. В случае отладки автономной части прикладного решения необходимо подключать следующие предметы отладки: клиент (мобильное приложение) и сервер (мобильное приложение). В случае отладки основной части прикладного решения необходимо подключать следующие предметы отладки: мобильный клиент и сервер.
Переключение между этими режимами осуществляется с помощью параметра настройки информационной базы на мобильном устройстве.
Действия, которые предшествуют собственно отладке, аналогичны таковым при отладке мобильного приложения или прикладного решения для персонального компьютера.
Отладка автономного мобильного приложения
Отладка сразу всех составных частей автономного мобильного приложения не поддерживается. Предоставляется возможность отлаживать или часть, работающую на мобильном устройстве или часть, работающую с основным сервером. В случае отладки автономной части прикладного решения необходимо подключать следующие предметы отладки: клиент (мобильное приложение) и сервер (мобильное приложение). В случае отладки основной части прикладного решения необходимо подключать следующие предметы отладки: мобильный клиент и сервер.
Переключение между этими режимами осуществляется с помощью параметра настройки информационной базы на мобильном устройстве.
Действия, которые предшествуют собственно отладке, аналогичны таковым при отладке мобильного приложения или прикладного решения для персонального компьютера.
Как раз таки одновременную отладку и автономной, и основной части 1С заявляет что реализовали в 8.3.20.1549. Вопрос в том, что подхватить автономную часть удалось после указания DefAlias, но в тоже время пропала возможность поймать мобильного клиента и основной сервер - это при указании DefAlias и платформе 8.3.18.1289. Сейчас проверю на 8.3.20.2039.
Сейчас разработчик может проводить отладку только в таких сочетаниях предметов отладки:
Мобильный клиент и основной сервер
Мобильный клиент и автономный сервер
Какое именно сочетание используется – устанавливается в настройках мобильного клиента. Для смены сочетания нужен перезапуск мобильного клиента. В этом плане поведение отладчика отличается от отладки обычного клиент-серверного приложения – отладчик может не попадать внутрь некоторых участков серверного кода в зависимости от того, на каком из серверов (основном или автономном) этот код выполняется и от того, какое сочетание предметов отладки выбрано.
....
В версии 8.3.20 это ограничение будет убрано - можно будет одновременно отлаживать мобильный клиент, основной сервер и автономный сервер. Это позволит покрыть отладкой весь код приложения, как в случае обычного клиент-серверного приложения. В частности, можно будет отлаживать сценарии с потерей связи, когда основной сервер становится недоступен и мобильный клиент переключается на работу с автономным сервером (что ранее было невозможно).
Появилась возможность поймать автономный сервер, но пропала отладка клиента и основного сервера, в не зависимости от выставленного режима отладки "основная конфигурация"\"автономная конфигурация" (платформа 8.3.18.1289).
В общем рецепт: имя базы в кластере должно быть DefAlias, только при таком раскладе будет полная отладка: автономный сервер, сервер, мобильный клиент. Я использовал версии: 8.3.20.40 в качестве мобильного клиента и 8.3.20.2039 в качестве серверной части.
Отладочную базу пришлось переименовать в DefAlias, просто через конфигуратор указать имя базы не работало.
Зы: Для мобильной платформы версии 8.3.21.41 минимальная версия серверной части, указанная на "релизах", 8.3.20.1549, но 8.3.20.2039 и 8.3.21.41 вместе не работают, при просмотре значения переменной на точке останова "ошибка преобразования XDTO", которая уже много раз проявлялась на более старых версиях и также исправлялась в более новых (но уже давно не актуальных версиях). В общем исправили и снова добавили ошибку. Либо я спутал информацию о совместимости, если кто располагает информацией с более точным сопоставлением версий мобильной и серверной части, поделитесь пожалуйста.