helpf.pro
Регистрация
 0 
Распечатать

Фоновые задания: Пример запуска выполнения процедуры / функции на сервере

Как в 1С производится запуск фоновых заданий, каким образом можно получить список заданий при помощи метода "ПолучитьФоновыеЗадания()?

В одном проекте понадобилось запускать выполнение выгрузки на сайт с сервера.

Пользователь на своем клиенте открывает обработку, устанавливает параметры и нажимает выгрузить.

Выгрузка идет не с компьютера клиента, а создается фоновое задание на сервере!

На клиенте в модуле Кнопки Выгрузить:

Код 1C v 8.3
 Процедура КоманднаяПанель1ВыгрузитьНаСайт(Кнопка)
	
	//Выгружается фоновым заданием на серваке
	ПараметрыФоновогоЗадания = Новый Массив;
	ПараметрыФоновогоЗадания.Добавить(Группа); //Группа номенклатуры
	ФоновыеЗадания.Выполнить("МодульРегламентныхЗаданий.ВыгрузкаПрайсаНАФТП",
				ПараметрыФоновогоЗадания, Новый УникальныйИдентификатор, 
				"Выгрузка прайса на сайт"); 	
	ПоказатьОповещениеПользователя("Выгрузка прайса на сайт", ,"Запущено задание выгрузки прайса на сайт, проверьте данные на сайте через 2-3 минуты...", БиблиотекаКартинок.Информация32);
   

ПараметрыФоновогоЗадания - это переменные функции, они задаются по порядку как определены в вызываемой функции.

На сервере в общем модуле МодульРегламентныхЗаданий:

Код 1C v 8.3
 Процедура ВыгрузкаПрайсаНАФТП(Группа) Экспорт   	
	Запрос = Новый Запрос();
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ПрайсЛист1СрезПоследних.НоменклатураПрайса,
	|	ПрайсЛист1СрезПоследних.Цена
	|ИЗ
	|	РегистрСведений.ПрайсЛист.СрезПоследних(, Поставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК ПрайсЛист1СрезПоследних
	|ГДЕ
	|	&Условие
	|	И ПрайсЛист1СрезПоследних.НоменклатураПрайса.ИДдляСайта > 0";
	
	Если ЗначениеЗаполнено(Группа) Тогда
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", "ПрайсЛист1СрезПоследних.НоменклатураПрайса В ИЕРАРХИИ(&НоменклатураПрайса)")
	Иначе
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", "ИСТИНА")
	КонецЕсли;	
	Запрос.УстановитьПараметр("НоменклатураПрайса", Группа);
	Выборка = Запрос.Выполнить().Выбрать();	
	Текст = Новый ТекстовыйДокумент; 	
	Пока Выборка.Следующий() Цикл
		НомПрайса = Выборка.НоменклатураПрайса;
		ЦенаА = Выборка.Цена;
		Цена = Ценообразование.ОкруглитьЦену(ЦенаА * ( 1 + НомПрайса.Наценка20 / 100) + НомПрайса.Надбавка20, НомПрайса.ПорядокОкругления, НомПрайса.ОкруглятьВБольшуюСторону); 		
		Если Цена > 0 Тогда
			Текст.ДобавитьСтроку(""+Формат(НомПрайса.ИДдляСайта, "ЧГ=0")+";"+Формат(Цена, "ЧГ=0"));
		КонецЕсли;
	КонецЦикла;
	
	// запись в текстовый файл
	ПутьКФайлВыгр = "\\FG-1\1c_data\naSite\vigruz.csv";//"D:\!!!For1C!!!\naSite\vigruz.csv";
	Текст.Записать(ПутьКФайлВыгр, "windows-1251");
	КаталогНаSFTPСервере = "/sitetest.ru/public_html/p";	
	Попытка
		ИмяПользователя = "serveruser";
		ПарольПользователя = "password";
		Сервер = "192.253.6.47";
		Порт = "21";  		
		Прокси = Новый ИнтернетПрокси();
		Прокси.Пользователь = ИмяПользователя;
		Прокси.Пароль = ПарольПользователя;
		
		FTPСоединение = Новый FTPСоединение(Сервер,,ИмяПользователя,ПарольПользователя,,Ложь);
		FTPСоединение.УстановитьТекущийКаталог(КаталогНаSFTPСервере);
		//FTPСоединение.ПассивныйРежим(Ложь);
		ТекущийКаталог = FTPСоединение.ТекущийКаталог();
	Исключение
	КонецПопытки;
	FTPСоединение.Записать(ПутьКФайлВыгр,"vigruz.csv"); 
	
	//Вызов PHP скрипта для иморта данных из csv файла на сайт
	НТТР = Новый HTTPСоединение("sitetest.ru");
	ФайлРезультата = ПолучитьИмяВременногоФайла();
	НТТР.Получить("/p/import_price.php", ФайлРезультата);

КонецПроцедуры   

Как Получить фоновые задания? 

Напишем в процедуре обработки нажания следующий код:

Код 1C v 8.2 УП
 &НаКлиенте
Процедура ПолучитьФоновыеЗадания(Команда)
	ПолучитьФоновыеЗаданияНаСервере();	
КонецПроцедуры   

Текст процедуры на сервере:

Код 1C v 8.2 УП
 &НаСервере
Процедура ПолучитьФоновыеЗаданияНаСервере()

	ПараметрыОтбора = Новый Структура("Наименование", "Тестовое задание");	
	СписокФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
	
	Для каждого Задание Из СписокФоновыхЗаданий Цикл
		Сообщить(Задание.Наименование);
	КонецЦикла;

КонецПроцедуры // ПолучитьФоновыеЗаданияНаСервере()   

В окно сообщений выведутся наименования выполняющихся и выполненных в 1С фоновых заданий с наименованием "Тестовое задание", так как мы сделали отбор именно по этому наименованию.

Разместил:   Версии: | 8.2 УП | 8.3 |  Дата:   Прочитано: 59682
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 23
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!