Инструменты

Инструменты Расширенной версии

10 консолидированных инструментов Расширенной версии с параметром action и поддержкой расширений .cfe.

10 консолидированных инструментов, доступных по подписке

В Расширенной версии возможности Открытой объединены в консолидированные инструменты с параметром action (code_read, code_search, code_execute, system). К ним добавлены шесть новых инструментов (code_analyze, code_generate, memory, templates, form_edit и tj_analyze) и новые действия в уже существующих инструментах.

Отдельно от консолидированных инструментов сохранены два инструмента Открытой версии, analyze_subsystems и reload_dump. Они остались самостоятельными под своими именами из Открытой версии, чтобы при переходе на Расширенную клиенту AI не пришлось переучиваться.

Без действующей подписки сервер регистрирует шесть инструментов уровня Открытой версии: code_read, code_search, code_execute, system, analyze_subsystems и reload_dump. Эти возможности бесплатны в Открытой версии, поэтому отсутствующая или истёкшая подписка их не забирает. Остальные шесть, code_analyze, code_generate, memory, templates, form_edit и tj_analyze, требуют действующей подписки уровня Расширенной: пока подписки нет или она истекла, в списке инструментов их нет. Если подписки нет уже на старте, сервер их вовсе не регистрирует, а если она перестала действовать на работающем сервере, он убирает их из списка. После восстановления подписки они появляются снова.

Пометка «по подписке» выше относится к этим шести инструментам, а также к отдельным действиям уровня Расширенной внутри code_read, code_search, code_execute и system: сами эти инструменты регистрируются и без подписки, а часть их действий подписки требует. Пометка «Открытая» у действия означает, что в этом бинаре действие работает без подписки, а не что такой же ответ даёт бесплатный бинарь Открытой версии. Исключение одно: у действия form_structure само действие остаётся общедоступным, а подписки требует его ветвь разбора обычной формы.

code_read

Расширенная

Чтение кода и метаданных 1С

Объединяет инструменты чтения метаданных и кода Открытой версии (get_metadata_tree, get_object_structure, get_form_structure, get_configuration_info) в один инструмент с параметром action и добавляет чтение исходного кода модулей.

