Имя: Пароль:
1C
 
Фоновое задание
0 Sasha_H
 
28.05.08
09:37
В при начале работы системы сделал:

ИнтервалДляОпроса = Константы.ИнтервалОпросаОбработчикаXML.Получить();
   
   Если ИнтервалДляОпроса = Неопределено
       ИЛИ ИнтервалДляОпроса = 0 Тогда
       
       ИнтервалДляОпроса = 60;    
       
   КонецЕсли;
   
   #Если Клиент Тогда
   ПодключитьОбработчикОжидания("ЗапускРегламентногоЗаданияЭкспортЧетырех", ИнтервалДляОпроса);
   #КонецЕсли


Далее исполняется процдура. Все хорошо только в то в ремя когда работает ПодключитьОбработчикОжидания, я использовал только ее сдесь, то пользователь в то время должен ждать. Можно как-то в фоне чтобы работало?
1 Sasha_H
 
28.05.08
11:05
Ребят помогите как сделать фоновое задание. Я создал регламентное задание в конфигураторе прописал расписание и прописал модуль. Запустил консоль регламентных заданий. его там нету, добавить можно смотрю, но стандартные задание уже сами как-то добавились значит они включены. Как мне это задание активировать!?
2 Лефмихалыч
 
28.05.08
11:08
8.0 или 8.1?
3 Sasha_H
 
28.05.08
11:08
8.1 извеняюсь что не указал
4 Defender aka LINN
 
28.05.08
11:12
(0) Дык сделай пользователя-робота, под которым и крути свои задания
5 Sasha_H
 
28.05.08
11:14
не... Нужно именно фоновое задание.
6 Лефмихалыч
 
28.05.08
11:14
файловая или клиент-сервер?
7 Лефмихалыч
 
28.05.08
11:15
короче, file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167798
8 Sasha_H
 
28.05.08
11:17
у меня клиент-сервер
9 Defender aka LINN
 
28.05.08
11:19
(5) Тогда тебе не 1С нужно.
10 Лефмихалыч
 
28.05.08
11:20
(8) При чем тут тогда ПодключитьОбработчикОжилания()? ЧИтай ссылку, которую я тебе дал, там пример есть даже создания фонового задания
11 Sasha_H
 
28.05.08
11:34
ПодключитьОбработчикОжидания

я делал для того чтобы попробовать вообще как работает!

Теперь задача постала фоновом режиме.

Примеры

Создание фонового задания «Обновление индекса полнотекстового поиска»:

ФоновыеЗадания.Выполнить("ОбновлениеИндексаПолнотекстовогоПоиска");

Создание регламентного задания «Восстановление последовательностей»:

Расписание = Новый РасписаниеРегламентногоЗадания;

Расписание.ПериодПовтораДней = 1;

Расписание.ПериодПовтораВТечениеДня = 0;



Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание( "ВосстановлениеПоследовательностей");

Задание.Расписание = Расписание;

Задание.Записать();
12 Лефмихалыч
 
28.05.08
11:36
(11) и чо? не получилось? вопрос? предложение? жалоба?
13 Sasha_H
 
28.05.08
11:38
пока тестирую
14 Sasha_H
 
28.05.08
11:47
А теперь жалоба:

Создал общий модуль не глобальный ОбменДаннымиВФорматеXML "свойства" клиент, сервер

Регламентное задание с ссылкой на модуль:

//Процедура запускает последовательный экспорт в XML ("4 файла")
//
Процедура РегламентногоЗаданияЧетырех() Экспорт

   #Если Клиент Тогда
   Сообщить("Задания запущены! " + ТекущаяДата());
   #КонецЕсли

   ОбменДаннымиЭкспортСписокКонтрагентов();
   //РаботаСШинамиИДисками.ОбменДаннымиЭкспортОстатков();
   //РаботаСШинамиИДисками.ОбменДаннымиЭкспортЗаказПокупателя();
   //РаботаСШинамиИДисками.ОбменДаннымиЭкспортСвязиСоотношений();
   
КонецПроцедуры


//Процедура запускает механизм экспорта Списка контрагентов
//
Процедура ОбменДаннымиЭкспортСписокКонтрагентов() Экспорт
   ВыборкаУзлов = ПланыОбмена.ОбменДаннымиЗаказами.Выбрать();
   
   Пока ВыборкаУзлов.Следующий() Цикл
       //произвести обмен данными со всеми узлами
       //кроме текущого (ЭтотУзел)
       Если ВыборкаУзлов.Ссылка <> ПланыОбмена.ОбменДаннымиЗаказами.ЭтотУзел() Тогда
           УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();
           
           УзелОбъект.ЗаписатьВXMLСписокКонтрагентов();            
           
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры    


А вот и сама процедура она в модуле плана обменов


