Расширение для Cursor с инструментами разработки для экосистемы 1С. Предоставляет удобный интерфейс для работы с проектами 1С через панель команд и дерево задач.
Возможности
Все команды организованы по категориям и доступны через:
- Откройте панель "1C Dev Tools"
- Все команды доступны через дерево задач в нижней панели
Палитра команд
- Все команды доступны через поиск в палитре команд
Доступные команды
Информационные базы
- Создать пустую ИБ
- Постобработка обновления
- Запретить работу с внешними ресурсами
- Выгрузить в dt / Загрузить из dt
Конфигурация
- Загрузить из src/cf (загрузка основной конфигурации из исходников)
- Обновить из src/cf (обновление основной конфигурации из исходников которые указаны в файле build/commit/Commit.txt)
- Загрузить из 1Cv8.cf
- Выгрузить в src/cf (выгрузка основной конфигурации в исходники)
- Выгрузить обновление в src/cf (выгрузка только изменений основной конфигурации в исходники)
- Выгрузить в 1Cv8.cf
- Выгрузить файл поставки в 1Cv8dist.cf
- Собрать 1Cv8.cf из src/cf
- Разобрать 1Cv8.cf в src/cf
Расширения
- Загрузить из src/cfe (загрузка всех расширений из исходников, расширения делятся на подкаталоги)
- Загрузить из *.cfe
- Выгрузить в src/cfe (выгрузка всех расширений в исходники, расширения делятся на подкаталоги)
- Выгрузить обновление в src/cfe (выгрузка только изменений всех расширений в исходники, расширения делятся на подкаталоги)
- Обновить из src/cfe (обновление всех расширений из исходников которые указаны в файле build/commit/Commit.txt)
- Выгрузить в *.cfe
- Собрать *.cfe из src/cfe
- Разобрать *.cfe в src/cfe
Внешние файлы
- Собрать внешнюю обработку / внешний отчёт
- Разобрать внешнюю обработку / внешний отчёт
- Очистить кэш
Зависимости
- Инициализировать packagedef
- Установить / Удалить зависимости
Запуск
- Запустить Предприятие
- Запустить Конфигуратор
Задачи и конфигурации
- Задачи (workspace) — из tasks.json
- Конфигурации запуска — env.json, launch.json
Требования
- Cursor IDE
- Node.js версии 18.x или выше
- OneScript (oscript) - для выполнения скриптов. Ссылка https://oscript.io/
Установка
- В переменных windows окружения создать переменную oscript (указать путь C:\Program Files\OneScript\bin\oscript.exe)
- Откройте Cursor
- Нажмите Ctrl+Shift+P - установка пакета vsix
- Выберите файл
- Закройте Cursor, откройте повторно
Настройка
Примеры файлов packagedef + env.json + oscript_modules в репозитории https://github.com/asweetand-a11y/DevTool1C.
Расширение автоматически активируется при открытии проекта 1С (наличие файла packagedef в корне проекта).
Настройки доступны через в "1C Dev Tools" - "Конфигурации запуска". Параметры подключения к информационной базе настраиваются в файле env.json в корне проекта:
{
"$schema": "https://raw.githubusercontent.com/vanessa-opensource/vanessa-runner/develop/vanessa-runner-schema.json",
"default": {
"--ibconnection": "/F./build/ib",
"--infoBase": "Имя информационной базы",
"--db-user": "Пользователь",
"--db-pwd": "Пароль",
"--root": ".",
"--workspace": ".",
"--v8version": "8.3.27",
"--v8-platform-root": "C:/Program Files/1cv8",
"--debug-server": "<имя сервера отладки или если локально то имя компьютера>",
"--debug-port-range": "1560:1591",
"--locale": "ru",
"--language": "ru",
"--additional": "/DisplayAllFunctions /Lru /iTaxi /TESTMANAGER",
"--ordinaryapp": "-1"
}
}
В папку с проектом скопировать oscript_modules для подмены модулей onescript. Оригиналы можно взять https://github.com/asweetand-a11y/DevTool1C.
Параметры отладки модулей BSL (утилита dbgs.exe)
При активации расширения 1C Dev Tools:
- Работает только по протоколу http!
- Если сервер отладки локально: выполняется попытка запуска сервера отладки dbgs.exe.
- Если сервер отладки удаленно: выполняется попытка подключения.
- В конфигураторе измените режим запуска отладки на http протокол.
Параметры в launch.json:
{
"configurations": [
{
"type": "onec",
"request": "launch",
"name": "1C: Запуск с фоновыми заданиями",
"debugServerHost": "localhost",
"debugServerPort": 1560,
"infoBaseAlias": "DefAlias",
"autoAttachTypes": [
"Client",
"Server",
"Job",
"JobFileMode"
]
},
{
"type": "onec",
"request": "launch",
"name": "1C: Запуск без фоновых заданий",
"debugServerHost": "localhost",
"debugServerPort": 1560,
"infoBaseAlias": "DefAlias",
"autoAttachTypes": [
"Client",
"Server"
]
},
{
"type": "onec",
"request": "attach",
"name": "1C: Присоединиться",
"debugServerHost": "localhost",
"debugServerPort": 1560,
"infoBaseAlias": "DefAlias",
"autoAttachTypes": [
"Client",
"Server"
]
}
]
}
autoAttachTypes — типы целей RDBG для автоподключения. Допустимые значения: Client, ManagedClient, WebClient, ComConnector, Server, ServerEmulation, WebService, HttpService, OData, Job, JobFileMode, MobileClient, MobileServer, MobileJobFileMode, MobileManagedClient, MobileManagedServer. Пресеты Client и Server при отправке в сервер отладки разворачиваются в набор подтипов (клиент: обычный, менеджер, веб, мобильный; сервер: сервер, файловый режим, мобильный сервер). Остальные типы передаются в RDBG как указано. Неизвестные строки в конфигурации подсвечиваются предупреждением в консоли отладки, но всё равно отправляются в setAutoAttachSettings.
В настройках расширения можно управлять таймингами обмена с сервером отладки
Параметры настраиваются через 1c-dev-tools.debug.timings:
| Настройка |
По умолчанию |
Описание |
| varFetchDelayMs |
50 |
Задержка между retry при пустом ответе evalLocalVariables/evalExpr |
| calcWaitingTimeMs |
100 |
calcWaitingTime в RDBG — ожидание результата вычислений |
| pingIntervalMs |
50 |
Интервал ping при выполнении (мс). 50 — стабильность целей |
| pingStoppedIntervalMs |
500 |
Интервал ping в режиме остановки (мс). Меньше нагрузка на dbgs — цели и стек не меняются |
| stepInOutDelayMs |
40 |
Задержка scheduleRefreshStackAndReveal для Step In/Out (мс) |
| immediatePingDelaysMs |
[25, 50, 100] |
Интервалы немедленного ping после F11/Shift+F11 для вылова callStackFormed (мс) |
| evalExprRetryDelaysMs |
[50, 100] |
Задержки retry evalExpr при пустом ответе (мс) |
| variablesRequestRetryDelaysMs |
[50, 100, 150] |
Retry при пустом ответе evalLocalVariables (мс) |
| pingDbgtgtIntervalMs |
5000 |
Минимальный интервал между pingDBGTGT по одной цели (мс). Снижает нагрузку на dbgs (rtgt) |
Примечание: Локальные переменные не отображаются. Для просмотра переменных выберите необходимый кадр (процедура/функция) в дереве вызовов Call stack и добавьте переменную в панель Watch.
Просмотр переменных при отладке, панель Watch:
Структура — раскрывается в панели переменных (Watch) с полями и значениями.
Соответствие — раскрывается с парами Ключ/Значение.
ТаблицаЗначений — раскрывается с колонками, индексами и строками [0], [1], … с кратким значением.
МенеджерВременныхТаблиц — раскрывается с веткой времененных таблиц.
Показать значение в отдельном окне — команда для просмотра коллекций в табличном виде:
- из панели Watch: правый клик по переменной → «Показать значение в отдельном окне»;
- из редактора: выделить имя переменной (например,
ТЗ, Соот1, Запрос) → правый клик → «Показать значение в отдельном окне».
Рассчитать значение — вычисление произвольных выражений в контексте остановки отладки. Позволяет ввести выражение (например, Запрос.МенеджерВременныхТаблиц.Таблицы[0]), нажать «Рассчитать» и получить результат в виде таблицы (Свойство, Значение, Тип):
- кнопка «Рассчитать значение» в заголовке панели Watch (при отладке 1С);
- контекстное меню редактора модулей → «Рассчитать произвольное значение»;
- горячая клавиша Ctrl+Alt+E;
- Command Palette → «1C: Рассчитать значение».
Структура проекта
Расширение опирается на структуру каталогов проекта [vanessa-bootstrap]
Рекомендуемая структура проекта:
project/
├── build/
│ ├── ib/ # Информационная база
│ └── out/ # Собранные файлы
│ └── commit/Commit.txt # Файл куда пишем наши изменения
├── src/
│ ├── cf/ # Исходники конфигурации
│ ├── cfe/ # Исходники расширений
│ ├── epf/ # Исходники внешних обработок
│ └── erf/ # Исходники внешних отчетов
├── oscript_modules/ # Зависимости oscript
├── env.json # Настройки подключения к ИБ
└── packagedef # Файл для активации расширения
Важные нюансы
- Все команды выполняются в терминале Cursor для видимости вывода
- Параметр
--ibconnection берется из env.json (секция default['--ibconnection'], по умолчанию /F./build/ib)
- Пути в настройках задаются относительно корня проекта или абсолютно; при вызове платформы 1С расширение подставляет итоговые абсолютные пути
- В каталог oscript_modules/ с проектом копируем содержимое из репозитория oscript_modules/v8runner
- В файл Commit.txt пишем что поменяли, пример:
e:\DATA1C\BASE\src\cf\Catalogs\Подразделения\Ext\Predefined.xml
e:\DATA1C\BASE\src\cf\Documents\Сборка\Ext\ObjectModule.bsl
ВАЖНО