Действия:

  • action: "metadata_tree" Открытая - дерево объектов конфигурации по категориям
  • action: "object_structure" Открытая - реквизиты, табличные части, измерения, ресурсы и типы полей объекта
  • action: "form_structure" Открытая - элементы, команды и обработчики формы. Обычная форма (Form.bin) читается из выгрузки и отвечает с form_type: "ordinary", управляемая (Form.xml) с form_type: "managed". Управляемая форма читается без подписки. Обычную форму (Form.bin) разбирают только бинари Расширенной и Профессиональной версий, и для этого нужна действующая подписка уровня Расширенной; без неё ответ приходит отказом с признаком ошибки. В Открытой версии get_form_structure читает управляемые формы из Form.xml. У элемента обычной формы поле type несёт идентификатор класса, имя класса возвращается в type_name, а русское имя, которое видно в Конфигураторе, в derived_type_name (v2.40.1)
  • action: "form_view" Расширенная и Профессиональная - схема обычной или управляемой формы в HTML или SVG. Для обычной формы (Form.bin) элементы размещаются по их рамкам; управляемая форма (Form.xml) показывается приблизительно в стиле «Такси», это не снимок экрана из платформы.
  • action: "form_query" Расширенная - статический текст запроса каждого динамического списка формы, под именем того реквизита, которому список принадлежит. Единственный способ получить сам текст: form_structure перечисляет динамические списки, но текста не даёт. Обязательны object_type и object_name; у общей формы вид объекта задаётся как ОбщаяФорма/CommonForm, а именем объекта служит имя самой формы; без form_name возвращаются списки всех форм объекта. У каждого списка один из пяти статусов: executable (платформа выполняет показанный текст), overridden_in_bsl (текст запроса присваивает модуль формы, поэтому записанный в файле текст платформой не выполняется), not_used (произвольный запрос выключен, платформа строит запрос сама по основной таблице), auto (произвольный запрос выключен и текст не записан), not_checked (ответа нет, а не отсутствие переопределения). Требует --dump (v2.34.0)
  • action: "config_info" Открытая - имя, версия, поставщик, режим совместимости конфигурации
  • action: "module_code" Расширенная - исходный код модуля объекта, формы, общего модуля или расширения
  • action: "context" Расширенная - сжатые метаданные объекта с кэшированием: связанные объекты, регистры, модули, подписки на события
  • action: "resolve" Расширенная - резолв имени или GUID объекта в его модули (doc_id) и формы по индексу выгрузки, мост к действию module_code. Параметр kind: name (по умолчанию) или guid. Требует --dump
  • action: "get_xsd_schema" Расширенная - структурная XSD-схема типа объекта, выведенная из вашей выгрузки (честная граница: это не авторитетная XSD 1С, а структура по образцам дампа). Требует --dump (v2.18.0)
  • action: "verify_xml" Расширенная - структурная проверка XML против схемы, выведенной из выгрузки: состав, вложенность, обязательность и типы листьев. Не заменяет авторитетную XSD-валидацию 1С. Требует --dump (v2.18.0)
  • action: "dossier" Профессиональная - агрегированное досье объекта одним вызовом: структура + где используется + движения по регистрам + связанные объекты (см. карточку dossier)
  • action: "report_structure" Профессиональная - структура схемы компоновки данных (СКД) отчёта из выгрузки: наборы данных, параметры, наблюдаемые поля (см. карточку report_structure) (v2.25.0)
  • action: "report_search" Профессиональная - поиск по схемам компоновки данных всех отчётов выгрузки (см. карточку report_search) (v2.25.0)

form_view

Действие form_view требует выгрузку, заданную через --dump; файл рисунка сохраняется в каталоге артефактов сервера, а не в выгрузке. Обязательны object_type и object_name; для формы объекта задайте form_name, а для общей формы (CommonForm) по умолчанию используется её имя. Параметр base выбирает зарегистрированную базу, если их несколько. Поддерживаются обычные формы объектов, общие формы, формы хранилища настроек и формы критериев отбора.

Параметр format: html (по умолчанию), svg или outline. Формат outline возвращает перечень элементов без рисунка и файла. Для управляемой формы width ограничивает естественную ширину рисунка: по умолчанию 1280 пикселей, 0 снимает ограничение. show_hidden: true включает скрытые элементы; без него показываются видимые элементы.

Для выбора страницы задайте page: имя, номер с нуля или #номер. Без параметра для обычной формы показывается первая страница, а для управляемой - форма при открытии; в группе страниц без закладок по умолчанию выбирается первая видимая страница. Значение page: "*" просит показать страницы вместе: за один ответ рисуется не более 100 страниц, а заметка перечисляет те, что не вошли в рисунок. Скрытые страницы учитываются только при show_hidden: true. Если после отбора не осталось страниц для рисунка, показывается форма при открытии.

Параметр open_in_browser по умолчанию равен false; при true сервер открывает сохранённый файл программой, связанной с его форматом. Включайте его только после просьбы пользователя открыть файл.

Расширенная

Поиск по коду и справочнику 1С

Объединяет поиск по коду модулей (search_code) и справочник по синтаксису 1С (bsl_syntax_help) в один инструмент с параметром action.

