Мобильный клиент автономный режим. Метод объекта не обнаружен (ВыполнитьОбменДаннымиВФоне)

1. aibasoft 10 02.12.20 13:31 Сейчас в теме
Доброго времени суток.
Адаптирую конфигурацию под мобильный клиент с автономным режимом. Есть с нуля самописная конфигурация которую я успешно адаптировал под мобильный клиент с автономным режимом, взяв нужные модули из демо конфигурации.

Есть также другая конфигурация на основе БСП в котором столкнулся с ошибкой. Теперь к ошибке:
Запускаю на мобильном клиенте с возможностью автономной работы.

1.Из модуля приложения при начале работы вызывается процедура НачатьОбмен() из директивы #Если МобильныйКлиент Тогда :
Процедура ПриНачалеРаботыСистемы()
	
	#Если МобильныйКлиент Тогда 
	Если ОсновнойСерверДоступен() = Истина Тогда
		ОбменМобильныеАвтономныйКлиент.НачатьОбмен();
	КонецЕсли;
	ПодключитьОбработчикОжидания("ПроверкаНеобходимостиСинхронизации", 3);
	
	// идентификатор подписчика надо получать регулярно, он может измениться
	УведомленияКлиент.ОбновитьИдентификаторПодписчикаУведомлений();
	
#КонецЕсли
	
КонецПроцедуры
Показать


2. Идет на общий модуль в соответствующую. процедуру НачатьОбмен(), который также в дир. моб клиента. Здесь он прыгает на общий модуль ОбменМобильныеАвтономныйСервер в функцию ВыполнитьОбменДаннымиВФоне и падает на нем. Метод объекта не обнаружен (ВыполнитьОбменДаннымиВФоне).

Процедура НачатьОбмен() Экспорт
	
	#Если МобильныйКлиент Тогда
	ТекстОшибки = "";
	Если НЕ ИдетОбмен() Тогда
		Если ОсновнойСерверДоступен() = Истина Тогда
			ИдентификаторФоновогоЗадания = ОбменМобильныеАвтономныйСервер.ВыполнитьОбменДаннымиВФоне();
			Оповестить("НачалсяОбмен");
			ПодключитьОбработчикОжидания("НаблюдениеЗаСинхронизацией", 2);
		Иначе
		    Сообщение = Новый СообщениеПользователю();
		    Сообщение.Текст = НСтр("ru = 'Обмен невозможен. Недоступен основной сервер.'", "ru");
			Сообщение.Сообщить();
		КонецЕсли;
	КонецЕсли;
#КонецЕсли
    
КонецПроцедуры
Показать


Собственно функция в модуле ОбменМобильныеАвтономныйСервер находится в директиве "#Если МобильныйАвтономныйСервер Тогда" , там весь модуль находится в этой директорий. Функция выполняет фоновое задание синхронизации.

Функция ВыполнитьОбменДаннымиВФоне() Экспорт
	
	Задание = ФоновыеЗадания.Выполнить("ОбменМобильныеАвтономныйСервер.ВыполнитьОбменДанными",,, "Синхронизация");
	Возврат Задание.УникальныйИдентификатор;
	
КонецФункции


В моб клиенте не может определить эту функцию так-как он находится в "#Если МобильныйАвтономныйСервер Тогда". В Конфе по кнопке F12 все норм идет.
В другой конфе эти модули хорошо "прижились" и вполне норм работают. В чем может быть причина не читабельности этой директивы в данной конфигурации??
PS: ОбменМобильныеАвтономныйКлиент - (Клиент)
ОбменМобильныеАвтономныйСервер - (Сервер, Вызов сервера)
В состав автономной конфигурации они включены с приоритетом "Автономный сервер".
В точно также как на другой рабочей конфигурации. Крутится все это на платформе 8.3.17.1549
Найденные решения
5. aibasoft 10 03.12.20 20:19 Сейчас в теме
Решение: Если конфигуратор не читает директиву "#Если МобильныйАвтономныйСервер Тогда" значит автономная конфигурация при его определения не генерировалась (выдал ошибку и т д).
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. HAMAZ 7 03.12.20 07:08 Сейчас в теме
Собственно функция в модуле ОбменМобильныеАвтономныйСервер находится в директории "#Если МобильныйАвтономныйСервер Тогда" , там весь модуль находится в этой директорий. Функция выполняет фоновое задание синхронизации.
- не директории, а директивы.
Уберите директиву
 #Если МобильныйАвтономныйСервер Тогда
