Мобильный клиент автономный режим. Метод объекта не обнаружен (ВыполнитьОбменДаннымиВФоне)
Доброго времени суток.
Адаптирую конфигурацию под мобильный клиент с автономным режимом. Есть с нуля самописная конфигурация которую я успешно адаптировал под мобильный клиент с автономным режимом, взяв нужные модули из демо конфигурации.
Есть также другая конфигурация на основе БСП в котором столкнулся с ошибкой. Теперь к ошибке:
Запускаю на мобильном клиенте с возможностью автономной работы.
1.Из модуля приложения при начале работы вызывается процедура НачатьОбмен() из директивы #Если МобильныйКлиент Тогда :
2. Идет на общий модуль в соответствующую. процедуру НачатьОбмен(), который также в дир. моб клиента. Здесь он прыгает на общий модуль ОбменМобильныеАвтономныйСервер в функцию ВыполнитьОбменДаннымиВФоне и падает на нем. Метод объекта не обнаружен (ВыполнитьОбменДаннымиВФоне).
Собственно функция в модуле ОбменМобильныеАвтономныйСервер находится в директиве "#Если МобильныйАвтономныйСервер Тогда" , там весь модуль находится в этой директорий. Функция выполняет фоновое задание синхронизации.
В моб клиенте не может определить эту функцию так-как он находится в "#Если МобильныйАвтономныйСервер Тогда". В Конфе по кнопке F12 все норм идет.
В другой конфе эти модули хорошо "прижились" и вполне норм работают. В чем может быть причина не читабельности этой директивы в данной конфигурации??
PS: ОбменМобильныеАвтономныйКлиент - (Клиент)
ОбменМобильныеАвтономныйСервер - (Сервер, Вызов сервера)
В состав автономной конфигурации они включены с приоритетом "Автономный сервер".
В точно также как на другой рабочей конфигурации. Крутится все это на платформе 8.3.17.1549
Адаптирую конфигурацию под мобильный клиент с автономным режимом. Есть с нуля самописная конфигурация которую я успешно адаптировал под мобильный клиент с автономным режимом, взяв нужные модули из демо конфигурации.
Есть также другая конфигурация на основе БСП в котором столкнулся с ошибкой. Теперь к ошибке:
Запускаю на мобильном клиенте с возможностью автономной работы.
1.Из модуля приложения при начале работы вызывается процедура НачатьОбмен() из директивы #Если МобильныйКлиент Тогда :
Процедура ПриНачалеРаботыСистемы()
#Если МобильныйКлиент Тогда
Если ОсновнойСерверДоступен() = Истина Тогда
ОбменМобильныеАвтономныйКлиент.НачатьОбмен();
КонецЕсли;
ПодключитьОбработчикОжидания("ПроверкаНеобходимостиСинхронизации", 3);
// идентификатор подписчика надо получать регулярно, он может измениться
УведомленияКлиент.ОбновитьИдентификаторПодписчикаУведомлений();
#КонецЕсли
КонецПроцедуры
Показать2. Идет на общий модуль в соответствующую. процедуру НачатьОбмен(), который также в дир. моб клиента. Здесь он прыгает на общий модуль ОбменМобильныеАвтономныйСервер в функцию ВыполнитьОбменДаннымиВФоне и падает на нем. Метод объекта не обнаружен (ВыполнитьОбменДаннымиВФоне).
Процедура НачатьОбмен() Экспорт
#Если МобильныйКлиент Тогда
ТекстОшибки = "";
Если НЕ ИдетОбмен() Тогда
Если ОсновнойСерверДоступен() = Истина Тогда
ИдентификаторФоновогоЗадания = ОбменМобильныеАвтономныйСервер.ВыполнитьОбменДаннымиВФоне();
Оповестить("НачалсяОбмен");
ПодключитьОбработчикОжидания("НаблюдениеЗаСинхронизацией", 2);
Иначе
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Обмен невозможен. Недоступен основной сервер.'", "ru");
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
ПоказатьСобственно функция в модуле ОбменМобильныеАвтономныйСервер находится в директиве "#Если МобильныйАвтономныйСервер Тогда" , там весь модуль находится в этой директорий. Функция выполняет фоновое задание синхронизации.
Функция ВыполнитьОбменДаннымиВФоне() Экспорт
Задание = ФоновыеЗадания.Выполнить("ОбменМобильныеАвтономныйСервер.ВыполнитьОбменДанными",,, "Синхронизация");
Возврат Задание.УникальныйИдентификатор;
КонецФункции
В моб клиенте не может определить эту функцию так-как он находится в "#Если МобильныйАвтономныйСервер Тогда". В Конфе по кнопке F12 все норм идет.
В другой конфе эти модули хорошо "прижились" и вполне норм работают. В чем может быть причина не читабельности этой директивы в данной конфигурации??
PS: ОбменМобильныеАвтономныйКлиент - (Клиент)
ОбменМобильныеАвтономныйСервер - (Сервер, Вызов сервера)
В состав автономной конфигурации они включены с приоритетом "Автономный сервер".
В точно также как на другой рабочей конфигурации. Крутится все это на платформе 8.3.17.1549
Найденные решения
Решение: Если конфигуратор не читает директиву "#Если МобильныйАвтономныйСервер Тогда" значит автономная конфигурация при его определения не генерировалась (выдал ошибку и т д).
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Собственно функция в модуле ОбменМобильныеАвтономныйСервер находится в директории "#Если МобильныйАвтономныйСервер Тогда" , там весь модуль находится в этой директорий. Функция выполняет фоновое задание синхронизации.
- не директории, а директивы.
Уберите директиву
#Если МобильныйАвтономныйСервер Тогда
(2) Я пробовал эти варианты, дальше так было:
- Директиву убрал
- Ругался на ОсновнойСервер в процедуре ВыполнитьОбменДанными().
- Попробовал только эту процедуру выполнить в директиве "#Если МобильныйАвтономныйСервер Тогда" и запускаю.
- в журнале вижу что обмен он не трогал.
- Ошибок при запуске на мобилке не было, но автономный режим не появился, так-как обменом он не заполнил автономный сервер метаданными....
Есть другие варианты?
Вот процедура куда фоново обращается:
Получается фоновое задание по этому процессу не отрабатывается, http отладкой на этой процедуре точку остановки не ловит
- Директиву убрал
- Ругался на ОсновнойСервер в процедуре ВыполнитьОбменДанными().
- Попробовал только эту процедуру выполнить в директиве "#Если МобильныйАвтономныйСервер Тогда" и запускаю.
- в журнале вижу что обмен он не трогал.
- Ошибок при запуске на мобилке не было, но автономный режим не появился, так-как обменом он не заполнил автономный сервер метаданными....
Есть другие варианты?
Вот процедура куда фоново обращается:
Процедура ВыполнитьОбменДанными() Экспорт
НаименованиеУзла = ПользователиИнформационнойБазы.ТекущийПользователь().Имя + " - Автономный узел";
ЦентральныйУзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду("001");
Если ЦентральныйУзелОбмена.Пустая() Тогда
НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел();
НовыйУзел.Код="001";
НовыйУзел.Наименование="Центральный";
НовыйУзел.Записать();
ЦентральныйУзелОбмена = НовыйУзел.Ссылка;
КонецЕсли;
Узел = ПланыОбмена.Мобильные.ЭтотУзел();
// Инициализируем обмен, проверяем, есть ли нужный узел в плане обмена.
НовыйКод = ОсновнойСервер.ОбменМобильныеВызовПК.НачатьОбмен(Узел.Код,
НаименованиеУзла,
ЦентральныйУзелОбмена.НомерПринятого,
ЦентральныйУзелОбмена.НомерОтправленного);
Если Узел.Код <> НовыйКод Тогда
ОбъектУзла = Узел.ПолучитьОбъект();
ОбъектУзла.Код = НовыйКод;
ОбъектУзла.Наименование = НаименованиеУзла;
ОбъектУзла.Записать();
КонецЕсли;
Константы.ОтправленоЗаписей.Установить(0);
Константы.ПринятоЗаписей.Установить(0);
ДанныеОбмена = ОбменМобильныеОбщее.СформироватьПакетОбмена(ЦентральныйУзелОбмена);
ДанныеОбмена = ОсновнойСервер.ОбменМобильныеВызовПК.ВыполнитьОбменДанными(Узел.Код, ДанныеОбмена);
ОбменМобильныеОбщее.ПринятьПакетОбмена(ЦентральныйУзелОбмена, ДанныеОбмена);
КонецПроцедуры
ПоказатьПолучается фоновое задание по этому процессу не отрабатывается, http отладкой на этой процедуре точку остановки не ловит
Я нашел корень проблемы, но не знаю как решить:
Начинаю с нуля. На вторую конфигурацию которая на основе БСП ничего не перенося, в чистом виде определяю состав в который добавил только единственный справочник "Пользователи". Публикую на веб сервере. Захожу через мобилку а там не появились тумблеры автоном конфы у пользователя.
То есть он даже не генерирует состав автономной конфигурации и соответственно директиву #Если МобильныйАвтономныйСервер ему негде выполнить(((
PS: на другой конфе когда в состав автономки определяешь хоть один объект и заходишь через мобильник, там сразу красуются два тумблера у пользователя. 1. Тумблер - Автономный режим, 2. Рассчитывать на плохое соединение.
Начинаю с нуля. На вторую конфигурацию которая на основе БСП ничего не перенося, в чистом виде определяю состав в который добавил только единственный справочник "Пользователи". Публикую на веб сервере. Захожу через мобилку а там не появились тумблеры автоном конфы у пользователя.
То есть он даже не генерирует состав автономной конфигурации и соответственно директиву #Если МобильныйАвтономныйСервер ему негде выполнить(((
PS: на другой конфе когда в состав автономки определяешь хоть один объект и заходишь через мобильник, там сразу красуются два тумблера у пользователя. 1. Тумблер - Автономный режим, 2. Рассчитывать на плохое соединение.
Решение: Если конфигуратор не читает директиву "#Если МобильныйАвтономныйСервер Тогда" значит автономная конфигурация при его определения не генерировалась (выдал ошибку и т д).
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
столкнулся с такой же ошибкой при обновлении КА 2.5.12.232
в форме регистра сведений ШтрихкодыНоменклатуры - форма без поддержки
ошибка Проверка: Мобильный клиент (автономная конфигурация). Сервер)
в процедурах/функциях &НаКлиенте
нужно добавлять
#Если НЕ МобильныйКлиент Тогда
а в процедурах/функциях &НаСервере
нужно добавлять
#Если НЕ МобильныйАвтономныйСервер Тогда
и ошибка при обновлении - ушла.
в форме регистра сведений ШтрихкодыНоменклатуры - форма без поддержки
ошибка Проверка: Мобильный клиент (автономная конфигурация). Сервер)
в процедурах/функциях &НаКлиенте
нужно добавлять
#Если НЕ МобильныйКлиент Тогда
а в процедурах/функциях &НаСервере
нужно добавлять
#Если НЕ МобильныйАвтономныйСервер Тогда
и ошибка при обновлении - ушла.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот