При работе с хранилищем конфигурации 1С разработчики нередко сталкиваются с ситуацией, когда операции получения или помещения объектов (особенно требующих реструктуризации) начинают сильно зависать. При этом задержка происходит еще на этапе формирования снимков метаданных и сравнения ревизий, а не при применении изменений к информационной базе. Проанализируем, почему возникает такая проблема и как восстановить нормальную скорость работы.
Хранилище конфигурации 1С по своей сути представляет собой специфическую файловую базу данных (файл 1Cv8.1cd). Все операции по вычислению различий между версиями, сборке снимков метаданных и сравнению объектов выполняются синхронно на стороне клиента — то есть на рабочем ПК программиста. Выделим ключевые факторы, из-за которых происходят задержки:
cfgrepo): Помимо обычного пользовательского кэша платформы, 1С создает отдельную локальную базу хранилища. При накоплении ошибок или большом объеме метаданных локальный кэш начинает «тормозить» операции сравнения.\\server\share\repo), протокол SMB совершает тысячи мелких синхронных файловых операций и блокировок, что приводит к экспоненциальному падению скорости при малейших сетевых задержках.%TEMP%, из-за чего файловые операции блокируются на доли секунд, суммарно создавая огромные паузы.Обычная очистка кэша пользовательского сеанса 1С не затрагивает специализированную базу хранилища cfgrepo. Если операция получения данных зависает, необходимо выполнить глубокую очистку кэша хранилища.
Для автоматической очистки можно запустить конфигуратор через командную строку с соответствующим ключом:
"C:\Program Files\1cv8\8.3.23.1878\bin\1cv8.exe" DESIGNER /F "D:\Bases\MyBase" /ConfigurationRepositoryClearCache
Также можно выполнить процедуру вручную. Разберем порядок действий:
%LOCALAPPDATA%\1C\1Cv8.cfgrepo.cfgrepo. Совет: Если необходимо сохранить историю ранее введенных комментариев к помещаемым объектам, внутри cfgrepo можно оставить файл comments, удалив все остальные служебные файлы.Размещение хранилища в обычной сетевой папке — главная причина нестабильной работы при коллективной разработке. Для исключения сетевых задержек протокола SMB переведем хранилище на работу через службу crserver (сервер хранилища конфигурации 1С).
Запуск сервиса выполняется с помощью утилиты crserver.exe. Рассмотрим пример команды для запуска сервера хранилища на определенном порту:
crserver.exe -d "C:\RepositoryData" -port 1542
После этого все разработчики подключаются к хранилищу не через файловый путь, а по протоколу TCP:
tcp://server_name:1542/RepoName
Это полностью избавляет клиентские станции от синхронных файловых блокировок по сети и переносит основной обмен на оптимизированный протокол 1С.
На рабочих станциях программистов и на сервере хранилища необходимо настроить исключения для фонового сканирования файловой системы. Проанализируем, какие пути следует добавить в исключения антивируса:
%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.%TEMP%.1cv8.exe, 1cv8c.exe и crserver.exe.Если оборудование у разработчиков одинаковое, но скорость работы разная, проанализируем сетевые параметры конкретных рабочих станций:
Если хранилище существует много лет и накапливает тысячи версий, построение графа изменений становится ресурсоемким. В этом случае выполним следующую процедуру:
.cf через меню Конфигурация -> Сохранить конфигурацию в файл..cf файла.Это полностью очистит балласт устаревших промежуточных версий и восстановит максимальное производительность при выполнении операций получения и помещения объектов.