Действия:

  • action: "text" Открытая - полнотекстовый поиск по коду модулей: режимы smart (BM25, по умолчанию), regex, exact. Векторные режимы mode: "semantic" и mode: "hybrid" доступны в Профессиональной редакции при запуске с --enable-semantic
  • action: "syntax_help" Расширенная - справка по функциям и типам платформы из файлов синтакс-помощника (.hbk); поиск понимает русскую морфологию: запрос «работа с датами» находит раздел «Работа с датами и временем»
  • action: "syntax_ref" Расширенная - статический справочник по языку запросов, функциям компоновки данных (СКД) и спецификаторам форматной строки. Работает офлайн, без выгрузки конфигурации и без живой базы. Параметр query (обязательный): имя конструкции, например ПОДСТРОКА. Необязательный domain сужает область справочника: query (язык запросов), scd (компоновка данных), format (форматная строка) (v2.25.0)
  • action: "semantic" Профессиональная (устарело) - векторный поиск по смыслу. Канонический способ задаётся через action: "text" с mode: "semantic" (см. карточку semantic search)

code_execute

Расширенная

Выполнение кода и запросов 1С

Объединяет выполнение запросов (execute_query) и проверку их синтаксиса (validate_query) в один инструмент с параметром action и добавляет выполнение произвольного кода BSL.

Внимание: действие code может изменять данные в базе 1С (инструмент помечен как не доступный только для чтения).

Действия:

  • action: "query" Открытая - выполнить запрос ВЫБРАТЬ/SELECT к данным 1С (безопасно для рабочих баз)
  • action: "validate" Открытая - проверка синтаксиса запроса без выполнения
  • action: "code" Расширенная - выполнить произвольный код BSL в контексте базы 1С (может изменять данные). Для базы, подключённой с флагом --read-only, это действие закрыто (v2.35.0)

system

Расширенная

Системные операции 1С

Объединяет чтение журнала регистрации (get_event_log) и список подключённых баз в один инструмент с параметром action и добавляет управление кэшем расширений.

Действия:

  • action: "event_log" Открытая - чтение журнала регистрации 1С с фильтрами по дате, уровню важности, пользователю и событию. Требует у пользователя 1С, под которым работает сервер, право «Администрирование»: без него расширение отвечает HTTP 403 и не возвращает ни одной записи. Параметр event это массив имён событий, где имя технический идентификатор вроде _$Session$_.Start, а не то, что написано в колонке «Событие» окна журнала регистрации. Пустой список и имя неизвестного события отклоняются с объяснением, а не принимаются молча. Поле total считает отданные записи, а не все подходящие. На базах, работающих через опрос, отбор, который применить нельзя, тоже отклоняется, а не отбрасывается молча. Ветка расширения, читающая event, появилась в 0.7.7, и оговорка в ответе снимается уже на ней: отбор по событию работает начиная с 0.7.7. Это описание поведения v2.38.0: тогда сервер требовал не ниже 0.8.0 и на 0.7.7 при старте писал ошибку о старом расширении, но продолжал работу. В текущей поставке v2.43.1 используются расширения 0.10.1; обновление выполняется по быстрому старту с сохранением данных.
  • action: "list_bases" Открытая - список подключённых баз 1С и их статус
  • action: "refresh_extensions" Расширенная - принудительно обновить кэш расширений конфигурации (.cfe)

code_analyze

Расширенная

Анализ и проверка кода

Действия:

  • action: "explain" - глубокий статический анализ кода BSL с 6 анализаторами: сложность, ошибки, стиль, производительность, безопасность, совместимость
  • action: "check" - проверка кода BSL на типичные ошибки и антипаттерны
  • action: "compatibility" - анализ совместимости с версиями платформы 1С, breaking changes, матрица совместимости

Параметр dump_path читает только действие compatibility, которое определяет версию платформы из ConfigDumpInfo.xml. С версии v2.30.0 остальные действия его отклоняют с сообщением «Параметр dump_path не применяется к действию ...: анализ выполняется по выгрузке зарегистрированной базы. Выберите базу параметром base.» Прежде параметр принимался и молча отбрасывался, то есть анализ всё равно шёл по выгрузке зарегистрированной базы, а вызывающая сторона считала, что сузила область поиска. В Профессиональной версии у инструмента десять действий, и отклоняют параметр девять из них, в Расширенной действий три, и отклоняют его два. Пустая строка и null проходят по-прежнему, потому что это не запрос другой области.

