](https://github.com/DitriXNew/EDT-MCP/releases)
EDT MCP服务器
1C:EDT的MCP(模型上下文协议)服务器插件,使AI助手(Claude、GitHub Copilot、Cursor等)能够与EDT工作区交互。
\[!重要\] EDT版本兼容性: EDT 2025.x支持插件版本及以下版本 1.26.1. 从插件版本开始 1.27.0,仅 教育日期2026.1+ 支持。
特性
- 🔧 MCP协议2025-11-25 -支持SSE的流式HTTP传输
- 📊 项目信息 -列出工作区项目和配置属性
- 🔴 错误报告 -使用筛选器获取错误、警告、问题摘要
- 📝 检查说明 -从markdown文件中获取检查文档
- 🔄 项目再验证 -验证卡住时触发重新验证
- 🔖 书签和任务 -访问书签和TODO/FIXME标记
- 💡 内容辅助 -在任何代码位置获取类型信息、方法提示和平台文档
- 🧪 查询验证 -在项目上下文中验证1C查询文本(语法+语义错误,可选DCS模式)
- 🧩 BSL代码分析 -浏览模块、检查结构、读/写方法、搜索代码和分析调用层次结构
- 🖼️ 表单检查 -从表单所见即所得编辑器获取PNG屏幕截图和YAML布局快照
- 🚀 应用管理 -获取应用程序、更新数据库、在调试模式下启动
- 🎯 状态栏 -实时服务器状态,包括工具名称、执行时间和交互式控件
- ⚡ 可中断操作 -取消长时间运行的操作并向AI代理发送信号
- 🏷️ 元数据标签 -使用自定义标记、过滤器导航器、键盘快捷键(Ctrl+Alt+1-0)、多选支持来组织对象
- 📁 元数据组 -在Navigator树中为每个元数据集合创建自定义文件夹层次结构,并使用工具栏切换暂时隐藏组
- ✏️ 元数据重构 -重命名/删除元数据对象,并在BSL代码、表单和元数据之间进行完全级联更新;向现有对象添加新属性
- 🛠️ 工具管理 -按组启用/禁用工具,预设(仅分析、代码审查、开发),每个工具参数默认值
安装
仅美国东部夏令时2026.1+ (对于插件v1.27.0+;对于EDT 2025.x使用插件v1.26.1)
来自更新站点
- 在EDT中: Help → 安装新软件。..
- 添加更新站点URL:
https://ditrixnew.github.io/EDT-MCP/ - 选择 EDT MCP服务器功能
- 重新启动EDT
从Windows命令行 -“一键式”快速安装
关闭EDT(!)并运行:
rem Here "%VER_EDT% = 2025.2.3+30" just for example - please, set YOUR actual version !
set VER_EDT=2025.2.3+30
"\your\path\to\EDT\components\1c-edt-%VER_EDT%-x86_64\1cedt.exe" -nosplash ^
-application org.eclipse.equinox.p2.director ^
-repository https://ditrixnew.github.io/EDT-MCP/ ^
-installIU com.ditrix.edt.mcp.server.feature.feature.group ^
-profileProperties org.eclipse.update.reconcile=true安装结果
Once the installation has been completed successfully, we will see the following:
之后,EDT将自动监视更新站点,并在检测到可用更新时安装可用更新。
此外,我们还可以通过以下方式手动检查 Help → 关于→ 安装详情→ 选择MCP→ 更新
配置
首选 窗口→ 偏好→ MCP服务器。设置页面有两个选项卡:
常规选项卡
- 服务器端口:HTTP端口(默认值:8765)
- 检查描述文件夹:检查描述标记文件的路径
- 自动启动:在EDT启动时启动服务器
- 纯文本模式(光标兼容):以纯文本而不是嵌入式资源返回结果(对于不支持MCP资源的AI客户端)
- 在导航器中显示标签:在导航树中将标记显示为装饰
- 标签装饰风格:标签的显示方式--所有标签都是后缀、仅第一个标签或标签计数
- 服务器控制:直接从首选项启动、停止和重新启动MCP服务器
工具选项卡
管理AI助手可用的工具。工具被组织成可以一起启用或禁用的组。看 工具管理 了解详情。
状态栏控件
MCP服务器状态栏通过交互式控件显示实时执行状态。
状态指示器:
- 🟢 绿色 -服务器正在运行,处于空闲状态
- 🟡 黄色闪烁 -工具正在执行
- ⚪ 灰色 -服务器已停止
User Signal Controls - Send signals to AI agent during tool execution
工具执行期间:
- 显示工具名称(例如。,
MCP: update_database) - 以MM:SS格式显示经过的时间
- 点击访问控制菜单
当工具正在执行时,您可以向AI代理发送信号以中断MCP调用:
| 按钮 | 说明 | 何时使用 |
|---|---|---|
| 取消操作 | 停止MCP调用并通知代理 | 何时要取消长时间运行的操作 |
| 重试 | 告诉代理重试操作 | 当发生EDT错误并且您想要重试时 |
| 在后台继续 | 通知代理操作已长时间运行 | 当您希望代理定期检查状态时 |
| 咨询专家 | 停下来让客服与您协商 | 何时需要提供指导 |
| 发送自定义消息。.. | 向代理发送自定义消息 | 获取任何自定义指令 |
它是如何工作的:
- 当您单击按钮时,会出现一个对话框,显示将发送给代理的消息
- 您可以在发送前编辑邮件
- MCP呼叫立即中断,并将控制权交还给代理
- EDT操作继续在后台运行
- Agent收到如下响应:
USER SIGNAL: Your message here
Signal Type: CANCEL
Tool: update_database
Elapsed: 20s
Note: The EDT operation may still be running in background.使用案例:
- 长时间运行的操作(完整数据库更新、项目验证)会阻止代理
- 需要给代理人额外的指示
- EDT显示错误对话框,您希望代理重试
- 想要将代理的焦点切换到其他任务
工具管理
控制哪些MCP工具暴露给AI助手。这可以减少上下文窗口的使用,并在需要时将AI限制为只读操作。
工具组
所有56个工具分为9个语义组:
| 组 | 描述 | 工具 |
|---|---|---|
| 核心/项目 | EDT版本、项目列表、配置、验证、XML导出/导入 | get_edt_version, list_projects, get_configuration_properties, clean_project, revalidate_objects, get_check_description, export_configuration_to_xml, import_configuration_from_xml |
| 错误和问题 | 错误报告、书签、任务 | get_problem_summary, get_project_errors, get_bookmarks, get_tasks |
| 代码智能 | 内容辅助、文档、元数据浏览 | get_content_assist, get_platform_documentation, get_metadata_objects, get_metadata_details, list_subsystems, get_subsystem_content, find_references |
| 标签 | 标签管理 | get_tags, get_objects_by_tags |
| 应用与测试 | 应用程序管理、数据库更新、测试 | get_applications, list_configurations, update_database, debug_launch, run_yaxunit_tests |
| 调试 | 断点、步进、变量检查 | set_breakpoint, remove_breakpoint, list_breakpoints, wait_for_break, get_variables, step, resume, evaluate_expression, debug_yaxunit_tests, debug_status, start_profiling, get_profiling_results |
| BSL代码 | 模块浏览、代码读写、搜索、表单检查 | read_module_source, write_module_source, get_module_structure, list_modules, search_in_code, read_method_source, get_method_call_hierarchy, go_to_definition, get_symbol_info, get_form_layout_snapshot, get_form_screenshot, validate_query |
| 重构 | 元数据重命名、删除、添加属性 | rename_metadata_object, delete_metadata_object, add_metadata_attribute |
| 翻译(语言工具) | 翻译字符串生成、配置同步、项目信息 | generate_translation_strings, translate_configuration, get_translation_project_info |
从启用或禁用整个组或单个工具 工具 选项卡中 窗口→ 偏好→ MCP服务器。禁用的工具将被过滤掉 tools/list 响应。如果客户端直接通过调用禁用的工具 tools/call,服务器返回一条消息,说明该工具已禁用。
预设
使用预设在常用工具配置之间快速切换:
| 预设 | 描述 |
|---|---|
| 所有工具 | 所有56个工具均已启用(默认) |
| 仅限分析 | 只读分析--核心,错误,代码智能,标签 |
| 代码审查 | 分析+BSL代码读取(不包括 write_module_source) |
| 发展 | 无需调试工具的完整开发 |
从“工具”选项卡的下拉列表中选择一个预设。预设会根据当前启用/禁用状态自动检测,并在配置与任何内置预设不匹配时显示“自定义”。
每工具参数默认值
一些工具具有可配置的参数默认值,如结果限制。当AI客户端没有明确指定参数时,使用这些默认值:
| 工具 | 参数 | 默认值 | 范围 |
|---|---|---|---|
get_project_errors | 结果限制 | 100 | 1–1000 |
get_bookmarks | 结果限制 | 100 | 1–1000 |
get_tasks | 结果限制 | 100 | 1–1000 |
get_metadata_objects | 结果限制 | 100 | 1–1000 |
get_content_assist | 结果限制 | 100 | 1–1000 |
search_in_code | 最大结果 | 100 | 1–500 |
search_in_code | 上下文行 | 2 | 0–5 |
通过选择具有可配置参数的工具,在“工具”选项卡中配置这些参数——参数编辑器出现在工具树下方的详细信息面板中。
连接AI助手
VS代码/GitHub副本
创建 .vscode/mcp.json:
{
"servers": {
"EDT MCP Server": {
"type": "sse",
"url": "http://localhost:8765/mcp"
}
}
}Other AI Assistants - Cursor, Claude Code, Claude Desktop
光标IDE
注: 游标不支持MCP嵌入式资源。启用 “纯文本模式(光标兼容)” 在EDT首选项中: 窗口→ 偏好→ MCP服务器.
创建 .cursor/mcp.json:
{
"mcpServers": {
"EDT MCP Server": {
"url": "http://localhost:8765/mcp"
}
}
}克劳德代码
注: 通过编辑文件 .claude.json 可以添加到MCP中的特定项目或任何项目(根)。如果没有mcpServers部分,请添加它。添加 .claude.json (在Windows中 %USERPROFILE%\.claude.json):
"mcpServers": {
"EDT MCP Server": {
"type": "http",
"url": "http://localhost:8765/mcp"
}
}克劳德桌面版
添加 claude_desktop_config.json:
{
"mcpServers": {
"EDT MCP Server": {
"url": "http://localhost:8765/mcp"
}
}
}VSCode的Cline扩展。
{
"mcpServers": {
"EDTMCPServer": {
"type": "streamableHttp",
"url": "http://localhost:8765/mcp"
}
}
}反重力
{
"mcpServers": {
"EDTMCPServer": {
"serverUrl": "http://localhost:8765/mcp"
}
}
}可用工具
| 工具 | 说明 |
|---|---|
get_edt_version | 返回当前EDT版本 |
list_projects | 列出具有属性的工作区项目 |
get_configuration_properties | 获取1C配置属性 |
get_project_errors | 返回带有严重性/checkId/对象筛选器的EDT问题 |
get_problem_summary | 按项目和严重程度分组的问题计数 |
clean_project | 清除项目标记并触发完全重新验证 |
revalidate_objects | 按FQN重新验证特定对象(例如“Document.MyDoc”) |
get_bookmarks | 返回工作区书签 |
get_tasks | 返回TODO/FIXME任务标记 |
get_check_description | 从.md文件返回检查文档 |
get_content_assist | 获取内容辅助建议(类型信息、方法提示) |
get_platform_documentation | 获取平台类型文档(方法、属性、构造函数) |
get_metadata_objects | 从1C配置中获取元数据对象列表 |
get_metadata_details | 获取元数据对象的详细属性(属性、表格部分等) |
list_subsystems | 列出1C子系统(带FQN、同义词、内容/子计数的平面表;默认情况下是递归的) |
get_subsystem_content | 通过FQN获取特定1C子系统的内容:属性、包含的元数据对象、嵌套子系统 |
find_references | 查找对元数据对象的所有引用(在元数据、BSL代码、表单、角色等中)——仅限顶级对象 |
rename_metadata_object | 通过完全重构重命名元数据对象或属性:在BSL代码、表单和元数据中级联更新。预览+确认工作流 |
delete_metadata_object | 使用引用清理删除元数据对象或属性。预览+确认工作流 |
add_metadata_attribute | 向元数据对象(目录、文档、注册表等)添加新属性 |
get_tags | 获取项目中定义的所有标记的列表,包括描述和对象计数 |
get_objects_by_tags | 获取按带有标签描述和对象FQN的标签过滤的元数据对象 |
get_applications | 获取具有更新状态的项目的应用程序列表(infobase) |
list_configurations | 列出EDT启动配置(运行时客户端+连接)以及当前运行/挂起状态 |
update_database | 使用完整或增量更新模式更新数据库(infobase)--通过 launchConfigurationName 或 projectName + applicationId |
debug_launch | 在调试模式下启动应用程序--通过 launchConfigurationName (任何类型,包括连接到1C:企业调试服务器)或 projectName + applicationId |
run_yaxunit_tests | 为项目运行YAXUnit测试:启动1C RunUnitTests,解析JUnitXML,返回Markdown报告 |
debug_yaxunit_tests | 在DEBUG模式下启动YAXUnit测试,以便触发断点(自主LLM调试周期) |
set_breakpoint | 设置1C BSL线路断点(接受EDT模块路径或绝对路径) |
remove_breakpoint | 按id或按项目+模块+行删除断点 |
list_breakpoints | 列出活动行断点,可选择按项目筛选 |
wait_for_break | 阻塞,直到给定应用程序上的调试挂起(例如断点命中) |
get_variables | 从挂起线程的堆栈帧中读取变量(嵌套的延迟展开) |
step | 跨过/进入/退出挂起的线程,返回新的快照 |
resume | 恢复挂起的线程(或调试目标的所有线程) |
evaluate_expression | 在悬挂框架的上下文中计算BSL表达式 |
debug_status | 报告活动调试启动:模式、挂起状态、线程数、顶帧 |
start_profiling ►Toggle Performance Measurement on the Active Debug Target→ | |
get_profiling_results | 获取分析结果:每个模块、每条线路的呼叫计数、时间和覆盖范围 |
get_form_layout_snapshot | 返回带有计算出的所见即所得表单元素边界、类型和显示属性的YAML(mode:紧凑型/满型) |
get_form_screenshot | 捕获表单所见即所得编辑器(嵌入式图像资源)的PNG屏幕截图 |
list_modules | 使用模块类型和父对象列出项目中的所有BSL模块 |
get_module_structure | 获取BSL模块结构:过程/函数、签名、区域、参数 |
read_module_source | 使用YAML frontmatter元数据(完整文件或行范围)读取BSL模块源代码 |
write_module_source | 通过语法检查将BSL源代码写入元数据对象模块(searchReplace、replace、append) |
read_method_source | 按名称从BSL模块读取特定过程/函数 |
search_in_code | 使用outputMode在BSL模块中进行全文/正则表达式搜索:Full/count/files |
get_method_call_hierarchy | 通过语义BSL分析查找方法调用者或被调用者 |
go_to_definition | 导航到符号定义(按名称的方法,按FQN的元数据对象) |
get_symbol_info | 获取BSL代码位置符号的类型/悬停信息(推断类型、签名、文档) |
validate_query | 在项目上下文中验证1C查询文本(语法+语义错误,可选DCS模式) |
export_configuration_to_xml | 将EDT配置项目导出到XML文件目录(EDT菜单:导出→ 配置为XML文件) |
import_configuration_from_xml | 将配置从XML文件目录导入新的EDT项目(与导出相反) |
generate_translation_strings | LanguageTool:为配置项目生成翻译字符串(.lstr/.trans/.dict),具有翻译存储和收集选项。EDT菜单:翻译→ 生成翻译字符串 |
translate_configuration | LanguageTool:将配置的词典存储项目(或配置中的存储)中的词典更改传播到翻译的工件中。EDT菜单:翻译→ 翻译配置 |
get_translation_project_info | LanguageTool诊断:项目翻译存储和可用翻译提供者ID |
Tool Details - Parameters and usage examples for each tool
内容辅助工具
get_content_assist -在BSL代码的特定位置获取内容辅助建议。返回类型信息、可用方法、属性和平台文档。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
filePath | 是 | 相对于的路径 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl) |
line | 是 | 行号(从1开始) |
column | 是 | 列号(从1开始) |
limit | 否 | 返回的最大建议数(默认值:来自首选项) |
offset | 否 | 跳过前N个提案(对于分页,默认值:0) |
contains | 否 | 按包含这些子字符串的显示字符串筛选(逗号分隔,例如。 Insert,Add) |
extendedDocumentation | 否 | 返回完整文档(默认值:false,仅显示字符串) |
重要提示:
- 先保存文件 -EDT必须从磁盘读取当前内容,以提供准确的建议
- 立柱位置 -将光标放在点后(
.)方法/属性建议 - 分页 -使用
offset获取下一批提案(例如,第一次调用limit=5,第二次调用offset=5,limit=5) - 过滤 -使用
contains按方法/属性名进行筛选(不区分大小写) - 适用于:
- 全球平台方法(例如。 NStr(, Format() - 点后的方法(例如。 Structure.Insert, Array.Add) - 对象属性和字段 - 配置对象和模块
验证工具
clean_project:从磁盘刷新项目,清除所有验证标记,并使用EDT的ICheckScheduler触发完全重新验证revalidate_objects:按FQN重新验证特定元数据对象:
- Document.MyDocument, Catalog.MyCatalog, CommonModule.MyModule - Document.MyDoc.Form.MyForm 对于嵌套对象
validate_query:验证项目上下文中的查询语言文本,并返回语法/语义错误。
- 参数: projectName (必填), queryText (必填), dcsMode (可选,默认 false) - 使用 dcsMode=true 用于数据合成系统(DCS)查询
项目错误工具
get_project_errors -使用多个过滤器选项从EDT获取详细的配置问题。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 否 | 按项目名称筛选 |
severity | 否 | 按严重性筛选: ERRORS, BLOCKER, CRITICAL, MAJOR, MINOR, TRIVIAL |
checkId | 否 | 按校验ID子字符串过滤(例如。 ql-temp-table-index) |
objects | 否 | 按对象FQNs(数组)筛选。仅从指定对象返回错误 |
limit | 否 | 最大结果数(默认值:100,最大值:1000) |
对象过滤器格式:
- FQN字符串数组:
["Document.SalesOrder", "Catalog.Products"] - 不区分大小写的部分匹配
- 与错误位置匹配(objectPresentation)
- FQN示例:
- Document.SalesOrder -文档中的所有错误 - Catalog.Products -目录中的所有错误 - CommonModule.MyModule -公共模块中的所有错误 - Document.SalesOrder.Form.ItemForm -特定形式的错误
平台文档工具
get_platform_documentation -获取平台类型(ValueTable、Array、Structure、Query等)和内置函数(FindFiles、Message、Format等)的文档
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
typeName | 是 | 类型或函数名称(例如。 ValueTable, Array, FindFiles, Message) |
category | 否 | 类别: type (平台类型), builtin (内置功能)。违约: type |
projectName | 否 | EDT项目名称(如果未指定,则使用第一个可用项目) |
memberName | 否 | 按成员名称筛选(部分匹配)-仅适用于 type 类别 |
memberType | 否 | 筛选器: method, property, constructor, event, all (默认值: all)-只为 type 类别 |
language | 否 | 输出语言: en 或 ru (默认值: en) |
limit | 否 | 最大结果(默认值:50)-仅适用于 type 类别 |
元数据对象工具
get_metadata_objects -从1C配置中获取元数据对象列表。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
metadataType | 否 | 筛选器: all, documents, catalogs, informationRegisters, accumulationRegisters, commonModules, enums, constants, reports, dataProcessors, exchangePlans, businessProcesses, tasks, commonAttributes, eventSubscriptions, scheduledJobs (默认值: all) |
nameFilter | 否 | 部分名称匹配筛选器(不区分大小写) |
limit | 否 | 最大结果(默认值:100) |
language | 否 | 同义词的语言代码(例如。 en, ru).如果未指定,则使用默认配置 |
元数据详细信息工具
get_metadata_details -获取元数据对象的详细属性。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
objectFqns | 是 | FQNs数组(例如。 ["Catalog.Products", "Document.SalesOrder"]) |
full | 否 | 返回所有属性(true)或仅提供关键信息(false).违约: false |
language | 没有 | 同义词的语言代码。如果未指定,则使用默认配置 |
子系统工具
列出子系统工具
list_subsystems -以平面表的形式列出配置的1C子系统,包括FQN、同义词、命令接口标志和对象/子级计数。默认情况下,递归遍历子系统树;嵌套FQN格式为 Subsystem.Parent.Subsystem.Child.
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
nameFilter | 否 | 部分名称匹配筛选器(不区分大小写,匹配 Name 仅) |
recursive | 否 | 包括嵌套子系统(默认值: true) |
limit | 否 | 最大结果数(默认值:来自首选项) |
language | 没有 | 同义词的语言代码。如果未指定,则使用默认配置 |
返回markdown表:
## Subsystems: MyProject
**Total:** 4 subsystems
| FQN | Synonym | Comment | InCommandInterface | Content | Children |
|-----|---------|---------|--------------------|---------|----------|
| Subsystem.Sales | Продажи | | Yes | 23 | 2 |
| Subsystem.Sales.Subsystem.Orders | Заказы | | Yes | 5 | 0 |
| Subsystem.Sales.Subsystem.Pricing | Ценообразование | | No | 8 | 0 |
| Subsystem.Administration | Администрирование | | Yes | 14 | 0 |获取子系统内容工具
get_subsystem_content -获取特定1C子系统的详细内容:属性、子系统中包含的元数据对象列表和嵌套的子系统。子系统由FQN标识。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
subsystemFqn | 是 | 子系统FQN,例如。 Subsystem.Sales 或 Subsystem.Sales.Subsystem.Orders |
recursive | 否 | 包含嵌套子系统中的对象 Content (已消除重复)。违约: false |
language | 没有 | 同义词的语言代码。如果未指定,则使用默认配置 |
返回降价:
# Subsystem: Sales (Продажи)
## Properties
| Property | Value |
|----------|-------|
| FQN | Subsystem.Sales |
| Name | Sales |
| Synonym | Продажи |
| Include In Command Interface | Yes |
| Include Help In Contents | Yes |
| Use One Command | No |
## Content — 23 objects
| Type | Name | Synonym | FQN |
|------|------|---------|-----|
| Catalog | Products | Номенклатура | Catalog.Products |
| CommonModule | SalesAPI | API продаж | CommonModule.SalesAPI |
| Document | SalesOrder | Заказ покупателя | Document.SalesOrder |
## Child Subsystems — 2
| FQN | Synonym | Content | Children |
|-----|---------|---------|----------|
| Subsystem.Sales.Subsystem.Orders | Заказы | 5 | 0 |
| Subsystem.Sales.Subsystem.Pricing | Ценообразование | 8 | 0 |查找参考工具
find_references -查找对元数据对象的所有引用。返回使用该对象的所有位置:在其他元数据对象、BSL代码、表单、角色、子系统等中。匹配EDT内置的“查找引用”功能。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
objectFqn | 是 | 全名(例如。 Catalog.Products, Document.SalesOrder, CommonModule.Common) |
limit | 否 | 每个类别的最大结果数(默认值:100,最大值:500) |
返回带有EDT兼容格式引用的markdown:
# References to Catalog.Items
**Total references found:** 122
- Catalog.ItemKeys - Attributes.Item.Type - Type: types
- Catalog.ItemKeys.Form.ChoiceForm.Form - Items.List.Item.Data path - Type: types
- Catalog.Items - Attributes.PackageUnit.Choice parameter links - Ref
- Catalog.Items.Form.ItemForm.Form - Items.GroupTop.GroupMainAttributes.Code.Data path - Type: types
- CommonAttribute.Author - Content - metadata
- Configuration - Catalogs - catalogs
- DefinedType.typeItem - Type - Type: types
- EventSubscription.BeforeWrite_CatalogsLockDataModification - Source - Type: types
- Role.FullAccess.Rights - Role rights - object
- Subsystem.Settings.Subsystem.Items - Content - content
### BSL Modules
- CommonModules/GetItemInfo/Module.bsl [Line 199; Line 369; Line 520]
- Catalogs/Items/Forms/ListForm/Module.bsl [Line 18; Line 19]参考类型包括:
- 元数据引用 -属性、表单项、命令参数、类型描述
- 类型用法 -定义类型、特征图类型、类型组成
- 共同属性 -公共属性内容中包含的对象
- 事件订阅 -订阅的源对象
- 角色 -具有角色权限的对象
- 子系统 -子系统内容
- BSL代码 -BSL模块中带有行号的引用
注:find_references仅支持顶级元数据对象(例如。Catalog.DataAreas,CommonModule.Saas).传递子对象FQN,例如Catalog.DataAreas.Attribute.DataAreaStatus返回一个描述性错误,指示不支持子对象。使用rename_metadata_object或delete_metadata_object使用属性和嵌套对象。
元数据重构工具
重命名元数据对象工具
rename_metadata_object -重命名具有完全重构支持的元数据对象或属性。BSL代码、表单和元数据中的所有引用都会自动更新。
工作流程:
- 不打电话
confirm预览所有更改点 - 查看变更点索引,并可选择跳过一些
disableIndices - 致电
confirm=true应用
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
objectFqn | Yes | 要重命名的对象的FQN。顶层: Catalog.Products。嵌套: Document.SalesOrder.Attribute.Amount |
newName | 是 | 对象的新名称 |
confirm | 没有 | true 以执行重命名。默认 false =仅预览 |
disableIndices | 否 | 要跳过的可选更改点的逗号分隔索引(例如。 '2,3,5') |
maxResults | 否 | 预览中显示的最大变化点(默认值:20, 0 =无限制) |
FQN中支持的子类型: Attribute, TabularSection, Dimension, Resource
删除元数据对象工具
delete_metadata_object -删除元数据对象或属性。BSL代码、表单和其他元数据中的引用会自动清理。
工作流程:
- 不打电话
confirm预览受影响的参考文献和问题 - 致电
confirm=true应用
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
objectFqn | 是 | 要删除的对象的FQN(例如。 Catalog.Products, Document.SalesOrder.Attribute.Amount) |
confirm | 没有 | true 执行删除操作。默认 false =仅预览 |
添加元数据属性工具
add_metadata_attribute -通过BM写入事务向元数据对象添加新属性。该属性是使用默认属性创建的。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
parentFqn | 是 | 父对象的FQN(例如。 Catalog.Products, Document.SalesOrder) |
attributeName | 是 | 新属性的名称 |
支持的父类型: Catalog, Document, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes, BusinessProcess, Task, DataProcessor, Report, InformationRegister, AccumulationRegister, AccountingRegister
标签管理工具
获取标签工具
get_tags -获取项目中定义的所有标记的列表。标签是用于组织元数据对象的用户定义标签。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
退货: 带有标记名称、颜色、描述和分配对象数量的Markdown表。
按标签获取对象工具
get_objects_by_tags -获取按标签筛选的元数据对象。返回具有任何指定标记的对象。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
tags | Yes | 要筛选的标记名称数组(例如。 ["Important", "NeedsReview"]) |
limit | 否 | 每个标记的最大对象数(默认值:100) |
退货: Markdown,每个标签都有部分,包括:
- 标签颜色和描述
- 分配给标签的对象FQNs表
- 已找到的对象总数摘要
应用程序管理工具
获取应用程序工具
get_applications -获取项目的应用程序列表(信息库)。返回应用程序ID、名称、类型和当前更新状态。使用此功能获取应用程序ID update_database 和 debug_launch 工具。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
列表配置工具
list_configurations -列出EDT启动配置(运行时客户端+附加+其他1C类型)及其当前运行状态。之前的发现步骤 debug_launch, run_yaxunit_tests, debug_yaxunit_tests 和 update_database:一旦MCP客户端知道确切的配置名称,它就可以按名称定位,而无需进行任何操作 projectName + applicationId 对。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
type | 否 | 筛选器: attach (远程运行时+本地运行时), client (运行时客户端), all (默认值--任何1C/EDT启动配置) |
projectName | 否 | 项目名称筛选器 |
退货: 每种配置-- name, type (完整类型id), attach 旗, applicationId (真实的或合成的 attach:), project, infobaseAlias, debugServerUrl, running, mode, suspended.
更新数据库工具
update_database -更新数据库(infobase)配置。支持完整和增量更新模式。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
launchConfigurationName | 否(首选) | 精确的EDT运行时客户端启动配置名称(来自 list_configurations).当给出时, projectName 和 applicationId 是从配置中派生出来的。 |
projectName | 如果没有名称 | EDT项目名称 |
applicationId | 如果没有名称 | 来自的应用程序ID get_applications |
fullUpdate | 否 | 如果为true-完全重新加载,如果为false-增量更新(默认值:false) |
autoRestructure | 否 | 如果需要,自动应用重组(默认值:true) |
调试启动工具
debug_launch -启动EDT调试会话。适用于两种运行时客户端配置(spawns) 1cv8c)以及 连接到1C:企业调试服务器 配置(附加到跑步 ragent/rphost,调试服务器端代码(HTTP服务、服务器调用、计划和后台作业)所需。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
launchConfigurationName | 否(首选) | EDT调试启动配置的确切名称(运行时客户端或附加)。将其用于附加配置或按名称选择特定的客户端配置。 |
projectName | 如果没有名称 | EDT项目名称 |
applicationId | 如果没有名称 | 来自的应用程序ID get_applications (仅运行时客户端启动) |
updateBeforeLaunch | 否 | 如果为true,则在启动前更新数据库(默认值:true,附加时忽略) |
笔记:
- 需要先在EDT中创建启动配置(运行→ 运行配置。..).
- 对于Attach配置,
debug_launch回报applicationId: "attach:"--一种稳定的合成id,用于wait_for_break,resume,debug_status和朋友。 - 如果配置已在调试模式下运行,则该工具会短路
alreadyRunning: true而不是重复发射。 - 如果不存在配置,则返回可用配置列表(运行时客户端+附件),以便MCP客户端可以发现提供的内容。
updateBeforeLaunch=true如果数据库已经是最新的,则跳过更新。
运行YAXUnit测试工具
run_yaxunit_tests -为1C:Enterprise项目运行YAXUnit测试。使用启动应用程序 RunUnitTests startup参数,轮询直到启动终止,解析JUnitXML报告并返回Markdown摘要。完整的Markdown报告也写在 report.md 旁边 junit.xml 因此可以直接从磁盘读取。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
launchConfigurationName | 否(首选) | 精确的EDT运行时客户端启动配置名称(来自 list_configurations).当给出时, projectName 和 applicationId 是从配置中派生出来的。 |
projectName | 如果没有名称 | EDT项目名称 |
applicationId | 如果没有名称 | 来自的应用程序ID get_applications |
extensions | 否 | 逗号分隔的扩展名用于按扩展名筛选测试 |
modules | 否 | 要运行的逗号分隔的通用模块名称(例如。 OM_tmrlGlovoCatalog) |
tests | 否 | 逗号分隔的测试名称 Module.Method 格式 |
timeout | 否 | 轮询窗口(秒)(默认值:60)。到期退货 待定;再次致电继续等待 |
笔记:
- 需要在EDT中为项目/应用程序和安装在infobase中的YAXUnit扩展进行启动配置。
- 发射是 不 当轮询窗口到期时终止——使用相同的参数再次调用该工具以保持等待,并在1C关闭后获取结果。
- 报告存储在
%TEMP%/edt-mcp-yaxunit/_/(junit.xml+report.md+xUnitParams.json).目录名来源于projectName:applicationId:filterHash--经过消毒并添加SHA-1哈希以避免冲突。新鲜的junit.xml(小于5分钟)在不重新启动1C的情况下重复使用。
服务器端调试(连接到1C:企业调试服务器)
调试工具还可以驱动 附加 发射配置(com._1c.g5.v8.dt.debug.core.RemoteRuntime / LocalRuntime),这是通过MCP调试服务器端BSL的唯一方法:HTTP服务、服务器调用、计划作业、后台作业、内部运行的外部连接 rphost.
1C方面的先决条件:
- 簇
ragent推出与-debug -http(HTTP调试器,典型端口1550). - 对于已发布的信息库:在
.vrd(阿帕奇wsap24.dll或IIS)。 - 在EDT中,创建类型为的启动配置 *连接到1C:企业调试服务器* 使用infobase别名/UIDI和调试服务器URL(例如。
http://localhost:1550).
工作流程:
list_configurations({type: "attach"})--发现可用的Attach配置,并查看哪个已在运行。debug_launch({launchConfigurationName: ""})--附加到rphost(或短路alreadyRunning: true如果会话是实时的)。退货applicationId: "attach:".set_breakpoint在可疑的HTTP服务处理程序/服务器过程上。- 触发服务器端调用(例如。
curl http://host/base/hs/your-endpoint). wait_for_break--退货threadId,frameRef,挂线。evaluate_expression({frameRef, expression: "Request.QueryOptions[\"..\"]"})--检查请求参数、目录引用等。 (get_variables也适用于大多数帧;使用evaluate_expression作为附加帧不急于暴露变量时的后备方案。)step/resume--结束通话;客户端上的HTTP请求返回。
在运行时客户端启动时,将启动寄存器附加到同一快照/线程/帧注册表中-- debug_status 报告 applicationId, launchConfiguration, configurationType, attach: true, suspended, suspendedAt 和一个 registered 旗帜。
调试检查工具
一系列MCP工具,允许LLM在EDT调试器下运行1C应用程序时设置断点、检查运行时状态和遍历BSL堆栈。结合 debug_yaxunit_tests,这给出了一个完全自主的调试周期:LLM编写一个YAXUnit测试,在可疑代码中设置一个断点,在DEBUG模式下启动测试,等待断点触发,检查变量,计算表达式,逐步遍历代码,然后恢复——所有这些都不需要在EDT中人工点击。
端到端LLM调试周期:
set_breakpoint--在可疑模块/线路上设置线路断点。debug_yaxunit_tests--在DEBUG模式下启动YAXUnit(过滤为单个测试)。wait_for_break--阻塞,直到断点触发;返回一个快照threadId,框架稳定frameRefsget_variables--读取顶部帧(或任何帧)的变量;通过expandPath钻入nested结构/数组。evaluate_expression--在挂起的帧中运行任意BSL表达式以测试假设。step--跨过/进入/退出并重新快照。resume--让测试结束。
笔记:
set_breakpoint接受EDT模块路径(CommonModules/Foo/Module.bsl)或绝对文件系统路径;自动检测。wait_for_break做 不 在超时时终止启动——再次调用它以保持等待。frameRef和threadId在每次暂停的活动中重新发布。之后resume/step之前的id变得过时(该工具返回一个明确的错误)。evaluate_expression在正在运行的1C进程内运行任意BSL。故意使用它。- 实际的1C BSL断点类在运行时通过反射加载——如果EDT版本以不同的名称公开它,
Activator.logError将出现故障,断点回落到标记垫片上。
BSL代码分析工具
列表模块工具
list_modules -列出EDT项目中的所有BSL模块。可以按元数据类型或特定对象名称进行筛选。返回模块路径、类型和父对象。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
metadataType | 否 | 筛选器: all, documents, catalogs, commonModules, informationRegisters, accumulationRegisters, reports, dataProcessors, exchangePlans, businessProcesses, tasks, constants, commonCommands, commonForms, webServices, httpServices (默认值: all) |
objectName | 否 | 要列出模块的特定元数据对象的名称(例如。 Products) |
nameFilter | 否 | 模块路径上的子字符串过滤器(不区分大小写) |
limit | 否 | 最大结果数(默认值:200,最大值:1000) |
获取模块结构工具
get_module_structure -获取BSL模块的结构:所有具有签名、行号、区域、执行上下文的过程/函数(&AtServer, &AtClient)、导出标志和参数。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
modulePath | 是 | 路径来自 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl) |
includeVariables | 否 | 包括模块级变量声明(默认值: false) |
includeComments | 否 | 包括方法的文档注释(默认值: false) |
退货: Markdown包含:
- 模块摘要(程序/功能计数、总行数)
- 带线条范围的区域列表
- 方法表:类型、名称、导出、上下文、行、参数、区域、描述(当
includeComments=true) - 变量表:名称、导出标志、行、区域(当
includeVariables=true)
读取模块源代码工具
read_module_source -从EDT项目中读取BSL模块源代码。返回包含YAML frontmatter元数据的源代码(startLine, endLine, totalLines).支持读取完整文件或特定行范围。每条呼叫线路的限制可在中配置 窗口→ 偏好→ MCP服务器→ Tools (maxLines,默认值为5000)。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
modulePath | 是 | 路径来自 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl 或 Documents/SalesOrder/ObjectModule.bsl) |
startLine | 否 | 起始行号(从1开始,包括1)。如果省略,则从头开始读取 |
endLine | 否 | 结束行号(从1开始,包括1)。如果省略,则读到末尾 |
退货: Markdown带有YAML frontmatter,后面是一个围栏 bsl 包含干净源代码(无行号前缀)的代码块。前线阵地:
projectName,module--输入参数回声startLine,endLine--返回的实际1基范围(对于空文件省略)totalLines--文件的总行数truncated: true--仅当请求的范围被配置的线路限制限制时才存在(maxLines设置)
写入模块源代码工具
write_module_source -将BSL源代码写入1C元数据对象模块。模式:searchReplace(基于内容的查找和替换,默认),replace(替换整个文件),append(添加到末尾)。指定modulePath或objectName+moduleType。写入前自动检查BSL语法。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
modulePath | 否\* | 来源路径 src/ 文件夹(例如。 Documents/MyDoc/ObjectModule.bsl).对象名称+模块类型的替代方案 |
objectName | 否\* | 完整对象名称(例如。 Document.MyDoc, CommonModule.MyModule).支持俄语名称 |
moduleType | 否 | 模块类型: ObjectModule (默认), ManagerModule, FormModule, CommandModule, RecordSetModule |
source | 是 | 要编写BSL源代码。对于 searchReplace:新代码替换 oldSource.为 replace:完整的模块内容。对于 append:要添加的代码 |
oldSource | 否\*\* | 要查找和替换的现有代码(必需 searchReplace 模式)。必须与文件中的一个位置完全匹配。作为您已阅读当前文件内容的证明 |
mode | 否 | 写入模式: searchReplace (默认), replace, append |
formName | 否 | 表单名称,需要时 moduleType=FormModule |
commandName | 否 | 命令名称,需要时 moduleType=CommandModule |
skipSyntaxCheck | 否 | 跳过BSL语法验证(默认值: false).检查平衡 Procedure/EndProcedure, Function/EndFunction, If/EndIf, While/EndDo, For/EndDo, Try/EndTry |
\*其中之一 modulePath 或 objectName 是必需的。
\*\*需要 searchReplace 模式。
笔记:
- 基于内容的编辑:
searchReplace模式查找oldSource在文件中,并将其替换为source.如果oldSource如果未找到或与多个位置匹配,则操作将安全失败。这消除了进行多次编辑时的行号漂移问题 - 如果不存在,则创建新的模块文件(仅在
replace模式) - 保留UTF-8 BOM编码
- 语法检查验证完整的结果文件,而不仅仅是插入的片段
读取方法源工具
read_method_source -按名称从BSL模块中读取特定过程/函数。返回带有行号和签名的方法源代码。若未找到方法,则返回所有可用方法的列表。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
modulePath | 是 | 路径来自 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl) |
methodName | Yes | 要读取的过程/函数的名称(不区分大小写) |
退货: 方法源代码:
- 方法类型(过程/函数)、签名、导出标志
- 行范围和行数
- 带有行号的源代码
在代码工具中搜索
search_in_code -在项目中的所有BSL模块中进行全文搜索。支持纯文本和正则表达式模式、区分大小写、匹配周围的上下文行和文件路径过滤。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
query | 是 | 搜索字符串或正则表达式模式 |
caseSensitive | 否 | 区分大小写的搜索(默认值: false) |
isRegex | 否 | 将查询视为正则表达式(默认值: false) |
maxResults | 否 | 返回上下文的最大匹配数(默认值:100,最大值:500) |
contextLines | 否 | 每次匹配前后的上下文行数(默认值:2,最大值:5) |
fileMask | 否 | 按模块路径子字符串筛选(例如。 CommonModules 或 Documents/SalesOrder) |
outputMode | 否 | 输出模式: full (与上下文匹配,默认), count (仅总计数,快速), files (带匹配计数的文件列表,无上下文) |
metadataType | 否 | 按元数据类型筛选: documents, catalogs, commonModules, informationRegisters, accumulationRegisters, reports, dataProcessors, exchangePlans, businessProcesses, tasks, constants, commonCommands, commonForms, webServices, httpServices |
获取方法调用层次结构工具
get_method_call_hierarchy -查找方法调用层次结构:谁调用此方法(调用者)或此方法调用什么(被调用者)。通过BM索引使用语义BSL分析,而不是文本搜索。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
modulePath | 是 | 路径来自 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl) |
methodName | 是 | 过程/函数的名称(不区分大小写) |
direction | 没有 | callers (谁调用此方法,默认)或 callees (此方法调用什么) |
limit | 否 | 最大结果数(默认值:100,最大值:500) |
笔记:
- 需要EMF模型(BSL AST)——在文本回退模式下不起作用
callers使用IReferenceFinder在整个项目中搜索callees遍历方法的AST以查找所有调用
转到定义工具
go_to_definition -导航到符号的定义。解决方法调用,如 CommonModuleName.MethodName 到带有源代码、签名和位置的实际定义。还解析元数据对象FQN,如 Catalog.Products。支持英语和俄语元数据类型名称。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
symbol | 是 | 要查找定义的符号。格式: ModuleName.MethodName (通用模块中的方法), MethodName (方法在上下文模块中,需要 modulePath), Catalog.Products (元数据对象FQN)。还支持俄语元数据类型名称 |
modulePath | 否 | 来自的上下文模块路径 src/ 文件夹(例如。 Documents/SalesOrder/ObjectModule.bsl).当符号是非限定方法名时,需要 |
includeSource | 否 | 在响应中包含方法源代码(默认值: true) |
退货: Markdown包含:
- 方法签名、导出标志、行范围
- 带有行号的源代码(当
includeSource=true) - 导航文件路径
- 对于元数据对象:FQN、同义词、可用模块
获取符号信息工具
get_symbol_info -获取BSL模块中特定位置符号的类型和悬停信息。返回推断的类型、签名和文档——与EDT在鼠标悬停时显示的信息相同。有助于理解动态类型BSL代码中的变量类型。
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | EDT项目名称 |
filePath | 是 | BSL文件相对于项目的路径 src/ 文件夹(例如。 CommonModules/MyModule/Module.bsl) |
line | 是 | 行号(从1开始) |
column | 是 | 列号(从1开始) |
退货: 带有符号信息的Markdown。使用多层次方法:
- 编辑器悬停 (最好):返回推断的类型、方法签名、文档——与IDE悬停工具提示相同
- E对象分析 (回退):返回结构信息——符号类型、名称、签名、导出标志、行范围
- EMF模型 (最后手段):不打开编辑器的基本节点信息
使用案例:
- 确定变量的推断类型(BSL是动态类型的)
- 在调用站点获取方法签名和文档
- 检查通过点符号访问的对象的属性类型
- 了解平台方法参数类型
配置XML导出/导入
这些工具位于Core/Project组中,并封装了官方1C EDT工作区CLI API(com._1c.g5.v8.dt.cli.api.workspace.*)通过反射——保持对这些API的零编译时依赖性,同时仍将它们呈现给AI助手。
export_configuration_to_xml --将EDT配置项目导出到XML源文件目录。相当于EDT菜单 *出口→ XML文件的配置* 1C平台 DumpConfigToFiles 命令。包裹 IExportConfigurationFilesApi.exportProject(String projectName, Path outputPath).
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | 要导出的EDT项目名称 |
outputPath | 是 | 输出目录的文件系统路径。已解析为绝对路径。如果不存在,则自动创建;该路径上的现有文件(不是目录)被拒绝,并出现明显错误 |
import_configuration_from_xml --将配置从XML文件目录导入工作区中的新EDT项目。反向 export_configuration_to_xml.包装 IImportConfigurationFilesApi.importProject(Path importSource, String projectName, String nature, String xmlVersion).在API调用之后,该工具还关闭/打开/刷新新项目,以触发EDT的项目生命周期(底层CLI API硬代码 setRefreshProject(false) 并且否则将使项目没有索引),因此导入的项目可以在没有手动GUI干预的情况下使用。
| 参数 | 必填 | 说明 |
|---|---|---|
importPath | 是 | 包含XML文件的源目录的文件系统路径。已解析为绝对路径。必须存在并且是目录;否则在API调用之前被拒绝并出现明显错误 |
projectName | 是 | 要在工作区中创建的新EDT项目的名称 |
projectNature | 否 | EDT项目性质ID(例如。 com._1c.g5.v8.dt.core.V8ConfigurationNature);空/省略=让EDT自动检测 |
xmlVersion | 否 | XML格式版本(例如。 8.3.20);空/省略=让EDT自动检测 |
语言工具
LanguageTool通过以下方式单独安装 *Help → 安装新软件* 美国东部夏令时间2025.x和2026.1;它没有与EDT基础发行捆绑在一起。这些工具封装了官方的1C CLI API(com.e1c.langtool.v8.dt.cli.api.*)通过反射,因此该插件在编译时不依赖于LanguageTool。未安装LanguageTool时,每个工具都会返回一个明确的“API不可用”错误,而不是失败。
概念
这三种工具涉及四种对象,一个清晰的心理模型有助于选择正确的对象:
- 配置项目 --您应用程序的常规EDT项目。有
V8ConfigurationNature并包含所有元数据(Catalogs,Documents等)加上申报Languages.generate_translation_strings必须在这个项目上运行。 - 字典存储项目 — *朴素* Eclipse项目(不是1C-EDT项目)
dependentProjectNature,被LangTool用作保存的外部位置.lstr/.trans/.dict文件夹。它是作为一个常规的空Eclipse项目创建的 不 与任何配置都有内在联系。链接是从配置端建立的:在配置项目的设置中,用户将此Eclipse项目作为外部字典存储指向。配置项目本身也可以作为自己的存储——在这种情况下,字典就位于其中。 - 存储 --LangTool配置中的逻辑目标,决定每个生成的密钥写入的位置。配置项目在中声明了多个存储
.settings/translation_storages.yml(edit:default,dictionary:common-camelcase,context:model等等);每个存储都绑定到配置本身或前一个项目符号中的字典存储项目之一。使用get_translation_project_info枚举给定项目上声明的存储。 - 翻译服务提供商 --一种可以为新生成的密钥(谷歌、微软、Yandex、基于历史的等)预填充值的集成。仅在以下情况下使用
fillUpType=FROM_PROVIDER.使用get_translation_project_info以枚举可用ID。
典型工作流程
- 发现 --呼叫
get_translation_project_info在配置项目中了解哪些存储和提供程序可用。缓存结果;它在字典编辑之间不会改变。 - 生成 --呼叫
generate_translation_strings根据配置项目,传递目标语言。这将填充项目上声明的存储中的占位符键。该操作是幂等的:重新运行它只会添加尚不存在的新密钥。 - 翻译 --填写占位符值。此步骤发生在MCP工具之外:编辑
.lstr/.trans/.dict文件(在任何字典存储项目中,或在配置本身中,存储将它们路由到),可以手动或通过将它们馈送到LLM。该插件将此步骤视为黑盒。 - 同步 --呼叫
translate_configuration在源代码配置项目上。这将从绑定到配置的存储中读取字典,并重新生成翻译后的工件。这是翻译者在每批词典编辑后运行的操作。 - 迭代 --典型的现实世界流程在步骤2-4之间交替:源代码更改添加新的可翻译字符串→
generate_translation_strings扩充字典→ 翻译器填充新密钥→translate_configuration传播它们。
这个循环的一个实际例子是自动翻译一个正在积极开发的上游库(俄语→ 在每个版本中,CI脚本都会调用这些工具 git pull 要使用新添加的字符串扩展字典,请在新键上运行翻译器,然后同步——生成新的翻译XML源,而无需在EDT UI中手动点击。
注意事项
generate_translation_strings在联系LanguageTool之前,以显式错误拒绝非配置项目(字典存储项目、扩展、普通Eclipse项目)。支票使用IProject.hasNature(V8ConfigurationNature).- 字典存储项目是 普通Eclipse项目 --通过创建 *File → New → 项目→ 通用→ 项目*, 不 通过任何1C:企业向导。然后,它通过配置项目的属性(翻译页面)附加到配置中。这两个步骤都没有MCP工具——设置是一次性的GUI操作。
- 配置项目可以充当自己的字典存储(然后
.lstr/.trans/.dict文件位于其中)。单独的Eclipse项目只是组织的选择。 providerId有意义 仅 当fillUpType=FROM_PROVIDER把它和其他东西一起传递fillUpType被静默忽略(后缀仅附加于FROM_PROVIDER),并且当模式为FROM_PROVIDER时忘记它会在调用基础API之前返回故障启动错误。translate_configuration不涉及用户词典,它只是从中重新导出翻译后的工件。编辑到.lstr/.trans/.dict是译者的责任。- 所有这三个工具都在下面逐字显示了底层LangTool异常
error当LanguageTool内部出现问题时,AI代理可以使用调整后的参数重试或上报给用户。
generate_translation_strings --包裹 IGenerateTranslationStringsApi.generateTranslationStrings(...)相当于EDT菜单 *翻译→ 生成翻译字符串*.调用于a 配置项目 (V8ConfigurationNature);字典存储项目(字典所在的普通Eclipse项目)是错误的目标。在中生成占位符键 .lstr / .trans / .dict 由配置的翻译存储路由的文件。然后,翻译器(或LLM)填写值。
| 参数 | 必填 | 说明 | ||||
|---|---|---|---|---|---|---|
projectName | 是 | 配置项目名称(V8ConfigurationNature) | ||||
targetLanguages | 是 | 生成字符串的目标语言代码,例如。 ["en"] | ||||
storageId | 没有 | 要将生成的密钥写入的存储ID。违约: edit:default.使用 get_translation_project_info 列出可用存储 | ||||
collectInterface | 否 | 生成接口(.lstr)钥匙。违约: true | ||||
collectModel | 否 | 生成模型(.trans)钥匙。违约: true | ||||
collectModelType | 否 | 模型收集模式: ANY | NONE | COMPUTED_ONLY | UNKNOWN_ONLY | TAGS_ONLY默认值: ANY |
fillUpType | 否 | 用以下值预填充新密钥: NOT_FILLUP | FROM_SOURCE_LANGUAGE | FROM_PROVIDER默认值: NOT_FILLUP | ||
providerId | 否 | 翻译提供商ID(仅在以下情况下使用 fillUpType=FROM_PROVIDER).使用 get_translation_project_info 列出可用的提供商 |
退货: 带YAML frontmatter的Markdown(tool, project, targetLanguages, storageId, collectInterface, collectModel, collectModelType, fillUpType, status)随后是简短的文本确认。
translate_configuration --包裹 ISynchronizeProjectApi.synchronizeProject(IDtProject, List)相当于EDT菜单 *翻译→ 翻译配置*.从绑定到配置的存储中读取字典(这些字典可能位于外部字典存储项目中或配置本身内部),并重新生成翻译后的工件。这是翻译者在编辑词典后执行的主要操作。
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | 项目名称(通常是源项目) |
targetLanguages | 是 | 要同步的目标语言代码,例如。 ["en"] |
退货: 带YAML frontmatter的Markdown(tool, project, targetLanguages, status)随后是简短的文本确认。
get_translation_project_info --包裹 IProjectInformationApi.返回项目上声明的翻译存储ID的诊断工具(例如。 edit:default, dictionary:common-camelcase, dictionary:common, context:model, context:interface)以及可用的翻译提供商ID(谷歌、微软、Yandex、历史记录等)。
| 参数 | 必填 | 说明 |
|---|---|---|
projectName | 是 | 项目名称 |
退货: 带YAML frontmatter的Markdown(tool, project, storagesCount, providersCount)随后 ## Storages 和 ## Translation providers 部分,每个部分都呈现为项目符号列表。
输出格式
- Markdown工具:
list_projects,get_project_errors,get_bookmarks,get_tasks,get_problem_summary,get_check_description,所有LanguageTool工具-返回Markdown作为EmbeddedResourcemimeType: text/markdown - JSON工具:
get_configuration_properties,clean_project,revalidate_objects,export_configuration_to_xml,import_configuration_from_xml-返回JSONstructuredContent - 文本工具:
get_edt_version-返回纯文本
API终点
| 端点 | 方法 | 描述 |
|---|---|---|
/mcp | POST | MCP JSON-RPC(初始化、工具/列表、工具/调用) |
/mcp | GET | 服务器信息 |
/health | GET | 健康检查 |
元数据标签
使用自定义标签组织元数据对象,以便于导航和过滤。
为什么要使用标签?
标签帮助您:
- 跨不同元数据类型对相关对象进行分组(例如,特定功能的所有对象)
- 快速查找大型配置中的对象
- 过滤导航器以关注项目的特定区域
- 通过版本控制与团队共享对象组织
入门指南
为对象指定标记:
- 右键单击导航器中的任何元数据对象
- 选择 标签 从上下文菜单
- 检查要分配的标签,或选择 管理标签。.. 创建新的
管理标签:
在“管理标记”对话框中,您可以:
- 使用自定义名称、颜色和描述创建新标记
- 编辑现有标签(名称、颜色、描述)
- 删除标签
- 查看项目的所有可用标签
在导航器中查看标签
标记的对象在“导航器”树中将其标记显示为后缀:
要启用/禁用标签显示:
- 窗口→ 偏好→ 通用→ 外观→ 标签装饰
- 切换“元数据标签装饰器”
按标签筛选导航器
过滤整个导航器,仅显示具有特定标签的对象:
- 单击导航器工具栏中的标记过滤器按钮(或右键单击→ Tags → 按标签筛选。..)
- 选择一个或多个标签
- 点击 集 应用过滤器
导航器将仅显示:
- 具有任何选定标记的对象
- 包含匹配对象的父文件夹
要清除过滤器: 点击 关掉 在对话框中,或再次使用工具栏按钮。
标签的快捷键
使用键盘快捷键快速切换选定对象上的标签:
| 快捷方式 | 操作 |
|---|---|
| Ctrl+Alt+1 | 切换第一个标签 |
| Ctrl+Alt+2 | 切换第二个标签 |
| ... | ... |
| Ctrl+Alt+9 | 切换第9个标签 |
| Ctrl+Alt+0 | 切换第10个标签 |
特征:
- 适用于多个选定对象
- 支持跨项目选择(每个对象使用其自己项目中的标记)
- 再次按下相同的快捷键会删除标签(切换行为)
- 标签顺序可在“管理标签”对话框中配置(上移/下移按钮)
要自定义快捷方式,请执行以下操作: 窗口→ 偏好→ 通用→ Keys → 搜索“切换标签”
过滤未标记的对象
查找尚未标记的元数据对象:
- 打开“按标记筛选”对话框(工具栏按钮或标记→ 按标签筛选。..)
- 检查 “仅显示未标记的对象” 复选框
- 点击 集
导航器将仅显示没有分配标签的对象,从而可以轻松识别需要分类的对象。
多选标签分配
一次从多个对象中指定或删除标记:
- 在导航器中选择多个对象(Ctrl+单击或Shift+单击)
- 右击→ 标签
- 选择一个标记,为所有选定对象打开/关闭该标记
行为:
- ✓ 选中=所有选定对象都有此标记
- ☐ 未选中=所有选定对象都没有此标记
- 当对象来自不同的项目时,只有来自具有标记的项目的对象才会受到影响
标签过滤器视图
要跨多个项目进行高级筛选,请使用标记筛选器视图:
窗口→ 显示视图→ 其他→ MCP服务器→ 标签过滤器
此视图提供:
- 左侧面板:从工作区中的所有项目中选择标签
- 右侧面板:通过搜索和导航查看所有匹配的对象
- 搜索:使用正则表达式按对象名称筛选结果
- 双击:直接导航到对象
标签存储位置
标签存储在 .settings/metadata-tags.yaml 每个项目中的文件。此文件:
- 可以提交版本控制(VCS友好)
- 重命名或删除对象时会自动更新
- 使用YAML格式便于阅读
例子:
assignments:
CommonModule.Utils:
- Utils
Document.SalesOrder:
- Important
- Sales
tags:
- color: '#FF0000'
description: Critical business logic
name: Important
- color: '#00FF00'
description: ''
name: Utils
- color: '#0066FF'
description: Sales department documents
name: Sales元数据组
使用自定义组组织导航器树,为元数据对象创建逻辑文件夹结构。
为什么要使用组?
小组帮助您:
- 在导航树中创建自定义文件夹层次结构
- 按业务领域、功能或任何逻辑结构组织对象
- 使用嵌套组更快地导航大型配置
- 将已分组的对象与未分组的对象分开
入门指南
创建组:
- 右键单击导航器中的任何元数据文件夹(例如目录、通用模块)
- 选择 新组。.. 从上下文菜单
- 输入组名和可选描述
- 点击 好的 创建组
“创建组”对话框:
向组中添加对象:
- 右键单击导航器中的任何元数据对象
- 选择 添加到组。..
- 从列表中选择目标组
从组中删除对象:
- 右键单击组内的对象
- 选择 从组中删除
在导航器中查看组
分组对象显示在导航器树中的组文件夹内:
Navigator with Groups - Common Modules
Navigator with Groups - Catalogs
主要特点:
- 根据元数据集合(目录、通用模块、文档等)创建组
- 组内的对象仍然可以通过标准EDT导航访问
- 未分组的对象显示在列表末尾
- 使用 隐藏组 导航器工具栏中的切换按钮,用于临时隐藏虚拟组文件夹,并再次显示其原始集合中的分组对象
组操作
| 行动 | 如何做 |
|---|---|
| 创建组 | 右键单击文件夹→ 新组。.. |
| 将对象添加到组 | 右键单击对象→ 添加到组。.. |
| 从组中删除 | 右键单击组中的对象→ 从组中删除 |
| 复制组名 | 选择组→ Ctrl+C |
| 删除组 | 右键单击组→ 删除 |
| 重命名组 | 右键单击组→ 重命名。.. |
| 隐藏/显示组 | 单击 隐藏组 在“导航器”工具栏中 |
存储组的位置
组存储在 .settings/groups.yaml 每个项目中的文件。此文件:
- 可以提交版本控制(VCS友好)
- 使用YAML格式便于阅读
- 重命名或删除对象时会自动更新
例子:
groups:
- name: "Products & Inventory"
description: "Product and inventory catalogs"
path: Catalog
order: 0
children:
- Catalog.ItemKeys
- Catalog.Items
- Catalog.ItemSegments
- Catalog.Units
- Catalog.UnitsOfMeasurement
- name: "Organization"
description: "Organization structure catalogs"
path: Catalog
order: 1
children:
- Catalog.Companies
- Catalog.Stores
- name: "Core Functions"
description: "Core shared functions used across the application"
path: CommonModule
order: 0
children:
- CommonModule.CommonFunctionsClient
- CommonModule.CommonFunctionsServer
- CommonModule.CommonFunctionsClientServer
- name: "Localization"
description: "Multi-language support modules"
path: CommonModule
order: 1
children:
- CommonModule.Localization
- CommonModule.LocalizationClient
- CommonModule.LocalizationServer
- CommonModule.LocalizationReuse需求
- 1C:EDT 2025.2(Ruby)或更高版本
- Java 17+
