---
title: "\u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u2014 Dinext"
description: "\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0437\u0430 \u0441\u0447\u0435\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438."
space: "Docs"
url: "https://docs.dinext.ru/docs/servisy-platformy/skripty-i-rasshireniya"
updated: "2026-07-09"
---

# Скрипты и расширения

## Назначение

Сервис обеспечивает расширение поведения системы за счет сценариев, правил и дополнительной логики без изменения ядра. Включает client script и server script платформы , визуальную оркестрацию бизнес-логики (flexirule) и проектные скрипты в fixtures .

## Цели и задачи

- Выполнять код на сервере при событиях документа (server script): валидация, расчеты, вызовы API.
- Менять поведение формы в браузере (client script): подстановка значений, показ/скрытие полей, проверки.
- Описывать бизнес-правила визуально (flexirule при установке).
- Использовать проектные скрипты из fixtures  для типовой логики проектного контура.
- Избегать разработки отдельного приложения для типовых доработок.

## Для кого

- Разработчики и продвинутые администраторы (server/client script).
- Аналитики и конфигураторы при использовании flexirule.
- Администраторы проектного контура .

## Основные понятия

- **Server Script** — скрипт на Python, выполняемый на сервере при событии (before_save, on_update и т.д.); создается через тип документа Server Script или в коде.
- **Client Script** — скрипт на JavaScript, выполняемый в форме (form load, field change и т.д.); привязка к тип документа.
- **safe_exec** — среда выполнения серверных скриптов с ограничениями безопасности .
- **script_manager.js** — менеджер загрузки и выполнения client script .
- **flexirule** — приложение визуальной оркестрации бизнес-логики (README).

## Основные сущности / объекты

- **script_manager.js**  — client script.
- **safe_exec.py**  — выполнение server script.
- **flexirule** (README) — визуальные правила.
- **Dinext** — server_script.json, client_script.json в fixtures.

## Основные сценарии / процессы

### Создание server script

1. Создать запись Server Script (или аналог в вашей версии): выбрать тип документа и событие (before_save, on_submit и т.д.).
2. Написать код на Python в допустимой среде (safe_exec): доступ к `doc`, `Dinext`; без произвольного доступа к файловой системе и опасных операций.
3. Сохранить и включить скрипт; при наступлении события он выполнится.
4. Логировать ошибки и проверять логи при сбоях.

### Создание client script

1. Создать Client Script: привязать к тип документа, выбрать событие (onload, onload_post_render, change поля и т.д.).
2. Написать JavaScript: доступ к `frm`, `Dinext`, полям формы; вызовы `Dinext.call` для серверных методов.
3. Сохранить; скрипт загрузится при открытии формы этого тип документа.
4. Отлаживать в консоли браузера при необходимости.

### Использование flexirule

1. В flexirule описать сценарий: условия, действия, вызовы методов.
2. Привязать к документу или процессу; активировать.
3. Правило выполняется при наступлении заданных условий без написания кода в приложении.

### Проектные скрипты

1. Скрипты поставляются в fixtures (server_script.json, client_script.json); при установке/обновлении приложения они применяются к сайту.
2. Не редактировать fixtures без версионирования; кастомные скрипты создавать отдельно (Server Script / Client Script) или в своем приложении.
3. При конфликте приоритет у явно созданных скриптов в зависимости от порядка загрузки.

## Правила и ограничения

- Server script выполняется в ограниченной среде (safe_exec); часть API может быть недоступна.
- Client script имеет доступ к форме и к вызовам API; не хранить секреты и не доверять данным с клиента без проверки на сервере.
- Слишком тяжелые или частые скрипты могут влиять на производительность; оптимизировать и кэшировать где возможно.
- flexirule совместимость с версией Dinext и другими приложениями уточнять в README.

## Результаты / отчетность

- Измененное поведение форм и документов по событиям.
- Логи выполнения скриптов при ошибках (Error Log, логи приложения).
- Аудит изменений через версионирование скриптов при хранении в коде.

## Типовые вопросы и ошибки (FAQ)

### Server script не срабатывает

Проверьте: скрипт включен (disabled = 0); событие совпадает (before_save, on_update и т.д.); тип документа указан верно; в коде нет синтаксической ошибки. Просмотрите Error Log и логи воркера.

### Как вызвать серверный метод из client script?

`Dinext.call({ method: 'путь.к.методу', args: { ... }, callback: function(r) { ... } })`. Метод должен быть помечен как whitelisted или вызываться из разрешенного контекста.

### Чем flexirule отличается от server script?

flexirule — визуальное описание правил без написания кода; подходит для условий и простых действий. Server script — произвольный код; подходит для сложной логики и интеграций. Выбор зависит от задачи и навыков команды.

## Связанные темы

- [Low-code кастомизация](/docs/servisy-platformy/low-code-kastomizatsiya)
- [Workflow](/docs/servisy-platformy/workflow)
- [Изменения](/docs/biznes-funktsii/izmeneniya)
- [Фоновые задания](/docs/servisy-platformy/fonovye-zadaniya)