В Профессиональной редакции к инструменту добавляются действия dependency_graph, call_hierarchy, arch_boundary, find_modules, graph_query, goto_definition и find_references (см. раздел Профессиональной).

code_generate

Расширенная

Генерация и оптимизация кода

Действия:

  • action: "query" - генерация запросов 1С по текстовому описанию с учетом структуры конфигурации
  • action: "print_form" - генерация кода печатных форм: шапка, табличная часть, итоги
  • action: "async_convert" - преобразование синхронных вызовов BSL в асинхронные
  • action: "optimize_query" - статический анализ запросов на 15 антипаттернов производительности

memory

Расширенная

Долговременная память по базе

Заметки, решения и договорённости, привязанные к конкретной базе 1С. AI-ассистент сам сохраняет важный контекст и поднимает его в следующих сессиях, не теряя нить работы по проекту.

Действия:

  • action: "remember" - сохранить заметку, привязанную к текущей базе
  • action: "recall" - найти ранее сохранённые заметки по запросу
  • action: "forget" - удалить заметку

recall находит заметку, если слово запроса входит в её ключ, текст или метки как часть слова, без учёта регистра: «товар» найдёт «Товары», а «деплоить» не найдёт «деплой». Выше стоят заметки, где совпало больше разных слов. В Профессиональной редакции, запущенной с --enable-semantic, в ответ попадают и заметки, близкие к запросу по TF-IDF с синонимами 1С, и тогда порядок смешивает обе оценки.

templates

Расширенная

Библиотека шаблонов кода и запросов

Курируемая библиотека переиспользуемых фрагментов BSL и запросов 1С, общая для всех баз. Вы пополняете её проверенными решениями, а AI-ассистент подбирает подходящий шаблон по описанию задачи.

Действия:

  • action: "add" - добавить шаблон в библиотеку
  • action: "list" - список доступных шаблонов
  • action: "get" - получить шаблон по идентификатору
  • action: "search" - найти шаблон по описанию задачи
  • action: "remove" - удалить шаблон

search находит шаблон, если слово запроса входит в его имя, описание или тело как часть слова, без учёта регистра. Выше стоят шаблоны, где совпало больше разных слов. В Профессиональной редакции, запущенной с --enable-semantic, в ответ попадают и шаблоны, близкие к запросу по TF-IDF с синонимами 1С, и тогда порядок смешивает обе оценки.

form_edit

Расширенная

Создание и изменение обычных форм

Правит обычную форму (Form.bin) прямо в каталоге выгрузки. Управляемые формы хранятся в Form.xml, и этот инструмент их не трогает.

Правка применяется на месте: исходный файл сохраняется рядом под именем со временем правки, а его путь возвращается в поле backup_path. Запись идёт через временный файл, поэтому оборванный вызов оставляет либо старый файл, либо новый, но не половину. Чтобы посмотреть результат без записи, передайте dry_run: true. Текущую структуру формы смотрите через code_read с action: "form_structure".

Действия:

  • action: "create_form" - создать форму копией существующей. Первую форму объекта создать нельзя: копировать нечего
  • action: "rename_element" - переименовать элемент и ссылки вида ЭлементыФормы.Имя в модуле формы. Голые упоминания имени не переписываются: в обычной форме голое имя адресует реквизит формы, а не элемент
  • action: "move_element" - передвинуть элемент и изменить его размер. Рамка задаётся в единицах самой формы, у вложенного элемента отсчёт идёт от контейнера
  • action: "delete_element" - удалить элемент вместе с вложенными. Модуль не переписывается: код, который обращался к удалённому элементу, остаётся как был
  • action: "duplicate_element" - добавить элемент копией существующего. Копия ложится ровно на исходный и её нужно подвинуть, а обработчики событий у них общие
  • action: "add_element" - добавить элемент класса, которого в форме ещё нет, взяв запись из другой формы той же выгрузки. Вместе с элементом приезжают надпись донора и имена его обработчиков

