Если вкратце, то компонента позволяет блокировать запись в файловую базу, после чего можно делать безопасное копирование файла 1cv8.1CD не выгоняя пользователей из базы. Блокировать запись данных можно как для текущей базы, в которой загружена компонента, так и для сторонней базы. Принцип работы основан на блокировке файла 1cv8.1CL. Компонента написана по мотивам публикации infostart.ru/public/319947/ (автору публикации большое спасибо), там же более подробно описано почему нельзя просто так копировать файл 1cv8.1CD (копия часто может оказаться поврежденной). Захотелось сделать что то подобное, но более гибкое, что бы пользователи и разработчики прикладных решений, сами могли выбирать куда копировать файл и какое имя ему давать.
Принцип работы схож с приложением представленным в выше описанной публикации. Компонента блокирует файл 1cv8.1CL, ожидая пока будет снята предыдущая блокировка на запись. После выполнения блокировки можно копировать файл 1cv8.1CD для своих нужд. Если в процессе копирования, платформа, или другая программа, захочет что-то записать в базу (начать транзакцию), то ей придется дождаться завершения снятия блокировки внешней компонентой. Т.к. компонента блокирует базу только на запись, то др. процессы смогут свободно читать из файла базы любую информацию, т.е. пользователи смогут формировать отчеты, открывать формы документов и т.д., не замечая ни какой блокировки. Если же решат провести документ или что то записать, то 1С:Предприятие зависнет ожидая своей очереди на запись. После копирования необходимо обязательно снять блокировку, после чего все процессы которые стояли в очереди на запись, смогут записать свои данные. Возможность блокировки файла 1cv8.1CL, как я понял, является не документированной, поэтому пользоваться данной внешней компонентой и представленными в публикации обработками, только на свой страх и риск. Автор не несет ответственности, за повреждение вашей базы, тем более, что она может быть поврежденной еще до использования данной разработки.
Внешняя компонента содержит всего 2 метода:
ЗаблокироватьИнформационнуюБазу/LockInfoBase и РазблокироватьИнформационнуюБазу/UnlockInfoBase. В качестве единственного параметра нужно передать полное имя каталога файловой базы. Также есть свойство Версия/Version, для контроля используемой версии. В публикации представлены обработки для обычного и управляемого приложения, демонстрирующие подключение и работу внешней компоненты. Данные обработки является готовым, упрощенным, решением для пользователей файловых баз, которые могут просто скопировать файл 1cv8.1CD или же получить готовую выгрузку базы в виде .dt файла. Разработчик же, в свою очередь, на базе данной компоненты может сделать, к примеру, подсистему или регламентное задание по резервному копированию. Компонента и данные обработки тестировалась и успешно использовалась, на платформе 8.3.10.2650, но должны так же работать на любых версиях платформы работающих под управлением Windows x86/x64 и поддерживающих технологию внешних компонент NativAPI. Поддержка платформы Linux отсутствует. Все сделанные, представленными обработками, копии файлов 1cv8.1CD, были успешно выгружены в .dt, что в какой-то степени подтверждает, что копии файловых баз не были повреждены при копировании. Компонента написана на Delphi. Исходники не предоставляются.