Синхронизация данных с периферийными узлами через механизм УРБД (Управление распределенными информационными базами) в платформе 1С 7.7 — надежный, но чувствительный к объему изменений инструмент. Нередко системные администраторы и программисты сталкиваются с ситуацией, когда после регламентных процедур в центральной базе (таких как тестирование, исправление и пересчет итогов) для филиала формируется пакет обмена колоссального размера (сотни мегабайт распакованных данных формата .dat). Попытка загрузить такой пакет в периферийную базу приводит к видимому зависанию: процесс загрузки длится десятки часов, активность в журнале регистрации замирает, а пользователи не могут приступить к работе.
Разберем детально причины такого поведения платформы, проанализируем, действительно ли процесс завис, и рассмотрим способы выхода из критической ситуации.
В штатном режиме в файл обмена попадают только те объекты, которые были изменены с момента последней подтвержденной выгрузки. Однако после регламентных процедур объем пакета может резко возрасти по нескольким причинам:
Главная ошибка при долгой загрузке — аварийное прерывание процесса через диспетчер задач или перезагрузку сервера. Это приводит к повреждению таблиц, необходимости повторной загрузки с нуля и потере драгоценного времени.
Для объективной оценки состояния процесса выполним следующие действия:
ConfStat или утилитами мониторинга процессов операционной системы). Проверим счетчики дискового ввода-вывода (I/O Read/Write) для процесса 1cv7s.exe (или 1cv7.exe). Если процесс потребляет процессорное время и генерирует дисковые операции чтения/записи, загрузка продолжается штатно, и ее нельзя прерывать.Механизм загрузки УРБД в 1С 7.7 считывает строки из файла обмена последовательно и построчно модифицирует базу. Для ускорения этого процесса применим следующие технические оптимизации:
SYSLOG в каталоге базы данных. Платформа создаст чистый каталог, а накладные расходы на дисковые операции сократятся в разы.Simple (упрощенная), чтобы журнал транзакций не разрастался до пределов дискового пространства, и выделим достаточный объем памяти под базу tempdb.Если загрузка была прервана аппаратным сбоем, пакет поврежден или время ожидания недопустимо велико, штатный механизм можно скорректировать вручную. Для этого разберем внутреннюю структуру служебных таблиц УРБД:
1SDBSET — список узлов распределенной базы. Содержит идентификаторы баз, признак текущей и вышестоящей базы, а также номера отправленных и ожидаемых к приему сообщений.1SUPDTS — таблица зарегистрированных изменений. В ней фиксируются ссылки на объекты (документы, справочники, константы), ожидающие выгрузки в конкретный филиал.1SDWNLDS — журнал загруженных файлов и подтверждений.1SSYSTEM — таблица, содержащая префикс текущей информационной базы и системные флаги.Если требуется пропустить проблемный пакет или повторно синхронизировать нумерацию сообщений без потери целостности, выполним следующий алгоритм:
1SDBSET периферийной базы скорректируем поле входящего номера пакета, чтобы платформа приняла следующий корректный файл.1SUPDTS найдем и очистим строки, где получателем значится проблемный узел, если требуется отменить повторную генерацию тяжелого пакета.Если пакет испорчен или загрузка занимает более суток (что парализует работу предприятия), наиболее быстрым выходом часто становится создание периферийной базы заново на основе актуальной копии центральной:
1SDBSET: статус центральной базы переведем во «внешняя», а статус периферийной базы установим как «текущая». Удалим записи остальных филиалов.1SSYSTEM пропишем уникальный префикс периферийной базы.1SUPDTS и 1SDWNLDS.После этой процедуры периферийная база сразу содержит все актуальные данные центра и готова к штатному приему и отправке небольших ежедневных пакетов без многочасовых простоев.