Обязательные параметры для всех действий: object_type, object_name, form_name.

После правки конфигурацию нужно загрузить в базу самостоятельно, Конфигуратором или через /LoadConfigFromFiles. Пакетная загрузка не проверяет содержимое формы, поэтому убедитесь, что форма открывается в Конфигураторе.

Требует: --dump и действующую подписку уровня Расширенной (v2.40.1)

tj_analyze

Расширенная

Технологический журнал 1С

Разбирает технологический журнал 1С и сводит его по событиям: сколько файлов найдено и прочитано, время первой и последней из записей, у которых оно есть, сколько записей у каждого события (в ответе до 50 самых частых), на какие обращения к СУБД ушло больше всего времени, какие были блокировки и исключения. Инструмент только читает: журнал он не включает, logcfg.xml не пишет и других файлов не создаёт.

Каталог журнала передаётся параметром dir в каждом вызове и открывается на той машине, где работает сервер MCP-1C. В каталоге читаются подкаталоги процессов вида <процесс>_<pid> (например, rphost_1234) и в них файлы ГГММДДЧЧ.log. Записи каталога с другими именами не читаются, и ответ называет их число. Ссылки, которые ведут за пределы dir или имеют абсолютную цель (в том числе junction), и файлы с несколькими именами тоже не читаются: они попадают в список отказов files.refusals с причиной. В ответе этот список показывает первые 50 отказов, а об остальных сказано числом в записке. Параметр base к этому инструменту не применяется, вызов с ним отклоняется.

Инструмент читает оба формата записи журнала, обычный и JSON. В обычном формате доля секунды в метке времени с платформы 8.3.3 пишется шестью знаками, а до неё четырьмя. Длительность в записях из 4 знаков инструмент читает в сотнях микросекунд: единицу он выбирает по доле самой записи, длительность пересчитывает в микросекунды и говорит об этом запиской. Опирается это чтение на две вещи. По списку изменений платформы 8.3.3 до неё свойство Duration содержало длительность в сотнях микросекунд, и поле длительности в строке инструмент читает в тех же единицах. А в опубликованном отрывке такого журнала при этом чтении две записи начинаются ровно через 100 микросекунд после конца записи перед ними, при чтении в микросекундах так не выходит ни у одной. Руководства администратора 8.3.22 и 8.3.24 дают длительность в микросекундах для строки с 6 знаками доли, а пример к этому тексту в них записан с 4 знаками. Разбор записей из 4 знаков проверен на составленных записях и на нескольких опубликованных строках таких журналов, целых журналов этого формата в проверке не было. Формат каждого файла инструмент определяет сам по первым байтам, а в поле dialects называет, какие форматы прочитал. Время записей журнала и границы окна, заданные без часового пояса, читаются в часовом поясе машины, где работает сервер MCP-1C.

Метка времени записи это конец её интервала, длительность отсчитывается от неё назад: по документации платформы строка события пишется при его завершении, кроме события EXCPCNTX. Окно since и until и время первой и последней записи в ответе считаются по этой метке.

Действия:

  • action: "parse" - свод по всему каталогу: сколько найдено подкаталогов процессов и файлов и сколько прочитано, в каких форматах, время первой и последней из записей, у которых оно есть, сколько записей каждого события (показываются 50 самых частых) и разделы по длительности, блокировкам и исключениям. Какие разделы считать, задаёт параметр classes со значениями perf, lock и error, по умолчанию считаются все три
  • action: "perf" - свод по длительности обращений к СУБД и запросов SDBL, события DB2, DBMSSQL, DBORACLE, DBPOSTGRS, DBV8DBEng и SDBL. Параметр min_duration_us задаёт нижнюю границу длительности записи в микросекундах. Запросы, которые различаются только литералами, попадают в разные группы
  • action: "locks" - свод по событиям блокировок TDEADLOCK, TLOCK, TLOCKLITE и TTIMEOUT
  • action: "errors" - свод по исключениям, события EXCP, EXCPCNTX и QERR
  • action: "suggest_logcfg" - текст logcfg.xml, которым журнал включается, и место, куда этот файл кладут (см. ниже)