в тело функции и проверьте
3. aibasoft 10 03.12.20 14:12 Сейчас в теме
(2) Я пробовал эти варианты, дальше так было:
- Директиву убрал
- Ругался на ОсновнойСервер в процедуре ВыполнитьОбменДанными().
- Попробовал только эту процедуру выполнить в директиве "#Если МобильныйАвтономныйСервер Тогда" и запускаю.
- в журнале вижу что обмен он не трогал.
- Ошибок при запуске на мобилке не было, но автономный режим не появился, так-как обменом он не заполнил автономный сервер метаданными....
Есть другие варианты?

Вот процедура куда фоново обращается:
Процедура ВыполнитьОбменДанными() Экспорт

	НаименованиеУзла = ПользователиИнформационнойБазы.ТекущийПользователь().Имя + " - Автономный узел";
    
	ЦентральныйУзелОбмена = ПланыОбмена.Мобильные.НайтиПоКоду("001");
    Если ЦентральныйУзелОбмена.Пустая() Тогда
        
        НовыйУзел = ПланыОбмена.Мобильные.СоздатьУзел();
    	НовыйУзел.Код="001";
    	НовыйУзел.Наименование="Центральный";
    	НовыйУзел.Записать();
        ЦентральныйУзелОбмена = НовыйУзел.Ссылка;
        
    КонецЕсли;
    
	Узел = ПланыОбмена.Мобильные.ЭтотУзел();
    // Инициализируем обмен, проверяем, есть ли нужный узел в плане обмена.
    НовыйКод = ОсновнойСервер.ОбменМобильныеВызовПК.НачатьОбмен(Узел.Код,
										                       НаименованиеУзла,
										                       ЦентральныйУзелОбмена.НомерПринятого,
										                       ЦентральныйУзелОбмена.НомерОтправленного);
	
    Если  Узел.Код <> НовыйКод Тогда
        
		ОбъектУзла = Узел.ПолучитьОбъект();
		ОбъектУзла.Код = НовыйКод;
        ОбъектУзла.Наименование = НаименованиеУзла;
		ОбъектУзла.Записать();
        
    КонецЕсли;
		
	Константы.ОтправленоЗаписей.Установить(0);
	Константы.ПринятоЗаписей.Установить(0);
    ДанныеОбмена = ОбменМобильныеОбщее.СформироватьПакетОбмена(ЦентральныйУзелОбмена);
	ДанныеОбмена = ОсновнойСервер.ОбменМобильныеВызовПК.ВыполнитьОбменДанными(Узел.Код, ДанныеОбмена);
    ОбменМобильныеОбщее.ПринятьПакетОбмена(ЦентральныйУзелОбмена, ДанныеОбмена);
	
КонецПроцедуры
Показать

Получается фоновое задание по этому процессу не отрабатывается, http отладкой на этой процедуре точку остановки не ловит
4. aibasoft 10 03.12.20 17:00 Сейчас в теме
Я нашел корень проблемы, но не знаю как решить:
Начинаю с нуля. На вторую конфигурацию которая на основе БСП ничего не перенося, в чистом виде определяю состав в который добавил только единственный справочник "Пользователи". Публикую на веб сервере. Захожу через мобилку а там не появились тумблеры автоном конфы у пользователя.
То есть он даже не генерирует состав автономной конфигурации и соответственно директиву #Если МобильныйАвтономныйСервер ему негде выполнить(((

PS: на другой конфе когда в состав автономки определяешь хоть один объект и заходишь через мобильник, там сразу красуются два тумблера у пользователя. 1. Тумблер - Автономный режим, 2. Рассчитывать на плохое соединение.
5. aibasoft 10 03.12.20 20:19 Сейчас в теме
Решение: Если конфигуратор не читает директиву "#Если МобильныйАвтономныйСервер Тогда" значит автономная конфигурация при его определения не генерировалась (выдал ошибку и т д).
Для проверки успешной генерации автономной конфигурации надо сделать "Тестирование и исправление" с одной единственной галочкой "Пересоздание автономной конфигурации" должно завершится без ошибок (будет автономный режим на мобилке), если есть ошибки есть(автономного режима на мобилке не будет) то необходимо исправить эти ошибки.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот