Ошибка при вызове метода контекста получитьфоновыезадания

Фоновые задания

Я
   Merkuce

22.09.10 — 11:03

Разбираюсь с регламентными и фоновыми заданиями.

Следующая строка кода в типовой консоли заданий

ФоновыеЗадания.ПолучитьФоновыеЗадания();

выдает ошибку

ФоновыеЗадания.ПолучитьФоновыеЗадания()    {(1)}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.    

Как этот менеджер активировать?

   zbv

1 — 22.09.10 — 11:05

файловая ?

   Merkuce

2 — 22.09.10 — 11:06

да

   0xFFFFFF

3 — 22.09.10 — 11:07

ой, ща отправят справку читать…

   zbv

4 — 22.09.10 — 11:08

(2) переводи на сервер, либо в настройках указывай пользователя под которым запускаются рег.задания и не забудь запустить 1сину под этим юзером.

   0xFFFFFF

5 — 22.09.10 — 11:08

Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

·         В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.

   smitru

6 — 22.09.10 — 11:09

(0) перейди на клиент-сервер — многое будет понятнее :-)

   Merkuce

7 — 22.09.10 — 11:11

я нашла , что должен быть выполнен метод ВыполнитьОбработкуЗаданий()

Но где его выполнять? И почему его нужно выполнять несколько раз, я хочу , чтобы задания выполнялись по расписанию регламентных заданий

   Merkuce

8 — 22.09.10 — 11:16

(4) я в этой самой консоли заданий указала юзера, под которым запуск производится.

(6) нет сейчас возожности

   zbv

9 — 22.09.10 — 11:16

(8) указать надо в Настройках программы.

в консоли это не то — это типа «Ответственный» в документах.

   Shurjk

10 — 22.09.10 — 11:18

(8) Запусти под этим юзером приложение, и настрой задание с помощью консоли заданий и будет тебе счастье.

   0xFFFFFF

11 — 22.09.10 — 11:19

В ПриНачалеРаботыСистемы делай ПОД ОПРЕДЕЛЕННЫМ ПОЛЬЗОВАТЕЛЕМ ПодключитьОбработчикОжидания. С определенной периодичностью (минута например) внутри этого обработчика вызывай ВыполнитьОбработкуЗаданий()

   Shurjk

12 — 22.09.10 — 11:19

+(10) А ну и конечно указать в настройках программы юзера для регл заданий.

   0xFFFFFF

13 — 22.09.10 — 11:19

А лучше вместо этого мозго…кхм сделать виндовую задачу с передачей туды параметра…

   0xFFFFFF

14 — 22.09.10 — 11:20

+(13) если задач немного (1,2,3)

  

Merkuce

15 — 22.09.10 — 11:21

Все, спасибо всем, разобралась

Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn

  

Merkuce

22.09.10 — 11:03

Разбираюсь с регламентными и фоновыми заданиями.

Следующая строка кода в типовой консоли заданий

ФоновыеЗадания.ПолучитьФоновыеЗадания();

выдает ошибку

ФоновыеЗадания.ПолучитьФоновыеЗадания()    {(1)}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.    

Как этот менеджер активировать?

  

zbv

1 — 22.09.10 — 11:05

файловая ?

  

Merkuce

2 — 22.09.10 — 11:06

да

  

0xFFFFFF

3 — 22.09.10 — 11:07

ой, ща отправят справку читать…

  

zbv

4 — 22.09.10 — 11:08

(2) переводи на сервер, либо в настройках указывай пользователя под которым запускаются рег.задания и не забудь запустить 1сину под этим юзером.

  

0xFFFFFF

5 — 22.09.10 — 11:08

Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

·         В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

После того, как клиентский процесс, выполняющий обработку фоновых заданий, запущен, остальные клиентские процессы получают возможность программного доступа к механизму фоновых заданий, т.е. могут запускать и управлять фоновыми заданиями.

  

smitru

6 — 22.09.10 — 11:09

(0) перейди на клиент-сервер — многое будет понятнее :-)

  

Merkuce

7 — 22.09.10 — 11:11

я нашла , что должен быть выполнен метод ВыполнитьОбработкуЗаданий()

Но где его выполнять? И почему его нужно выполнять несколько раз, я хочу , чтобы задания выполнялись по расписанию регламентных заданий

  

Merkuce

8 — 22.09.10 — 11:16

(4) я в этой самой консоли заданий указала юзера, под которым запуск производится.

(6) нет сейчас возожности

  

zbv

9 — 22.09.10 — 11:16

(8) указать надо в Настройках программы.

в консоли это не то — это типа «Ответственный» в документах.

  

Shurjk

10 — 22.09.10 — 11:18

(8) Запусти под этим юзером приложение, и настрой задание с помощью консоли заданий и будет тебе счастье.

  

0xFFFFFF

11 — 22.09.10 — 11:19

В ПриНачалеРаботыСистемы делай ПОД ОПРЕДЕЛЕННЫМ ПОЛЬЗОВАТЕЛЕМ ПодключитьОбработчикОжидания. С определенной периодичностью (минута например) внутри этого обработчика вызывай ВыполнитьОбработкуЗаданий()

  

Shurjk

12 — 22.09.10 — 11:19

+(10) А ну и конечно указать в настройках программы юзера для регл заданий.

  

0xFFFFFF

13 — 22.09.10 — 11:19

А лучше вместо этого мозго…кхм сделать виндовую задачу с передачей туды параметра…

  

0xFFFFFF

14 — 22.09.10 — 11:20

+(13) если задач немного (1,2,3)

  

Merkuce

15 — 22.09.10 — 11:21

Все, спасибо всем, разобралась

Как на календарь назначить задачи

SOBOLEV
03.09.2010 14:44 Прочитано: 4416

Здравствуйте пожалуйста помогите с вопросом желательно бы пример кода +) )

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
03.09.2010 16:02 Ответ № 1

Что значит на календарь добавить задачи? как в аутлуке что ли?

SOBOLEV
03.09.2010 16:59 Ответ № 2

ну вот смотри допустим я хочу чтобы в определённую дату формировался определённый отчёт самостоятельно. это возможно?

E_Migachev
06.09.2010 13:42 Ответ № 3

Да, для этого есть Регламентные задания!

SOBOLEV
07.09.2010 10:49 Ответ № 4

а можно по подробней!

E_Migachev
07.09.2010 12:31 Ответ № 5

(4) SOBOLEV, подробнее о регламентных заданиях здесь
Создаешь задание, в коде обработки пишешь код формирования отчета, в котором указываешь любую дату, куда сохранить, что вывести в отчет…

SOBOLEV
08.09.2010 16:57 Ответ № 6

Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры

ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
у меня файловый вариант работы но у меня она не работает я прав её же в модуль вставлять?

E_Migachev
08.09.2010 17:10 Ответ № 7

(6) используй для запуска обработку из 5 ответа

E_Migachev
08.09.2010 17:29 Ответ № 8

для ручного запуска, для отладки:
Вотссылка на обработку
Запускаешь ее, указываешь какое регламентное задание выполнить и жмешь выполнить

Для автоматического запуска в файловом варианте:
ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
Добавляешь это в Модуле Приложений

SOBOLEV
09.09.2010 09:20 Ответ № 9

ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
спасибо за консоли это понятно вот ещё вопрос в общем модуле я создаю задание выпрыгивает модуль я туда вставляю Обработчик ожидания правильно? если да то у меня он почему то не работает выдаёт ошибку при сохранении {ОбщийМодуль.РегламентныеПроцедуры(3,15)}: Обнаружено логическое завершение исходного текста модуля
КонецПроцедуры<<?>>
Из а этого нечего не работает как я понял.

SOBOLEV
09.09.2010 09:22 Ответ № 10

просто обычно все работают в созданной конфигурации а я создаю свою может быть с этим связано?? *17

SOBOLEV
09.09.2010 09:34 Ответ № 11

и ещё когда запускаешь консоль заданий выпрыгивает
{Форма.ФормаКонсоли(104)}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.
Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
по причине:
Менеджер заданий не активен.
что это? )

E_Migachev
09.09.2010 10:11 Ответ № 12

Вообщем так: про Менеджер заданий не активен
А если в каратце, то нужно сделать так:
1. Создать пользователя Регламент
2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста ВыполнитьОбработкуЗаданий
Код 1C v 8.х

  Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3);

3. Когда хочешь чтобы Регламентные задания выполнялись, запускаешь базу под этим пользователем(клиентский процесс) и пусть она висит запущенная! И Не рекомендуется это клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

SOBOLEV
10.09.2010 11:21 Ответ № 13

где в пользователе можно поставить второй пункт+) 2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста и какие прова ему следует задать администратора??

E_Migachev
10.09.2010 11:35 Ответ № 14

Права полные задавай,
а про выполнение сделай так:
1. Созай новую обработку, в модуле добавь процедуру:
Код 1C v 8.х

   Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры

А в процедуре кнопки Выполнить
Код 1C v 8.х

 ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3);   

2. Запускай базу от этого пользователя
3. открывай созданную обработку и жми Выполнить
4. Проверяй в Журнале Регистарции, выполняются ли регламентные задания?!

SOBOLEV
14.09.2010 13:14 Ответ № 15

как сделать что бы 2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста ВыполнитьОбработкуЗаданий ?
и как Проверяй в Журнале Регистарции, выполняются ли регламентные задания ? там же толька показан сеанс?

SOBOLEV
14.09.2010 13:18 Ответ № 16

е иещё все регламентные задания навешать на пользователя Регламент и когда я буду под ним заходить всё будет автоматически выполнятся

SOBOLEV
14.09.2010 13:18 Ответ № 17

е иещё все регламентные задания навешать на пользователя Регламент и когда я буду под ним заходить всё будет автоматически выполнятся

E_Migachev
14.09.2010 16:05 Ответ № 18

Продолжение в использование Регламентированных заданий

Подсказка: Для редактирования своего ответа щелкните по значку (справа)

{МодульПриложения}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.

в ТРЕХ ЗВЕННОЙ архитектуре ошибок не выдает

Так в файловой фоновые задания по умолчанию на запускаются. Вот их и нет. А вообще в файловом варианте зачем использовать фоновые задания?

Как я понял нельзя завести фоновые задания в файловой версии. но в описании нет намека на это ограничение : Методы: Описание: Менеджер фоновых заданий. См. также: Глобальный контекст, свойство ФоновыеЗадания Также по методу: Синтаксис: ПолучитьФоновыеЗадания(<Отбор>) Параметры: <Отбор> (необязательный) Тип: Структура. Структура, задающая отбор. Полями структуры могут быть: УникальныйИдентификатор, Ключ, Состояние, Начало, Конец, Наименование, ИмяМетода, РегламентноеЗадание. Если отбор не задан, получаются все задания. Если выполняется отбор по состояниям, то в качестве значения поля Состояние структуры может быть или перечисление СостояниеФоновогоЗадания, если идет выборка только по одному состоянию, или массив перечислений СостояниеФоновогоЗадания, если идет выборка по нескольким состояниям. Если выполняется отбор по регламентному заданию, то получаются все фоновые задания, которые были созданы по заданному регламентному заданию. Отбор по полю Начало получает все фоновые задания, которые запущены после заданной даты. Отбор по полю Конец получает все фоновые задания завершенные до заданной даты. Возвращаемое значение: Тип: Массив. Описание: Получает массив фоновых заданий по заданному отбору. Получение заданий возможно только для администратора или пользователя, запустившего задания на выполнение.

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


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

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

1C запуск фоновых заданий — Пример работы с фоновыми заданиями 1С

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

Cразу оговорюсь, что приведенный пример разрабатывался в клиент-серверном варианте работы базы.

Массив фоновых заданий 1С

На рисунке представленном выше видно содержимое данного массива.

Обратите внимание на поле «Состояние». Оно содержит информацию о том, успешно ли было выполнено запущенное фоновое задание или же оно еще выполняется.

Также там содержится информация о неудачном выполнении задания. Еще этот массив содержит информацию о ключах, уникальных идентификаторах, наименовании фоновых заданий. Информация о выполняющихся и выполненных заданиях хранится в информационной базе, но есть ограничение на количество хранимых записей в таблице. Это количество составляет порядка 1000 записей. То есть при добавлении новых элементов старые удаляются. Также задание удаляется из таблицы если оно было выполнено более суток назад.

Пример работы с фоновым заданием 1C — Метод «ПолучитьФоновыеЗадания»

Давайте также рассмотрим работу с фоновыми заданиями на примере метода «ПолучитьФоновыеЗадания()». В данном методе есть возможность установить отбор на получаемые записи. То есть в качестве параметра метода нам нужно передать структуру.

Структура может содержать поля: Уникальный идентификатор, Ключ, Состояние, Начало, Конец, Наименование, ИмяМетода, РегламентноеЗадание.

Например, если бы нам нужны были только выполняющиеся задания мы бы накладывали отбор с именем элемента структуры «Состояние» и значением бы мы указали системное перечисление «СостояниеФоновогоЗадания» в состояние активно. Итак, для начала необходимо добиться того, чтобы в демонстрационной базе появились записи о выполнении фоновых заданий 1С.