Ответы perf, locks и errors содержат ту же сводку по файлам и событиям, что и parse, но считают только свой раздел.

В каждом разделе записи собраны в группы по событию и значению одного свойства записи: у perf это первое из Sql, Sdbl, MName и Func, у lock первое из Regions, Locks и WaitConnections, у error первое из Exception, Descr и Txt. У группы есть число записей, суммарная, наибольшая и средняя длительность в микросекундах (total_us, max_us, avg_us), время первой и последней записи, имена процессов и образец, то есть свойства самой долгой записи группы, той, от которой взят max_us. Если свойств у этой записи нет, образца у группы нет. В образце ничего не маскируется. Группы идут по убыванию суммарной длительности, а параметр top задаёт, сколько их показать в каждом разделе: по умолчанию 20, не больше 200. Длинные значения обрезаются до 400 знаков, и каждое обрезанное значение помечено. Запись, у которой метка времени читается как нулевой момент, 0001-01-01T00:00:00 UTC, ответ считает записью без времени: первой или последней записью окна и группы она не бывает. Если времени нет ни у одной записи окна, полей first_record и last_record в ответе нет, а у группы, где времени нет ни у одной записи, нет first и last. Сколько записей без времени попало в окно, называет записка, когда такие записи есть.

Параметры читающих действий: dir (обязательный), since и until (окно по времени записи в виде YYYY-MM-DD, YYYY-MM-DDTHH:MM:SS или RFC3339; граница until входит в окно, а дата без времени читается как начало дня), top. Параметр classes читает только parse, а min_duration_us только perf. Параметр, которого выбранное действие не читает, не отбрасывается молча: вызов с ним отклоняется.

Как включить журнал

suggest_logcfg ничего не пишет на диск и каталог dir не читает. Оно возвращает текст logcfg.xml в поле logcfg, а положить файл на сервер 1С должен администратор. Здесь dir это каталог, куда платформа будет писать журнал: он подставляется в атрибут location. Если dir не передан, в тексте стоит каталог-заглушка C:\1c_logs\tj, и ответ просит подставить свой путь.

В тексте один журнал с событиями из трёх списков выше и всеми свойствами записей. Для событий СУБД и SDBL в тексте стоит порог длительности value="30000". По документации платформы единица свойства duration в фильтре 100 мкс, без оговорок по событиям (руководство администратора 8.3.27, раздел 6.14.6.5), поэтому этот порог равен 3 с. События блокировок и исключений попадают в журнал без порога.

  1. Вызовите suggest_logcfg с каталогом, куда писать журнал: {"action": "suggest_logcfg", "dir": "C:\\tj"}.
  2. Сохраните текст из поля logcfg в файл logcfg.xml в каталоге conf сервера 1С. Если в пути есть символы вне ASCII, сохраните файл в UTF-8, ответ об этом напомнит.
  3. Когда в каталоге появятся записи, передайте тот же dir действиям parse, perf, locks и errors.

Проверено на 32-битной платформе 8.3.27.2130 под Windows: каталог conf там C:\Program Files (x86)\1cv8\conf, а положенный или заменённый logcfg.xml платформа подхватила без перезапуска сервера 1С и сама создала каталог из location.

Что ответ говорит о пропусках

