Почему в каталоге SQL-версии 1С 7.7 появляются файлы DBF и CDX?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При администрировании серверной версии 1С:Предприятия 7.7 (MS SQL Server) системные администраторы и разработчики часто сталкиваются с ситуацией, когда каталог информационной базы заполняется большим количеством файлов с маской T*.dbf и T*.cdx (например, T6335.dbf). На первый взгляд это вызывает недоумение, так как все основные таблицы данных должны храниться внутри реляционной СУБД, а не в файлах DBF. Проанализируем, почему возникают эти файлы, какую роль они играют и как правильно настроить систему, чтобы избежать засорения дискового пространства.

Природа файлов T*.dbf и T*.cdx в SQL-версии

Рассмотрим внутреннее устройство платформы 1С:Предприятие 7.7 для понимания происхождения данных файлов. В отличие от современных версий платформы, SQL-версия 1С 7.7 не является полностью «нативным» клиентом SQL-сервера. Она использует гибридную модель обработки данных:

  1. Работа встроенного механизма запросов: Когда в коде конфигурации выполняется стандартный объектный запрос СоздатьОбъект("Запрос"), платформа формирует выборку данных из SQL-сервера, но финальную обработку зачастую производит на стороне клиента. Группировки, сортировки, наложение сложных фильтров и вызов функций модулей выполняются локальным движком. Для хранения промежуточных результатов 1С создает локальные временные таблицы в формате DBF с сопутствующими индексными файлами CDX. Имя такого файла всегда начинается с латинской буквы T (от англ. Temporary), за которой следует числовой идентификатор.
  2. Пересчет итогов и формирование стандартных отчетов: Подобные временные таблицы создаются при расчете итогов регистров, бухгалтерских итогов, а также при выполнении сложных регламентных расчетов.
  3. Пользовательские внешние обработки: Разработчики могут программно создавать собственные DBF-файлы для обмена или кэширования через объект СоздатьОбъект("XBase").

В штатном режиме работы при успешном завершении запроса или закрытии сеанса пользователя платформа автоматически удаляет все созданные временные файлы. Однако при аварийных сбоях этот процесс нарушается.

Почему временные файлы накапливаются в каталоге базы

Выясним основные причины, из-за которых временные файлы не удаляются и остаются лежать именно в корневой папке базы данных:

  1. Аварийное завершение сеансов: Если процесс 1cv7s.exe завершается некорректно (снятие задачи пользователем через Диспетчер задач, обрыв RDP-сессии с последующим сбросом процесса, падение платформы с ошибкой в EXCPT.TXT или перезагрузка сервера), платформа просто не успевает выполнить процедуру очистки временных файлов. В результате файлы T*.dbf остаются на диске навсегда.
  2. Не настроен рабочий каталог пользователя: По умолчанию временные файлы должны создаваться либо в каталоге пользователя, либо в системной папке временных файлов. Если в Конфигураторе у учетной записи пользователя не задан индивидуальный каталог, 1С 7.7 использует корневой каталог информационной базы. В итоге файлы всех пользователей сваливаются в общую папку базы.
  3. Ограничения прав доступа к переменным TEMP/TMP: Если системные переменные среды %TEMP% и %TMP% указывают на пути, недоступные для записи учетной записи пользователя, либо пути содержат кириллические символы, спецсимволы или пробелы, платформа сбрасывает временные файлы в рабочий каталог по умолчанию.

Пошаговый порядок настройки и решения проблемы

Разберем по шагам, как привести информационную базу в порядок и исключить дальнейшее накопление служебного мусора.

Шаг 1. Безопасное удаление накопившихся файлов

В SQL-версии все учетные данные хранятся внутри базы данных MS SQL Server. В каталоге информационной базы на диске должны находиться только файл структуры метаданных 1Cv7.MD, файл словаря базы данных 1Cv7.DD, конфигурационный файл 1cv7.def, системные списки пользователей и папки учетных записей. Все файлы с расширениями .dbf и .cdx, начинающиеся на букву T, являются брошенными временными файлами и могут быть удалены.

Для безопасного удаления выполним следующие действия:

  1. Убедимся, что все пользователи завершили работу в 1С (активные процессы 1cv7s.exe отсутствуют).
  2. Создадим резервную копию каталога базы данных.
  3. Удалим из каталога базы все файлы по маске T*.dbf и T*.cdx вручную или с помощью скрипта.

Шаг 2. Настройка индивидуальных каталогов пользователей

Чтобы временные файлы не засоряли корень информационной базы при возможных сбоях, изолируем рабочие каталоги каждого пользователя:

  1. Откроем Конфигуратор и перейдем в меню Администрирование > Пользователи.
  2. Для каждого пользователя откроем свойства и перейдем на вкладку Дополнительно.
  3. В поле Каталог пользователя укажем относительный путь (например, UsrDef\ИмяПользователя) или локальный каталог на терминальном сервере.
  4. Сохраним изменения. При запуске 1С создаст эту папку, и все временные таблицы конкретного сеанса будут формироваться исключительно внутри нее.

Шаг 3. Корректировка системных путей временных файлов

Проанализируем переменные окружения на сервере или рабочих станциях. Для надежной работы 1С 7.7 рекомендуется настроить пути к временным папкам так, чтобы они были короткими, располагались на локальном диске и не содержали пробелов и кириллицы (например, C:\Temp). Убедимся, что группа «Пользователи» имеет полные права на чтение, запись и удаление файлов в этой директории.

Оптимизация работы с запросами в 1С 7.7 SQL

Для полного исключения накладных расходов на создание DBF-файлов при обработке больших объемов данных рассмотрим использование прямых запросов к СУБД. В стандартном коде запрос выполняется через встроенный движок:


Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = 
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Номенклатура = Регистр.ОстаткиТоваров.Номенклатура;
|Количество = Регистр.ОстаткиТоваров.Количество;
|Функция КонОст = КонОст(Количество);
|Группировка Номенклатура без групп;
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда
    Пока Запрос.Группировка(1) = 1 Цикл
        // Обработка данных выборки
    КонецЦикла;
КонецЕсли;

При таком подходе на диске формируется временный DBF-файл. При переходе на прямые SQL-запросы (с использованием внешних компонент, таких как 1S++) вычисления, фильтрация и сортировка происходят полностью в оперативной памяти и временных таблицах самого SQL-сервера, что кардинально повышает быстродействие отчетов и устраняет генерацию файлов T*.dbf на диске.

← На главную