Перейти к содержимому

Модель project.project: как устроен Project в Odoo

Подробное руководство по модели проектов в Odoo для разработчиков и функциональных консультантов
11 марта 2026 г. от
Модель project.project: как устроен Project в Odoo
Dasolo
| Комментариев пока нет

Введение


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


Знание моделей важно и для консультантов, и для разработчиков: именно через модели реализуется структура данных, связи между объектами и бизнес-логика. В Odoo все модели следуют единым принципам, что позволяет предсказуемо настраивать и расширять систему.


В этой статье мы разбираем одну из ключевых моделей платформы — project.project. Если вы настраиваете проекты, пишете кастомные модули или интегрируете внешние сервисы, рано или поздно вам придётся работать с этой моделью.

Что такое модель project.project


Модель project.project — это «контейнер» для проекта в Odoo: она хранит общие настройки проекта, метаданные и привязки к задачам, вехам и участникам команды. Каждый проект в системе — это отдельная запись этой модели.


На практическом уровне Project (приложение «Проекты») оперирует записями project.project: при создании проекта создаётся record этой модели, а задачи связываются с ним через поле task_ids. Сам проект задаёт этапы, состав команды и правила видимости.


Определение модели находится в модуле project, но другие модули дополняют её через наследование: модуль Sale — для учёта выставления счетов к проектам, Timesheet — для учёта рабочего времени, Project Planning — для диаграмм Ганта. Такой подход позволяет добавлять нужный функционал, не ломая основу.


Важно различать роль project.project и project.task: проект хранит общие настройки и структуру, задачи — это единичные рабочие элементы. Взаимодействие обеих моделей формирует типичный сценарий управления проектами в Odoo.

Ключевые поля в модели


Ниже перечислены основные поля модели project.project — знание их назначения поможет эффективно конфигурировать проекты и интеграции.


1. name

Тип: Char. Название проекта — главный читабельный идентификатор записи, отображается в списках, карточках и меню.


2. create_date

Тип: Datetime. Дата и время создания записи. Заполняется автоматически, полезно для аудита и отчётности.


3. write_date

Тип: Datetime. Дата и время последнего изменения. Также управляется системой, помогает отслеживать актуальность данных.


4. active

Тип: Boolean. Флаг архивирования — при false проект скрывается из стандартных видов, но не удаляется физически.


5. sequence

Тип: Integer. Порядок отображения при сортировке — меньшие значения выводятся выше.


6. color

Тип: Integer. Индекс цвета для визуального разделения проектов в канбане и списках.


7. user_id

Тип: Many2one (res.users). Менеджер проекта — пользователь, ответственный за проект и часто используемый как дефолтный исполнитель задач.


8. company_id

Тип: Many2one (res.company). В мультикомпании указывает, к какой компании относится проект.


9. partner_id

Тип: Many2one (res.partner). Клиент или контрагент проекта — служит для биллинга и аналитики.


10. description

Тип: Html. Описание проекта: можно форматировать текст, добавлять ссылки и заметки для команды или клиента.


11. date_start

Тип: Date. Дата начала проекта — важна для планирования и сроков.


12. date

Тип: Date. Дата окончания или дедлайн проекта — используется для контроля сроков.


13. task_ids

Тип: One2many (project.task). Список задач проекта — основная связь между проектом и задачами.


14. task_count

Тип: Integer. Число задач в проекте — вычисляемое поле, созданное на основе task_ids, удобно для фильтров и дашбордов.


15. type_ids

Тип: Many2many (project.task.type). Перечень этапов/статусов для задач проекта — определяет workflow (например: «Новые», «В работе», «Готово»).


16. tag_ids

Тип: Many2many (project.tags). Теги для категоризации проектов — помогают фильтрации и отчётам.


17. privacy_visibility

Тип: Selection. Настройка видимости проекта: приватный для приглашённых внутренних пользователей, доступный для всех сотрудников или публичный для приглашённых по порталу и внутренних пользователей.


18. collaborator_ids

Тип: One2many (project.collaborator). Участники проекта — кто может работать над задачами и получать уведомления.


19. favorite_user_ids

Тип: Many2many (res.users). Пользователи, добавившие проект в избранное — быстрый доступ в интерфейсе.


20. allow_task_dependencies

Тип: Boolean. Включает зависимости между задачами (предшественник/последователь) — полезно для планирования и графиков выполнения.


21. allow_milestones

Тип: Boolean. Включает поддержку вех в проекте — вехи служат маркерами ключевых результатов.


22. milestone_ids

Тип: One2many (project.milestone). Список вех проекта — для отслеживания контрольных точек.


23. rating_active

Тип: Boolean. Разрешает оценивать проект клиентами — инструмент обратной связи.


24. task_properties_definition

Тип: Text (JSON). Определение дополнительных свойств задач в формате JSON — позволяет добавлять кастомные поля на уровне проекта.


25. access_url

Тип: Char. Ссылка для доступа клиентов через портал — удобна для совместной работы с заказчиком.


26. access_token

Тип: Char. Токен безопасности для портального доступа — ограничивает просмотр проекта только по защищённой ссылке.


27. alias_id

