В практике администраторов и разработчиков 1С иногда возникают ситуации, требующие проведения технической экспертизы. Например, при подозрении на несанкционированное копирование конфигурации или при необходимости восстановить хронологию разработки. Одной из самых сложных задач в таких случаях является определение точной даты создания конкретного объекта метаданных (справочника, документа или регистра), так как стандартный «Конфигуратор» не хранит историю создания объектов в явном виде. Разберем доступные методы решения этой задачи, начиная от анализа идентификаторов и заканчивая низкоуровневым исследованием базы данных.
Первым делом проанализируем внутренние идентификаторы объектов. В платформе 1С:Предприятие каждый объект метаданных обладает уникальным идентификатором — UUID (Universally Unique Identifier). Согласно международному стандарту RFC 4122, существует несколько версий формирования таких идентификаторов. Нас интересует версия 1 (Time-based), которая базируется на текущем времени и MAC-адресе сетевой карты устройства.
Выясним, как определить версию UUID. Для этого нам необходимо выгрузить конфигурацию в файлы через меню «Конфигурация — Выгрузить конфигурацию в файлы». В полученных XML-файлах мы найдем атрибут uuid. Рассмотрим структуру этого идентификатора. Если 13-й символ в строке — это единица, значит, перед нами UUID первой версии, в котором зашифрована дата создания.
Разберем пример: идентификатор выглядит как xxxxxxxx-xxxx-1xxx-xxxx-xxxxxxxxxxxx. В этом случае мы можем извлечь временную метку (timestamp), которая представляет собой количество 100-наносекундных интервалов, прошедших с момента перехода на Григорианский календарь (15 октября 1582 года). Существуют специализированные утилиты и скрипты, позволяющие конвертировать эти данные в привычную дату и время с точностью до миллисекунд.
Важный нюанс: если объект не создавался с нуля, а был скопирован внутри конфигурации или перенесен через буфер обмена, его UUID может обновиться, зафиксировав время копирования, либо сохранить старый идентификатор в зависимости от способа переноса. Это необходимо учитывать при проведении экспертизы.
Если информационная база работает в клиент-серверном варианте, мы можем получить крайне достоверную информацию напрямую из системного каталога СУБД. При создании нового объекта метаданных (например, справочника) 1С создает соответствующую физическую таблицу в базе данных SQL.
Посмотрим на алгоритм действий. Сначала нам нужно определить внутреннее имя таблицы в СУБД. Это можно сделать с помощью функции ПолучитьСтруктуруХраненияБазыДанных(). Предположим, нашему справочнику «Контрагенты» соответствует таблица _Reference99. Теперь проанализируем системную таблицу sys.objects в SQL Server, где хранится дата создания каждого объекта базы данных.
Рассмотрим пример SQL-запроса, который поможет нам извлечь нужные сведения:
SELECT
name AS TableName,
create_date AS DateCreated,
modify_date AS DateModified
FROM
sys.objects
WHERE
name = '_Reference99' AND type = 'U';
Дата в колонке create_date будет максимально близка к моменту первого сохранения конфигурации (нажатия клавиши F7), когда в базе была создана физическая структура для этого объекта. Этот метод считается одним из самых надежных, при условии, что база данных не подвергалась полной перегрузке через файл .dt, так как при загрузке из .dt все таблицы пересоздаются заново, и оригинальная дата создания будет утеряна.
Проанализируем современный подход к разработке. Если команда разработчиков использует 1C:Enterprise Development Tools (EDT), задача по поиску даты создания объекта упрощается многократно. EDT тесно интегрирована с системой контроля версий Git.
В этом случае нам достаточно изучить историю коммитов (фиксаций изменений). Каждый объект в Git представлен набором файлов. Выясним дату самого первого коммита, в котором появился файл, описывающий данный объект метаданных. В истории будет зафиксирована не только точная дата и время, но и автор изменений. Если злоумышленник скопировал проект целиком вместе со служебной папкой .git, эксперт сможет восстановить полную историю создания каждого модуля и справочника.
Рассмотрим ситуацию, когда прямого доступа к SQL или Git нет. Вся конфигурация 1С хранится в системной таблице Config. Хотя там нет явного поля с датой, записи в нее добавляются последовательно. Проанализируем порядок размещения бинарных блоков данных. Сравнивая идентификаторы записей (строк) различных объектов, можно выстроить их относительную хронологию: какой объект был добавлен в дерево метаданных раньше, а какой — позже.
Также стоит проверить локальный кэш разработчика. Если использовалось «Хранилище конфигурации», в профиле пользователя ОС (папка %AppData%\1C\1cv8\...\ConfigSave) могут сохраняться временные копии объектов. Проанализируем атрибуты файлов в этой папке — дата их создания или последнего изменения в файловой системе часто совпадает с периодом активной работы над соответствующими объектами в «Конфигураторе».
Подводя итог, можно сказать, что гарантированно подтвердить дату создания объекта только средствами «Конфигуратора» невозможно, однако комплексный технический анализ дает высокую точность. Наиболее эффективными шагами будут:
Config для выстраивания относительной хронологии.Совокупность этих методов позволяет с высокой долей вероятности доказать время появления тех или иных объектов в конфигурации 1С:Предприятие.