Игорь Кисиль | Архитектор ПО | Terminal West Trading LLC

«О создании внешних компонент для мобильных приложений 1С под Андроид»

1. Что может и чего не может технология внешних компонент для мобильных приложений. Насколько она способна преодолеть ограничения мобильной платформы. 2. Где и как применять внешние компоненты для мобильных приложений. Что предпочесть, если требуемая функциональность достижима и внешней компонентой, и средствами взаимодействия платформы с ОС Андроид? 3. Архитектура внешней компоненты – обязательные и необязательные составляющие 4. Возможно ли создать универсальный шаблон компоненты только для управляемого кода (Java)? 5. Компиляция и сборка – инструменты и настройка среды 6. Нюансы программирования взаимодействия с мобильной платформой. С чего начать программисту 1С осваивать процесс создания внешних компонент.

Запуск процедур(ы) по времени (по планировщику или таймеру) в 8.3

Программирование - Практика программирования

Создание простейшего планировщика, который выполняет определённые действия в указанное по списку время.

Создаём форму с реквизитами:

  1. таблица значений «ТблВыполнитьПоВремени» с колонками:
    Дата – обязательная колонка (в ней дата и время запуска)
    Параметр1 – колонки с параметрами необходимыми для выполнения процедуры
    Параметр2 - …
  2. «НомерТаймаута» тип Число 10,0
  3. Команды:
    «ВыполнитьПоВремени»
    «ВыполнитьПоВремениОткл»

Модуль формы:


#Область Планировщик

&НаКлиенте
Процедура ОбработатьОжидание()
	
	//Здесь текст вашей процедуры
	//...
	//Доступ к нужным параметрам через:
	//ТблВыполнитьПоВремени[НомерТаймаута].Параметр1
	ТекстСообщения = НСтр("ru = 'Выполняется прооцедура с параметром: "+ТблВыполнитьПоВремени[НомерТаймаута].Параметр1+" !'");
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
	//...
	
	ТекстСообщения = НСтр("ru = 'Выполнено задание назначенное на  "+ТблВыполнитьПоВремени[НомерТаймаута].Дата+" в "+ТекущаяДата()+" !'");
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
	
	НомерТаймаута = НомерТаймаута+1; //Передвигаемся на следующее задание
	
	Если НомерТаймаута < ТблВыполнитьПоВремени.Количество() Тогда //вычисляем время для выполнения следующего задания
		ПодключитьОбработчик(ВычислитьТаймаут(ТблВыполнитьПоВремени[НомерТаймаута].Дата)); //Запускаем следующее задание
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключитьОбработчик(вхВремя)
	
	Если вхВремя<1 Тогда
		вхВремя = 1;
	КонецЕсли;
	
	ПодключитьОбработчикОжидания("ОбработатьОжидание", вхВремя, Истина);//Подключаем обработчик один раз
	
	ТекстСообщения = НСтр("ru = 'Задание назначенное на "+ТблВыполнитьПоВремени[НомерТаймаута].Дата+" будет выполнено через "+вхВремя+" секунд!'");
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
	
КонецПроцедуры

&НаКлиенте
Функция ВычислитьТаймаут(вхДата)
	Если вхДата < ТекущаяДата() Тогда //Если время запуска уже прошло
		ТаймаутЗапуска = 1; //Тогда запуск через 1 секунду
	иначе
		ТаймаутЗапуска = вхДата - ТекущаяДата(); //Вычисляем колво секунд для запуска
	КонецЕсли;
	Возврат ТаймаутЗапуска;
КонецФункции

&НаКлиенте
Процедура ВыполнитьПоВремени(Команда) //Кнопка запуска
	Если ТблВыполнитьПоВремени.Количество()>0 Тогда
		НомерТаймаута = 0;
		ПодключитьОбработчик(ВычислитьТаймаут(ТблВыполнитьПоВремени[НомерТаймаута].Дата));
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПоВремениОткл(Команда) //Кнопка прервать
	ОтключитьОбработчикОжидания("ОбработатьОжидание");
	ТекстСообщения = НСтр("ru = 'Выполнение заданий прервано!'");
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецПроцедуры

#КонецОбласти

Как переделать планировщик на таймер с периодичностью запуска, думаю, объяснять не нужно.

Добавил файл обработки, содержащей данный модуль.

Разрабатывалась и тестировалась:
1С:Предприятие 8.3 (8.3.9.2170)
Розница, редакция 2.2 (2.2.5.25)

Скачать файлы

Наименование Файл Версия Размер
ПланировщикТаймер:
.epf 7,75Kb
11.07.18
0
.epf 1 7,75Kb Скачать

См. также

Комментарии
Сортировка: Древо
1. Tailor_Made 12.07.18 10:10 Сейчас в теме
Интересная штука. Только не пойму одно - ты, как я понял, выложил весь код бесплатно, а "собраную" обработку за 1 стартмани? :)
Оставьте свое сообщение