Тип: Many2one (mail.alias). Почтовый алиас проекта: письма на этот адрес могут автоматически создавать задачи.


28. activity_ids

Тип: One2many (mail.activity). Запланированные активности по проекту — напоминания и задачи для следования.


29. activity_state

Тип: Selection. Сводное состояние активности: «Сегодня», «Просрочено», «Запланировано» — вычисляется по activity_ids.


30. activity_date_deadline

Тип: Date. Дата ближайшей запланированной активности — помогает в планировании и напоминаниях.


31. message_ids

Тип: One2many (mail.message). Сообщения в чёттере проекта — история коммуникаций и обсуждений.


32. message_follower_ids

Тип: One2many (mail.followers). Подписчики проекта — получают уведомления о событиях и обновлениях.


33. create_uid

Тип: Many2one (res.users). Кто создал запись — автоматически проставляется системой.


34. write_uid

Тип: Many2one (res.users). Кто последний редактировал запись — автоматически проставляется системой.

Как модель применяется в бизнес-процессах


1. Создание и управление проектом

Когда менеджер или менеджер по продажам создаёт проект, он задаёт название, ответственного, даты и уровень доступа. Эти параметры сохраняются в записи project.project, после чего в проект начинают добавлять задачи и распределять обязанности.


2. Работа с рабочим процессом задач

Задачи переходят между этапами, заданными в type_ids, менеджер распределяет исполнителей среди collaborator_ids. Проект служит источником настроек workflow и состава команды.


3. Портал для клиента

Если в настройках стоит доступ через портал, клиент по ссылке access_url (с токеном access_token) может просматривать ход работ, задачи и вехи — удобно при совместных проектах с внешними заказчиками.


4. Учёт времени и биллинг

С модулем Timesheet проект связывается с учётом рабочего времени, а с модулем Sale — с выставлением счетов: partner_id связывает проект с клиентом, что позволяет привязывать время и стоимость к конкретным заказам.


5. Почтовая интеграция

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

Как разработчики расширяют модель


Разработчики расширяют project.project через стандарты Odoo — в первую очередь через механизмы наследования модели.


Наследование модели

В коде используют _inherit = 'project.project' чтобы расширить модель: добавить поля, переопределить методы или ввести ограничения. Это позволяет держать изменения в отдельном модуле и сохранять совместимость с обновлениями платформы.


Добавление полей

В расширении определяют новые поля: Char, Many2one, Boolean, Integer, Text, Selection и т.д. В мультикомпании учитывайте необходимость company-dependent полей для корректного поведения.


Расширения на Python

Переопределяйте методы create, write или unlink для добавления логики, не забывая вызывать super(), чтобы не нарушить базовую функциональность и зависимости вычисляемых полей.


Odoo Studio

Studio позволяет быстро добавлять поля и формы без кода — удобно для прототипов и простых кастомизаций. Для масштабируемых и обновляемых решений предпочтительнее писать полноценный модуль.

Рекомендации по использованию


  • Назначайте user_id для ответственного менеджера — это упрощает контроль и разграничение ответственности.
  • Настраивайте type_ids индивидуально для каждого проекта, чтобы этапы соответствовали реальному процессу вашей команды.
  • Правильно настраивайте privacy_visibility: приватный проект по умолчанию ограничивает доступ только назначенным участникам и администраторам.
  • При интеграции через API используйте XML-RPC или JSON-RPC: модель project.project доступна через API, но важно корректно маппить внешние идентификаторы и права доступа.
  • Для кастомных полей придерживайтесь префиксов x_ или своего модуля, чтобы избежать конфликтов с будущими версиями Odoo.

Частые ошибки


  • Создание задач без привязки к проекту. Каждая задача должна иметь project_id — иначе теряется контекст и многие механизмы не сработают.
  • Забыть задать type_ids. Без этапов задачи не смогут корректно переходить по workflow, что нарушит процесс управления.
  • Открыть публичный доступ (privacy_visibility) там, где нужен приватный режим — риск утечки внутренних данных.
  • Переопределение критических методов без вызова super(). Это часто ломает работу других модулей и осложняет апгрейды.
  • Добавление обязательных полей без значений по умолчанию. Существующие записи будут невалидны при обновлении модуля.

Заключение


Модель project.project — ядро управления проектами в Odoo: она хранит настройки, этапы и структуру команды. Понимание её полей и способов расширения позволит правильно настраивать систему и интегрировать внешние процессы.


Будь вы консультантом, внедряющим проекты, или разработчиком, пишущим модули, хорошее знание project.project сэкономит время и уменьшит количество ошибок.

Нужна помощь с внедрением Odoo?


Dasolo помогает компаниям внедрять, настраивать и оптимизировать Odoo: мы делаем интеграции через API и пишем кастомные решения, основанные на глубоком понимании архитектуры данных Odoo и ключевых моделей вроде project.project.


Если вам нужна помощь с внедрением Odoo, разработкой модулей или интеграциями — мы готовы подключиться и реализовать решение. Запишитесь на демо чтобы обсудить ваш проект.

Модель project.project: как устроен Project в Odoo
Dasolo 11 марта 2026 г.
Поделиться этой записью
Войти оставить комментарий