У каждого счётчика ответа, который считает непрочитанные, пропущенные или отброшенные файлы и записи, есть записка в поле notes, когда он не ноль. Записки называют числа: например, сколько файлов не разбиралось, сколько прочитано не до конца из-за ошибки чтения, сколько оказалось пустыми, сколько записей прочитано и сколько из них попало в окно since и until, сколько записей не разобралось и сколько записей длиннее 8 МиБ отброшено целиком. Имена файлов в успешном ответе есть только в списке отказов files.refusals. Записка есть и о группах, не вошедших в top, и об обрезанных значениях. Отдельно ответ считает записи обычного формата с долей секунды из 4 знаков (four_digit_fraction_records), записи обычного формата с долей не из 4 и не из 6 знаков (odd_fraction_records: единица длительности у них не установлена, и длительность прочитана в микросекундах без пересчёта) и файлы, где записи с долей из 4 знаков стоят рядом с записями с другой долей (mixed_fraction_files). Запись с длительностью вне допустимого диапазона, отрицательной или больше того, что сервер может представить, идёт в счётчик duration_overflows, её длительность считается нулевой, и записка называет число таких записей.

Отказ с признаком ошибки приходит, когда разбирать нечего: каталог dir не передан, не существует, не каталог или не читается; в нём нет ни одного подкаталога вида <процесс>_<pid>; не прочитано ни одной записи, а файлы или подкаталоги процессов при этом отклонены, прочитаны не до конца или не дали ни одной записи. В последнем случае отказ называет с причинами первые 10 из них, не считая вторых имён уже открытых файлов, а остальные только числом. Пустой каталог, подкаталоги процессов без файлов журнала и журнал из одних пустых файлов отказом не считаются: ответ приходит с запиской. Ответ больше 1 МиБ не обрезается, а отклоняется с советом уменьшить top или сузить окно. Вызов, прерванный отменой или по таймауту, тоже получает отказ, а не частичный свод.

Требует: действующую подписку уровня Расширенной (v2.41.0). Выгрузка конфигурации инструменту не нужна.

analyze_subsystems

Открытая

Анализ топологии подсистем

Анализ распределения объектов конфигурации 1С по подсистемам. Помогает при аудите архитектуры: найти неучтённые объекты, понять к каким подсистемам относится объект, выявить дублирование между ветвями дерева подсистем. Вид анализа задаётся параметром action:

  • orphans: объекты вне подсистем. В разбор берётся весь набор видов верхнего уровня, пригодных для состава подсистемы, и прикладные (справочники, документы, регистры, отчёты, обработки, планы, бизнес-процессы, задачи, перечисления), и служебные (константы, общие модули, общие формы, команды, роли, HTTP и web сервисы, пакеты XDTO, регламентные задания, подписки на события и другие). Не берутся сам контейнер, то есть подсистемы, и языки: язык в состав подсистемы не входит.
  • containing: список подсистем, содержащих указанный объект.
  • intersections: объекты, входящие сразу в несколько подсистем.

Параметры:

  • action (обязательный): вид анализа, orphans, containing или intersections
  • object (для action: "containing"): имя объекта, полное (Документ.РеализацияТоваровУслуг) или короткое (РеализацияТоваровУслуг). При коротком неоднозначном имени возвращаются все совпадения
  • object_type (необязательный): уточнение вида метаданных при неоднозначном коротком имени, Справочник, Документ, РегистрСведений и т.п. или английский эквивалент (Catalog, Document, InformationRegister)
  • cross_branch_only (необязательный, для action: "intersections"): при true остаются только объекты, входящие в подсистемы из разных корневых веток дерева

В Расширенной и Профессиональной версиях дерево подсистем берётся из выгрузки конфигурации, когда выгрузка у базы готова. База без выгрузки обслуживается через живой запрос к базе, тем же путём, что и в Открытой версии.

reload_dump

Открытая

Перечитать выгрузку конфигурации

Перечитывает локальную выгрузку конфигурации (DumpConfigToFiles) без перезапуска сервера. Вызывается после того, как выгрузка сделана заново. В Расширенной и Профессиональной версиях то же перечитывание умеет делать периодический цикл за флагом --local-dump-resync-interval. Сам инструмент 1С не запускает и выгрузку не создаёт: он только перечитывает то, что уже лежит на диске.