//Процедура Экспортирует список контрагентов
//
Процедура ЗаписатьВXMLСписокКонтрагентов() Экспорт  
   
   Каталог = Константы.КаталогЭкспортаXML.Получить();//КаталогВременныхФайлов();
   
   Если НЕ ЗначениеЗаполнено(Каталог) Тогда
       //ОстановкаРегламентныхЗаданий();
       Возврат;
   КонецЕсли;    
   
   //Сформировать имя временного файла
   //ИмяФайла = Каталог + ?(Прав(Каталог,1)="\","","\") + "ExportListClient.xml";
   ИмяФайла = Каталог + ?(Прав(Каталог,1)="\","","\") + "file1.xml";
   
   Если РаботаСШинамиИДисками.ПроверитьСуществованиеФайла(ИмяФайла) Тогда
       Возврат; //если файл существует нельзя его менять
   КонецЕсли;    
   
   #Если Клиент Тогда
       Состояние("Обмен данными... (список контрагентов)");
   #КонецЕсли
   
   //Создать объект записи XML
   //**** запись XML-документов
   //
   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл(ИмяФайла);
   ЗаписьXML.ЗаписатьОбъявлениеXML();
   
   ////*** инфраструктура сообщений
   ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
   ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Ссылка);
           
   СписокКонтрагентов =  РаботаСШинамиИДисками.ПолучитьКатегориюРазрешитьДоступВЮниполКлиент();
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
                         |    СУММА(ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток) КАК СуммаВзаиморасчетовОстаток
                         |ИЗ
                         |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК ВзаиморасчетыСКонтрагентамиОстатки
                         |ГДЕ
                         |    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент В(&СписокКонтрагентов)
                         |
                         |СГРУППИРОВАТЬ ПО
                         |    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент");
                         
   Массив = СписокКонтрагентов.ВыгрузитьКолонку("Объект");
   СписокФильтр  = Новый СписокЗначений;
   СписокФильтр.ЗагрузитьЗначения(Массив);
   Запрос.УстановитьПараметр("СписокКонтрагентов",СписокФильтр);                      
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   
   Для Каждого КонтрагентСсылка Из СписокКонтрагентов Цикл
       
       СписокКонтактИнформации = РаботаСШинамиИДисками.ПолучитьКонтактнуюИнформациюКонтрагента(КонтрагентСсылка.Объект,Справочники.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами);
       
       ЕМайл    = "";
       номВхожд = 0;
       Для Каждого АдресаЕктроннойПочты Из СписокКонтактИнформации Цикл
           
           номВхожд = номВхожд +1;
           ЕМайл = ЕМайл + АдресаЕктроннойПочты.Представление+?(СписокКонтактИнформации.Количество()<> номВхожд,";","") ;
           
       КонецЦикла;    
       
       Если НЕ ЗначениеЗаполнено(ЕМайл) Тогда
           Сообщить("У контрагента: " + КонтрагентСсылка.Объект.Код + " " + КонтрагентСсылка.Объект + " не заполнен Е-Майл, в список обмена он непопадет" ,СтатусСообщения.Важное);
           Продолжить;
       КонецЕсли;    
       
       НомВхОбезСимвСобачка = Найти(ЕМайл,"@");
       НомВхОбезСимвТочка   = Найти(ЕМайл,".");
       
       Если (НомВхОбезСимвСобачка = 0)
           ИЛИ  (НомВхОбезСимвТочка   = 0) Тогда
           Сообщить("У контрагента: " + КонтрагентСсылка.Объект.Код + " " + КонтрагентСсылка.Объект + " не коректный Е-Майл, в список обмена он непопадет" ,СтатусСообщения.Важное);
           Продолжить;
       КонецЕсли;    
       
       СтрокаССальдо = РезультатЗапроса.Найти(КонтрагентСсылка.Объект,"Контрагент");
       СуммаВзаиморасчетовОстаток = 0;
       Если НЕ СтрокаССальдо = Неопределено Тогда
           СуммаВзаиморасчетовОстаток = СтрокаССальдо.СуммаВзаиморасчетовОстаток;
       КонецЕсли;    
       
       Подключен                    =  РаботаСШинамиИДисками.ПолучитьКатегорииКонтрагентов(КонтрагентСсылка.Объект,Константы.КатегорияПодключен.Получить()).Категория;
       КатегорияЗаблокирован        =  РаботаСШинамиИДисками.ПолучитьКатегорииКонтрагентов(КонтрагентСсылка.Объект,Константы.КатегорияЗаблокирован.Получить()).Категория;
       КатегорияОбрезатьОстатки     =  РаботаСШинамиИДисками.ПолучитьКатегорииКонтрагентов(КонтрагентСсылка.Объект,Константы.КатегорияОбрезатьОстатки.Получить()).Категория;
       КатегорияВидетьПолныеОстатки =  РаботаСШинамиИДисками.ПолучитьКатегорииКонтрагентов(КонтрагентСсылка.Объект,Константы.КатегорияВидетьПолныеОстатки.Получить()).Категория;
       
       ЗаписьXML.ЗаписатьНачалоЭлемента("SprObject.Client");//<SprObject.Контрагенты>
       
       ЗаписьXML.ЗаписатьБезОбработки("<CodeClient>"        +КонтрагентСсылка.Объект.Код                                        +"</CodeClient>"       );
       ЗаписьXML.ЗаписатьБезОбработки("<Client>"            +КонтрагентСсылка.Объект                                            +"</Client>"           );
       ЗаписьXML.ЗаписатьБезОбработки("<CodeRegistration>"  +КонтрагентСсылка.Объект.КодРегистрационный                         +"</CodeRegistration>" );
       ЗаписьXML.ЗаписатьБезОбработки("<Blocked>"           +?(ЗначениеЗаполнено(КатегорияЗаблокирован),"ИСТИНА","ЛОЖЬ")        +"</Blocked>"          );
       ЗаписьXML.ЗаписатьБезОбработки("<CutRests>"          +?(ЗначениеЗаполнено(КатегорияОбрезатьОстатки),"ИСТИНА","ЛОЖЬ")     +"</CutRests>"         );
       ЗаписьXML.ЗаписатьБезОбработки("<SeeFullRests>"      +?(ЗначениеЗаполнено(КатегорияВидетьПолныеОстатки),"ИСТИНА","ЛОЖЬ") +"</SeeFullRests>"     );
       ЗаписьXML.ЗаписатьБезОбработки("<NumberColumnPrice>" + "" +"</NumberColumnPrice>");
       ЗаписьXML.ЗаписатьБезОбработки("<Balance>"           + СуммаВзаиморасчетовОстаток +"</Balance>");
       ЗаписьXML.ЗаписатьБезОбработки("<EMail>"            +ЕМайл+"</EMail>");
       
       //ЗаписьXML.ЗаписатьБезОбработки("<Подключен>"      +?(ЗначениеЗаполнено(Подключен),"ИСТИНА","ЛОЖЬ") +"</Подключен>");
       //ЗаписьXML.ЗаписатьБезОбработки("<ТипЦен>"         +КонтрагентСсылка.Объект.ОсновнойДоговорКонтрагента.ТипЦен+"</ТипЦен>");
       //ЗаписьXML.ЗаписатьБезОбработки("<ПроцентСкидки>"  +""+"</ПроцентСкидки>");
       
       ЗаписьXML.ЗаписатьКонецЭлемента(); //<SprObject.Контрагенты>
   КонецЦикла;
           
   ЗаписьСообщения.ЗакончитьЗапись();
   ЗаписьXML.Закрыть();
   #Если Клиент Тогда
   Сообщить("------- Конец выгрузки контрагентов-------");
   Сообщить("Файл экспорта тут --> " + ИмяФайла, СтатусСообщения.Информация);
   #КонецЕсли
   
