Skip to content

v1.15.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 11:25
· 32 commits to main since this release

Главное в этой версии

Модули расширений можно отобрать в поиске. У search_code появился параметр namespace. Единственное его значение ext отбирает только модули, принадлежащие расширениям конфигурации, и сочетается с category и module, поэтому впервые можно спросить, например, про общие модули, которые лежат в расширениях. Раньше такого вопроса задать было нельзя: фильтр по типу метаданных достаёт модули и из конфигурации, и из расширений, а отобрать расширения целиком не позволял ни один параметр. Фильтр работает одинаково во всех трёх режимах поиска, включая модули расширений, загруженных из .cfe на живой базе. Значение, отличное от ext, теперь отклоняется с явным сообщением, а не молча возвращает пустой ответ, который читался бы как «в этой конфигурации нет расширений».

Один и тот же запрос возвращает один и тот же ответ. В режиме smart совпадения с равной оценкой расставлялись по внутренним номерам документов, а номера раздавались в том порядке, в каком документы доходили до сборщика индекса. Порядок этот менялся от сборки к сборке, поэтому один вопрос получал разные ответы, и разница ничем себя не выдавала: каждый ответ выглядел непротиворечиво, отличался он только от других ответов на тот же вопрос. Когда равных совпадений было больше, чем помещается в limit, от порядка зависело не только расположение строк, но и то, какие модули вообще попадут в ответ. Теперь порядок задан явно: сначала по убыванию оценки, затем по идентификатору модуля, который между сборками не меняется.

Модуль, который не открывается, больше не опрашивается заново на каждом обращении. Чтение модуля выжидает паузу и повторяет попытку один раз, и повтор нужен: на Windows файл модуля регулярно на мгновение занимают антивирус, облачная синхронизация или служба индексации. Не хватало другого конца: нигде не запоминалось, что пауза уже потрачена, поэтому она платилась заново на каждое обращение. В режимах regex и exact через чтение проходит каждый кандидат, поэтому один такой модуль замедлял просмотр всей выгрузки, а не одно обращение. Теперь отказ запоминается на время жизни поколения индекса и снимается перезагрузкой выгрузки. Нехватка файловых дескрипторов так не запоминается: это состояние процесса и машины, а не свойство файла.

Сноска о неполном ответе больше не называет причину, которой не знает. Она сообщала, что файлы изменились или удалены уже после того, как построен индекс. Установить это она не могла. Под неё попадает и модуль, к которому продукт отказался идти по символьной ссылке за пределы корня выгрузки, то есть защита от подложенной выгрузки, работающая как задумано. А просто изменившийся файл эту сноску породить вообще не может: он перечитывается и отдаётся. Покупателю сообщали, что его файл удалён, и отправляли перевыгружать всю конфигурацию. Теперь сноска сообщает единственное, что было установлено: получить содержимое этих модулей не удалось. Совет остался прежним, потому что он снимает состояние во всех случаях.

Изменение поведения, на которое стоит обратить внимание

В строке результата search_code больше нет оценки BM25. В режиме smart к заголовку каждого попадания дописывалось , score: 0.847. Больше не дописывается ни в одном режиме. Остальное в строке не тронуто: номер строки, «строка не определена» и «строк с совпадениями в модуле» на месте. Если ваш разбор ответа опирался на эту метку, его нужно поправить. Метка ставилась под условием «режим smart и оценка больше нуля», поэтому строка, попавшая в отрисовщик другим путём, несла ноль и рисовалась иначе, чем соседняя: один ответ мог содержать две разные раскладки строки. Ранжирование из ответа никуда не делось, оно выражено порядком строк, и этот порядок теперь устойчив.

Первый запуск после обновления пересоберёт индекс. Изменился состав индексируемого документа: в него добавлено пространство имён, по которому идёт новый фильтр. Старый кэш этого поля не содержит, поэтому переиспользовать его нельзя: иначе фильтр по пространству имён вернул бы пустой результат, который читается как «в этой конфигурации нет расширений». Пересборка выполняется один раз на каждую выгрузку, дальше запуск идёт как обычно.

Пока рядом остаётся более старая версия, пересборка может повторяться. Кэш индекса привязан к пути выгрузки, а не к версии программы. Если на одну и ту же выгрузку смотрят и эта версия, и версия ниже 1.15.0, каждая при своём запуске застаёт кэш, собранный по чужой версии схемы, и собирает заново. Повторные сборки прекращаются, когда обновлены все версии, работающие с этой выгрузкой.

Расширение 1С

Расширение в этой версии не менялось. Требуется по прежнему 0.4.7, и это та же самая сборка, что была приложена к v1.14.0: файл MCP_HTTPService.cfe в этом релизе побайтово совпадает с файлом из v1.14.0. Если у вас уже стоит 0.4.7, делать ничего не нужно.

Если расширение старее, обновите его той же командой, которой оно устанавливается: установщик сам снимет старую версию и загрузит новую.

mcp-1c --install "C:\путь\к\базе"

Для клиент-серверной базы добавьте --server и строку подключения вида сервер\база, а при необходимости --db-user и --db-password. Перед установкой закройте все сеансы 1С для этой базы, включая Конфигуратор.

Проверить, что обновление доехало:

curl http://сервер/база/hs/mcp-1c/version

Ожидаемый ответ: {"version":"0.4.7"}

Проверка контрольных сумм

К релизу приложен checksums.txt со строкой для каждого файла, включая расширение.

shasum -a 256 -c checksums.txt --ignore-missing

Full Changelog: v1.14.0...v1.15.0

Установка расширения 1С через Конфигуратор

Для пользователей, у которых нет доступа к командной строке на сервере 1С
(например, при аренде 1С через RDP):

  1. Скачайте MCP_HTTPService.cfe (SHA256 в checksums.txt).
  2. В Конфигураторе: Конфигурация -> Расширения конфигурации -> Добавить -> «Добавить из файла» -> выбрать .cfe.
  3. Убедитесь, что стоит флаг «Активно». Нажмите F7 (Обновить конфигурацию базы данных).

Расширение объявляет режим совместимости Version8_3_14, поэтому загружается
на 1С:Предприятие 8.3.14 и выше.
На базах с включёнными профилями безопасности (8.3.21+) перед загрузкой
может потребоваться снять «Защиту от опасных действий» в свойствах расширения.