В отличие от Открытой версии, где база одна и параметров у инструмента нет, в Расширенной он принимает необязательный параметр base.

Параметры:

  • base (необязательный): имя базы, выгрузку которой нужно перечитать. Без него перечитывается одна база, та, что по умолчанию, а не все подключённые. За один вызов перечитывается ровно одна база. Список имён и отметку базы по умолчанию даёт system с action: "list_bases". Базу, которую перечитать нельзя, ответ называет по имени вместе с причиной, а не пропускает молча.

Что устаревает без вызова. Если задан --local-dump-resync-interval, то же перечитывание выполняет и периодический цикл:

  • Модуль, добавленный или переименованный после запуска сервера, не находится ни в одном режиме code_search с action: "text".
  • Изменения внутри уже существующего модуля (добавлена процедура, переписано тело) не видит режим smart: он отвечает по тексту, снятому при построении индекса. Удалённый модуль smart всё ещё считает в общем числе совпадений.
  • code_read с action: "module_code" и action: "resolve" ищут модуль по списку из индекса, поэтому новый модуль они тоже не найдут до перечитывания. Текст уже существующего модуля они читают с диска, и он всегда свежий.

Кому вызов не нужен: режимы regex и exact перечитывают файлы на каждом запросе, поэтому по изменённым и по удалённым модулям отвечают верно и без него. analyze_subsystems и code_read с action: "form_structure" или action: "object_structure" открывают каталог выгрузки заново на каждом вызове и всегда актуальны.

Чего вызов не обновляет: векторный индекс режимов semantic и hybrid строится один раз при запуске сервера, перечитывание выгрузки его не пересобирает.

После перечитывания, которое нашло изменения на диске, векторная половина отвечает осторожнее. Границы строк у её кусков посчитаны до перечитывания, поэтому попадание отдаётся только там, где исходный текст по-прежнему объявляет ту же процедуру на той строке, с которой кусок начинается; кусок без имени, то есть код вне процедур и функций, не отдаётся вовсе. Режим hybrid при этом не замолкает: его половина BM25 не затронута, и он съезжает к своим текстовым результатам. Перечитывание, которое изменений не нашло, ничего не помечает и поведение не меняет. Полностью выдача восстанавливается после перезапуска сервера.

Сверка идёт только по файлам .bsl (относительный путь, время изменения, размер). Правка, не затронувшая ни одного .bsl (например, только состав формы или только XML), сигнатуру не меняет: перестроение не выполняется и об этом сообщается явно. Потери здесь нет, такие данные читаются из каталога напрямую и уже актуальны.

Вызывать его перед каждым чтением выгрузки не нужно.

Инструмент зарегистрирован всегда, в том числе без подписки, потому что он бесплатен в Открытой версии. Если база запущена без --dump, вызов не молчит: он отвечает, что для этой базы каталог выгрузки не задан и перечитывать нечего.

Расширения .cfe

Расширенная

Поиск и чтение кода расширений

Расширенная версия автоматически обнаруживает установленные расширения конфигурации (.cfe) и включает их модули в code_search и code_read. Результаты расширений помечаются префиксом [Расш].

При работе через транспорт опроса (polling) расширения .cfe также подхватываются автоматически для баз, которые отдают их список; базы без такой возможности работают как раньше, без расширений (v2.22.0).

Бюджет загрузки .cfe в polling-режиме настраивается флагом --polling-extension-timeout (по умолчанию 60с). Он отделён от --poll-timeout, поэтому крупный набор расширений не обрывается преждевременно (v2.23.0).

Ограничение (платформа 8.3.27, режим опроса): чтение исходного текста модулей расширения в реальном времени в режиме опроса на 8.3.27 недоступно и выполняется по выгрузке конфигурации. Запустите сервер с флагом --dump и читайте модуль расширения через extension_module. Остальные возможности анализа расширений в режиме опроса доступны в полном объёме (v2.29.0).