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

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

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

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


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

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


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

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


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

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

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

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

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

Аналитик 1C
Москва
зарплата от 200 000 руб. до 240 000 руб.
Полный день

Старший программист 1С
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 500 000 руб.
Полный день

Разработчик 1С (от middle до senior), до 300 К gross
Санкт-Петербург
зарплата от 195 000 руб. до 300 000 руб.
Полный день