При работе с распределенными информационными базами (УРБД) в 1С 7.7 администраторы часто сталкиваются с ситуацией, когда масштабные изменения в структуре справочника «Номенклатура» (например, добавление реквизита и заполнение его для 50 000+ элементов) приводят к фактической остановке работы периферийных точек. Стандартная загрузка через файл обмена может длиться десятки часов или зависать на этапе реструктуризации файлов DBF. Рассмотрим подробно, как выйти из этой ситуации и запустить работу системы в кратчайшие сроки.
Проанализируем ситуацию: в центральной базе (SQL) проведена реструктуризация, добавлен новый ссылочный реквизит, и данные обновлены для всего справочника. При выгрузке в периферийную базу (DBF) система пытается одновременно обновить структуру таблиц и записать огромный массив данных. Основные «тормоза» возникают из-за:
.cdx растет лавинообразно, замедляя запись._1supdts в центре заставляет систему постоянно обращаться к диску при формировании и приеме пакетов.Если стандартный обмен завис, наиболее эффективным решением будет подготовка «эталонной» периферийной базы и копирование её файлов на остальные точки. Разберем по шагам этот алгоритм:
1cv7.md и 1cv7.dd.SC*.dbf (например, SC84.dbf) и соответствующий ему индексный файл SC*.cdx.1SBlob.dbf, где хранятся эти значения.Внимание: После ручной подмены файлов необходимо «обмануть» систему обмена, чтобы она не пыталась загрузить эти же данные повторно через стандартный механизм.
Чтобы исключить повторную передачу огромного справочника после того, как вы обновили точки вручную, нужно очистить таблицу регистрации изменений _1supdts в центральной SQL-базе. Рассмотрим, как это сделать с помощью SQL-запроса через Query Analyzer или аналогичные инструменты.
Выясним внутренний идентификатор типа справочника «Номенклатура» (его можно посмотреть в файле 1cv7.dd). Допустим, это идентификатор типа в 36-ричном виде. В SQL таблице _1supdts поле TYPEID может быть представлено в виде целого числа (int). Выполним следующие действия:
-- Рекомендуется сначала сохранить данные в резервную таблицу
SELECT * INTO Nomenclature_Backup_2023
FROM _1supdts
WHERE typeid = [ID_вашего_справочника];
-- Удаление регистрации изменений для справочника Номенклатура
DELETE FROM _1supdts
WHERE typeid = [ID_вашего_справочника];
-- Также полезно очистить регистрацию изменений самой конфигурации (MD),
-- если вы обновили её на точках вручную
DELETE FROM _1supdts WHERE typeid = 0 AND objid = 0;
Проанализируем ситуацию после выполнения запроса: теперь при следующем обмене центральная база «считает», что номенклатура на точках уже актуальна, и файл обмена будет иметь минимальный размер.
Часто после форсированной загрузки пользователи жалуются, что в справочнике видна только одна папка или элементы отображаются некорректно. Это происходит из-за нарушения связей ParentID (родительских групп). Рассмотрим, как это исправить:
Записать(). Это создаст новые записи в таблице регистрации изменений именно для групп.Если вы все же решили проводить реструктуризацию штатно, воспользуйтесь следующими рекомендациями для ускорения процесса:
Сортировка или Отбор по реквизиту, но по факту поиск по нему не используется — снимите эти признаки. Это значительно уменьшит размер .cdx файла и ускорит загрузку.INSERT INTO ... SELECT. Это в десятки раз быстрее штатной реструктуризации 1С.Таким образом, комбинируя метод ручной подмены файлов на DBF-точках и адресную очистку таблицы _1supdts в SQL-центре, можно восстановить работоспособность распределенной системы 1С 7.7 всего за пару часов, вместо многодневного ожидания завершения штатных процессов.