Для реализации примера сделаем следующее:
1. Создадим общий модуль «ОбработчикиФоновыхЗаданий», выполняемый на сервере.
Общий модуль ОбработчикиФоновыхЗаданий

И добавим в него следующий код:

Процедура ПроизвестиФоновоеВычисление(Параметр) Экспорт

ВремНач = ТекущаяДата();

Пока ТекущаяДата()-ВремНач <= 6 Цикл

КонецЦикла;

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

2. Создадим обработку, разместим на форме кнопку «Выполнить задание в фоне» и в процедуре обработки события нажатия на кнопку добавим код:

&НаКлиенте
Процедура ВыполнитьЗадание(Команда)
	
	ВыполнитьФоновоеЗаданиеНаСервере();
	
КонецПроцедуры

Описание вызываемой процедуры:

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

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

Теперь запустим 1С в режиме предприятия и запустим выполнение фонового задания.

Кнопка Выполнить задание в фоне

Готово. Этими действиями мы добились того, что в нашей демонстрационной базе появились записи о выполнении фоновых заданий 1С и теперь можно продемонстрировать пример получения их массива, содержащегося в нашей базе.

Добавим на форму еще одну кнопку «Получить фоновые задания». Напишем в процедуре обработки нажания следующий код:

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

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

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

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

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

Запустим 1С на выполнение и нажмем кнопку «Получить фоновые задания».

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

В окно сообщений выведутся наименования выполняющихся и выполненных в 1С фоновых заданий с наименованием «Тестовое задание 2», так как мы сделали отбор именно по этому наименованию. Укажем в параметрах отбора наименование «Тестовое задание» и получим массив содержащий элементы данного задания.

Надеюсь приведенный выше пример дал вам некоторое понятие о механизме фоновых заданиях реализованном в системе 1С. Более детально ознакомиться со всеми тонкостями вы можете во встроенном синтакс-помошнике 1С.

Скачать базу с примером работы с фоновым заданием вы можете тут

Вы еще не читали? Вам это будет интересно…

  • 1С фоновое задание — Общее описание механизма
  • Отладка фоновых (регламентных) заданий в 1С 8
  • Пример работы с деревом значений в 1С. Часть первая — добавление строк
  • Рабочие процессы 1С
  • Удаленное программирование в 1С. Какие преимущества?

Как на календарь назначить задачи

SOBOLEV
03.09.2010 14:44 Прочитано: 4502

Здравствуйте пожалуйста помогите с вопросом желательно бы пример кода +) )

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
03.09.2010 16:02 Ответ № 1

Что значит на календарь добавить задачи? как в аутлуке что ли?

SOBOLEV
03.09.2010 16:59 Ответ № 2

ну вот смотри допустим я хочу чтобы в определённую дату формировался определённый отчёт самостоятельно. это возможно?

E_Migachev
06.09.2010 13:42 Ответ № 3

Да, для этого есть Регламентные задания!

SOBOLEV
07.09.2010 10:49 Ответ № 4

а можно по подробней!

E_Migachev
07.09.2010 12:31 Ответ № 5

(4) SOBOLEV, подробнее о регламентных заданиях здесь
Создаешь задание, в коде обработки пишешь код формирования отчета, в котором указываешь любую дату, куда сохранить, что вывести в отчет…

SOBOLEV
08.09.2010 16:57 Ответ № 6

Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры

ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
у меня файловый вариант работы но у меня она не работает я прав её же в модуль вставлять?

E_Migachev
08.09.2010 17:10 Ответ № 7

(6) используй для запуска обработку из 5 ответа

E_Migachev
08.09.2010 17:29 Ответ № 8

для ручного запуска, для отладки:
Вотссылка на обработку
Запускаешь ее, указываешь какое регламентное задание выполнить и жмешь выполнить

Для автоматического запуска в файловом варианте:
ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
Добавляешь это в Модуле Приложений

SOBOLEV
09.09.2010 09:20 Ответ № 9

ПодключитьОбработчикОжидания(«ОбработкаЗаданий», 3);
спасибо за консоли это понятно вот ещё вопрос в общем модуле я создаю задание выпрыгивает модуль я туда вставляю Обработчик ожидания правильно? если да то у меня он почему то не работает выдаёт ошибку при сохранении {ОбщийМодуль.РегламентныеПроцедуры(3,15)}: Обнаружено логическое завершение исходного текста модуля
КонецПроцедуры<<?>>
Из а этого нечего не работает как я понял.

SOBOLEV
09.09.2010 09:22 Ответ № 10