КонецПроцедуры

Внимание валится в консоле с шибкой:

{ОбщийМодуль.РаботаСШинамиИДисками(1178,100)}: Переменная не определена (глТекущийПользователь)

Он заходит в Общий модуль ОбщийМодуль.РаботаСШинамиИДисками так как я его вызывал в этом месте  

СписокКонтрагентов =  РаботаСШинамиИДисками.ПолучитьКатегориюРазрешитьДоступВЮниполКлиент();


Но эта функция запрос строит всеволиж:

//Получение Категории РазрешитьДоступВЮниполКлиент
//Возврат ТаблицаЗначений
Функция ПолучитьКатегориюРазрешитьДоступВЮниполКлиент() Экспорт
   
   Запрос = Новый Запрос;
   
   Запрос.УстановитьПараметр("ВыбКатегория",Константы.РазрешитьДоступВЮниполКлиент.Получить());
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |    КатегорииОбъектов.Объект
   |ИЗ
   |    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
   |ГДЕ
   |    КатегорииОбъектов.Категория = &ВыбКатегория";
   
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   
   Возврат РезультатЗапроса;
   
КонецФункции



А какого он хрена матерится на совем другую процедуру в этом модулю когда я ее нигде не вызываю!!!

матерится на это место  

ДокументЗаказСсылка.Организация         = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");

Но это вообще совсем левая процедура, она просто лежит в этом общем модуле!
15 Sasha_H
 
28.05.08
11:56
Ребят я понял... все начстроил. Просто тот модуль, что вызывался он был тоже Серверный а там былы Сообщить, состояни и т..д. то что серверу не допустиму, все исправил!