> For the complete documentation index, see [llms.txt](https://docs.onerpa.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.onerpa.ru/mcp-servery-1c/servery/templates-search-server/svoi-shablony.md).

# Свои шаблоны

Добавление собственных шаблонов кода в TemplatesSearchServer.

## Способы добавления

### 1. Через MCP-инструмент (из чата с ИИ)

ИИ может добавлять шаблоны программно через инструмент `add_template`. Обычно шаблон сразу сохраняется и индексируется без перезапуска. Если ответ содержит `status: "index_pending"` и `stored: true`, строка уже сохранена, но индекс ещё догоняет её через outbox — не повторяйте вызов, чтобы не создать дубль.

| Параметр      | Описание                                         |
| ------------- | ------------------------------------------------ |
| `description` | Подробное описание шаблона (минимум 10 символов) |
| `code`        | Исходный код на языке 1С (минимум 10 символов)   |

Пример запроса в чате:

> "Добавь шаблон для асинхронного оповещения пользователя с кодом ПоказатьОповещениеПользователя..."

ИИ вызовет `add_template`; при обычном успехе шаблон сразу доступен через `templatesearch`, а при `index_pending` станет доступен после фонового восстановления индекса.

### 2. Через веб-интерфейс

1. Откройте `http://localhost:8004/extend/` и войдите под учётной записью с разрешением `create`
2. Заполните поля «Описание» и «Код»
3. Сохраните

Шаблон автоматически индексируется для поиска.

### 3. Через файлы

Шаблоны хранятся в SQLite-базе в папке `/app/chroma_db` (на хосте `E:\bases\mcp_templates`). В том же каталоге находится индекс zvec.

## Рекомендации по созданию

### Название

* Краткое и понятное
* Описывает суть шаблона
* Пример: "Обход выборки запроса"

### Описание

* Когда использовать
* Особенности
* Ограничения

### Код

* Рабочий код на языке 1С
* Комментарии в ключевых местах
* Плейсхолдеры для параметров

## Пример хорошего шаблона

**Название:** Асинхронное оповещение пользователя

**Описание:** Показывает оповещение пользователю с картинкой и навигационной ссылкой.

**Код:**

```bsl
// Асинхронное оповещение
ПоказатьОповещениеПользователя(
    НСтр("ru = 'Заголовок оповещения'"),           // Заголовок
    "e1cib/data/Справочник.Номенклатура?ref=",    // Навигационная ссылка
    НСтр("ru = 'Текст оповещения'"),              // Текст
    БиблиотекаКартинок.Информация,                // Картинка
    СтатусОповещенияПользователя.Информация       // Статус
);
```

**Теги:** оповещение, уведомление, пользователь, асинхронный

## Организация шаблонов

### Категории

Создавайте шаблоны по категориям:

* Шаблоны вашей команды
* Шаблоны по проекту
* Типовые конструкции

### Именование

Используйте префиксы:

* `[ПРОЕКТ]` — для проектных шаблонов
* `[КОМАНДА]` — для командных стандартов

## Индексация

Шаблоны, добавленные через MCP или веб-интерфейс, индексируются автоматически. Обычно они доступны сразу; состояние `index_pending` означает, что долговечная запись уже создана, а outbox завершит индексацию. Перезапуск и повторное добавление **не требуются**.

### Принудительная переиндексация

Если необходимо полностью перестроить векторный индекс (например, после смены embedding-модели):

```powershell
docker rm -f template_search_mcp

docker run -d -p 127.0.0.1:8004:8004 `
  --name template_search_mcp `
  -e LICENSE_KEY=YOUR_LICENSE_KEY `
  -e RESET_DATABASE=true `
  -v "E:/bases/mcp_templates:/app/chroma_db" `
  comol/template-search-mcp:latest-beta
```

`RESET_DATABASE=true` перестраивает только векторный индекс zvec. SQLite-база с шаблонами и заметками сохраняется.

## Импорт/Экспорт

### Экспорт шаблонов

```powershell
# Архивирование шаблонов
Compress-Archive -Path "E:\bases\mcp_templates\*" -DestinationPath "E:\backup\templates.zip"
```

### Импорт шаблонов

```powershell
# Распаковка в папку данных
Expand-Archive -Path "E:\backup\templates.zip" -DestinationPath "E:\bases\mcp_templates" -Force
```