просто обычно все работают в созданной конфигурации а я создаю свою может быть с этим связано?? *17

SOBOLEV
09.09.2010 09:34 Ответ № 11

и ещё когда запускаешь консоль заданий выпрыгивает
{Форма.ФормаКонсоли(104)}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.
Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
по причине:
Менеджер заданий не активен.
что это? )

E_Migachev
09.09.2010 10:11 Ответ № 12

Вообщем так: про Менеджер заданий не активен
А если в каратце, то нужно сделать так:
1. Создать пользователя Регламент
2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста ВыполнитьОбработкуЗаданий
Код 1C v 8.х

  Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры
ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3);

3. Когда хочешь чтобы Регламентные задания выполнялись, запускаешь базу под этим пользователем(клиентский процесс) и пусть она висит запущенная! И Не рекомендуется это клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

SOBOLEV
10.09.2010 11:21 Ответ № 13

где в пользователе можно поставить второй пункт+) 2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста и какие прова ему следует задать администратора??

E_Migachev
10.09.2010 11:35 Ответ № 14

Права полные задавай,
а про выполнение сделай так:
1. Созай новую обработку, в модуле добавь процедуру:
Код 1C v 8.х

   Процедура ОбработкаЗаданий()
ВыполнитьОбработкуЗаданий();
КонецПроцедуры

А в процедуре кнопки Выполнить
Код 1C v 8.х

 ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3);   

2. Запускай базу от этого пользователя
3. открывай созданную обработку и жми Выполнить
4. Проверяй в Журнале Регистарции, выполняются ли регламентные задания?!

SOBOLEV
14.09.2010 13:14 Ответ № 15

как сделать что бы 2. ТОЛЬКО для этого пользователя периодически вызывать функцию глобального контекста ВыполнитьОбработкуЗаданий ?
и как Проверяй в Журнале Регистарции, выполняются ли регламентные задания ? там же толька показан сеанс?

SOBOLEV
14.09.2010 13:18 Ответ № 16

е иещё все регламентные задания навешать на пользователя Регламент и когда я буду под ним заходить всё будет автоматически выполнятся

SOBOLEV
14.09.2010 13:18 Ответ № 17

е иещё все регламентные задания навешать на пользователя Регламент и когда я буду под ним заходить всё будет автоматически выполнятся

E_Migachev
14.09.2010 16:05 Ответ № 18

Продолжение в использование Регламентированных заданий

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.

{МодульПриложения}: Ошибка при вызове метода контекста (ПолучитьФоновыеЗадания): Менеджер заданий не активен.

в ТРЕХ ЗВЕННОЙ архитектуре ошибок не выдает

Так в файловой фоновые задания по умолчанию на запускаются. Вот их и нет. А вообще в файловом варианте зачем использовать фоновые задания?

Как я понял нельзя завести фоновые задания в файловой версии. но в описании нет намека на это ограничение : Методы: Описание: Менеджер фоновых заданий. См. также: Глобальный контекст, свойство ФоновыеЗадания Также по методу: Синтаксис: ПолучитьФоновыеЗадания(<Отбор>) Параметры: <Отбор> (необязательный) Тип: Структура. Структура, задающая отбор. Полями структуры могут быть: УникальныйИдентификатор, Ключ, Состояние, Начало, Конец, Наименование, ИмяМетода, РегламентноеЗадание. Если отбор не задан, получаются все задания. Если выполняется отбор по состояниям, то в качестве значения поля Состояние структуры может быть или перечисление СостояниеФоновогоЗадания, если идет выборка только по одному состоянию, или массив перечислений СостояниеФоновогоЗадания, если идет выборка по нескольким состояниям. Если выполняется отбор по регламентному заданию, то получаются все фоновые задания, которые были созданы по заданному регламентному заданию. Отбор по полю Начало получает все фоновые задания, которые запущены после заданной даты. Отбор по полю Конец получает все фоновые задания завершенные до заданной даты. Возвращаемое значение: Тип: Массив. Описание: Получает массив фоновых заданий по заданному отбору. Получение заданий возможно только для администратора или пользователя, запустившего задания на выполнение.

  • Ошибка при вызове метода контекста создать ошибка подключения внешних метаданных файл не обнаружен
  • Ошибка при вызове метода контекста прочитатьjson недопустимое состояние потока записи json
  • Ошибка при вызове метода контекста получитьссылку
  • Ошибка при вызове метода контекста создать нарушение прав доступа
  • Ошибка при вызове метода контекста прочитать формат файла не поддерживается