ir.cron

** Создание автоматизированных действий в Odoo **

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

** 1. Создание модели и метод этой модели. **

class model_name(models.Model):
    _name = "model.name"
    # fields
    def method_name(self, cr, uid, context=None): # method of this model
        # your code

** 2. Создание автоматизированного действия **

`Если вы хотите создавать новые модули в руководствах от Odoo, вы должны добавить код для автоматизированного действия в yourDefaultModule / data / в отдельный файл XML.

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

<openerp>
    <data noupdate="1">
        <record id="unique_name" model="ir.cron">
            <field name="name">Name </field>
            <field name="active" eval="True" />
            <field name="user_id" ref="base.user_root" />
            <field name="interval_number">1</field>
            <field name="interval_type">days</field>
            <field name="numbercall">-1</field>
            <field name="doall">1</field>
            <!--<field name="nextcall" >2016-12-31 23:59:59</field>-->
            <field name="model" eval="'model.name '" />
            <field name="function" eval="'method_name '" />
            <field name="args" eval="" />
            <!--<field name="priority" eval="5" />-->
        </record>
    </data>
</openerp>

Первое, что вы заметите, это data `` noupdate = &quot;1&quot; ``, это говорит Odoo, что весь код в этом теге не должен обновляться при обновлении вашего модуля.

<record id="unique_name" model="ir.cron">

Идентификатор является уникальным идентификатором для Odoo, чтобы знать, какая запись связана с каким идентификатором. Модель под названием (&quot;ir.cron&quot;) - это модель, специально созданная Odoo для всех автоматизированных действий. Эта модель содержит все автоматизированные действия и всегда должна быть указана.

<field name="name">Name </field>

Следующая строка - это имя.

<field name="active" eval="True" />

Логическое значение, указывающее, активно ли задание cron.

<field name="user_id" ref="base.user_root"/>

Этот идентификатор пользователя относится к конкретному пользователю, в большинстве случаев это будет base.user_root.

<field name="interval_number">1</field>

Количество раз, которое планировщик должен быть вызван на основе &quot;interval_type&quot;

<field name="interval_type">days</field>

Интервальный блок.

В списке должно быть одно значение: `` minutes``, `` hours``, `` days``, `` days``, `` months``.

<field name="numbercall">-1</field>

Целочисленное значение, указывающее, сколько раз задание выполняется. Отрицательное значение означает отсутствие ограничений.

<field name="doall">1</field>

Логическое значение, указывающее, следует ли выполнять пропущенные вхождения при перезапуске сервера.

<field name="nextcall" >2016-12-31 23:59:59</field> <!-- notice the date/time format -->

Следующая запланированная дата выполнения для этой работы.

<field name="model" eval="'model.name '" />

Поле `` модель`` указывает, по какой модели должно вызываться автоматическое действие.

<field name="function" eval="'method_name '" />

Имя метода, вызываемого при обработке этого задания.

<field name="args" eval="" />

Аргументы для передачи в метод.

<field name="priority" eval="5" />

Приоритет задания, как целое число: 0 означает более высокий приоритет, 10 означает более низкий приоритет.

** Значения по умолчанию. **

имя Определение
nextcall `` лямбда * a: time.strftime (DEFAULT_SERVER_DATETIME_FORMAT``
приоритет 5
ID пользователя `` лямбда-объект, cr, uid, context: uid``
interval_number 1
interval_type месяцы
numbercall 1
активный 1
сделай все 1