В работе с 1С:Предприятие часто возникает необходимость узнать точную дату создания документа — не ту, что указана в поле «Дата», а момент его первого сохранения в базе. Эта информация критична для аудита, восстановления истории изменений или разрешения конфликтов версий. Проблема в том, что стандартный интерфейс 1С редко показывает эту дату напрямую: поле «Дата» отражает лишь бизнес-дату документа, а не техническую метку времени его создания.
В этой статье мы разберём 5 рабочих способов определения даты создания документа — от простых (через журнал документов) до продвинутых (SQL-запросы и программный код). Методы проверены на типовых конфигурациях 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11 и 1С:Зарплата и управление персоналом 3.1, но применимы и к другим решениям на платформе 1С:Предприятие 8.3. Особое внимание уделим нюансам, когда дата создания может отличаться от даты проведения на несколько дней или даже месяцев — это типичная ситуация при миграции данных или ретроспективном вводе документов.
1. Стандартный способ: журнал документов и история изменений
Самый доступный метод — использовать встроенные инструменты 1С. Он не требует прав администратора и работает даже в тонком клиенте.
Откройте журнал документов нужного типа (например, «Реализация товаров и услуг»). Найдите интересующий документ и:
- 📅 Кликните правой кнопкой по документу → выберите «История изменений». В открывшемся окне будет колонка «Дата изменения», где первая запись соответствует дате создания.
- 🔍 Если колонки «Дата изменения» нет, нажмите
Ещё → Настроить списоки добавьте её вручную. - ⚙️ В некоторых конфигурациях (например, 1С:ERP) история изменений может быть отключена — тогда этот метод не сработает.
Ограничение способа: история изменений хранится не всегда. Если в настройках базы отключён аудит или документ создавался до его включения, данные могут отсутствовать. Также в истории фиксируются только изменения полей, а не само событие создания.
2. Через конфигуратор: системные поля таблиц базы данных
Этот метод точнее предыдущего, но требует доступа к конфигуратору с правами администратора. Мы будем анализировать системные поля таблиц СУБД, где 1С хранит метаданные документов.
Инструкция:
- Откройте базу в режиме
Конфигуратор(запуск с удержаниемShift). - Перейдите в
Администрирование → Поддержка и обслуживание → Регламентные операции. - Выберите «Тестирование и исправление» → нажмите «Выполнить».
- После завершения операции откройте
Файл → Открыть SQL-запрос(или используйте внешние инструменты вроде SQL Server Management Studio для MS SQL).
Выполните запрос к системной таблице (пример для документа «Поступление товаров»):
SELECT
T.Родитель AS DocumentID,
T.ДатаСоздания AS CreationDate
FROM
_Document16 AS T -- _Document{НомерТипа} для вашего типа документа
WHERE
T.Ссылка = '0x{ИдентификаторДокумента}' -- замените на реальный ID
Чтобы узнать НомерТипа и ИдентификаторДокумента:
- 🔍 В конфигураторе откройте
Метаданные → Документы, найдите нужный тип и посмотрите его номер в свойствах. - 📋 Идентификатор ссылки можно скопировать из адресной строки при открытии документа в пользовательском режиме (параметр
ref=).
Если вы работаете с PostgreSQL, замените 0x{Идентификатор} на формат UUID без префикса. В MS SQL идентификаторы хранятся в двоичном виде с префиксом 0x
⚠️ Внимание: Структура системных таблиц может отличаться в разных версиях платформы. После обновления 1С до 8.3.20+ некоторые поля были переименованы. Всегда проверяйте актуальные имена колонок через SELECT TOP 1 * FROM _Document{НомерТипа}.
3. Программный метод: использование встроенного языка 1С
Для автоматизации или массового анализа документов подходит скрипт на встроенном языке 1С. Этот способ универсален и работает в любых конфигурациях.
Пример кода для получения даты создания документа по ссылке:
Процедура ПолучитьДатуСозданияДокумента(СсылкаНаДокумент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИсторияДанных.ДатаИзменения КАК ДатаСоздания
|ИЗ
| РегистрСведений.ИсторияДанных КАК ИсторияДанных
|ГДЕ
| ИсторияДанных.Ссылка = &Ссылка
|УПОРЯДОЧИТЬ ПО
| ИсторияДанных.ДатаИзменения ВОЗРАСТАНИЮ
|ИНДЕКСИРОВАТЬ ПО
| ДатаИзменения";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаДокумент);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
ПерваяЗапись = Результат.Выбрать().Следующий();
Сообщить("Дата создания документа: " + ПерваяЗапись.ДатаСоздания);
Иначе
Сообщить("История изменений отсутствует!");
КонецЕсли;
КонецПроцедуры
Как использовать:
- 📝 Скопируйте код в модуль любой формы или обработки.
- 🔗 Передайте в процедуру ссылку на документ (например,
Документы.ПоступлениеТоваров.НайтиПоНомеру("ПТ-000123")). - 📅 Результат будет выведен в сообщении или может быть сохранён в переменную.
Альтернативный вариант — использовать ПолноеИмяОбъекта() для получения метаданных, но он менее надёжен, так как зависит от настроек конфигурации.
Проверьте права на чтение регистра сведений "ИсторияДанных"
Убедитесь, что аудит изменений включён в настройках базы
Сохраните резервную копию перед массовыми операциями
Тестируйте код на копии рабочей базы-->
4. Анализ логов транзакций (для опытных пользователей)
Если документ был создан давно и его история стёрта, остаётся анализировать логи транзакций СУБД. Это сложный метод, требующий знаний SQL и доступа к серверу базы данных.
Для MS SQL Server можно использовать системные представления:
SELECT
[Transaction ID],
[Begin Time] AS TransactionStartTime,
[Transaction Name]
FROM
fn_dblog(NULL, NULL)
WHERE
[Transaction Name] LIKE '%1C%'
AND [Begin Time] BETWEEN '2023-01-01' AND '2023-12-31'
ORDER BY
[Begin Time] DESC
Для PostgreSQL подойдёт запрос к таблице pg_stat_activity или анализ WAL-журналов (Write-Ahead Logging). Однако этот метод имеет ограничения:
| Плюсы | Минусы |
|---|---|
| Можно восстановить дату создания даже для удалённых документов | Требуются права sysadmin на сервере СУБД |
| Работает для документов, созданных до включения аудита | Логи ротируются и могут не содержать старых данных |
| Позволяет отследить пользователя, создавшего документ | Сложно фильтровать по конкретному документу |
⚠️ Внимание: Анализ транзакционных логов может нарушить производительность работающей базы. Выполняйте такие запросы в периоды минимальной нагрузки или на резервной копии.
5. Внешние инструменты: 1С:Аудит и специализированные обработки
Для комплексного анализа истории документов удобно использовать готовые решения:
- 🔎 1С:Аудит — типовой продукт для проверки корректности данных. Позволяет построить отчёт по датам создания, изменения и проведения документов за любой период.
- 📊 Обработка «История документов» (доступна на Инфостарт или 1С-Галлерея). Визуализирует цепочку изменений с указанием авторов и временных меток.
- 🛠️ 1С:Конвертация данных — может извлечь метаданные при переносе документов между базами.
Пример отчёта из 1С:Аудит:
Документ: ПоступлениеТоваров ПТ-000456
Дата создания: 12.05.2023 14:30:22
Пользователь: Иванов И.И.
Дата первого проведения: 12.05.2023 14:32:15
Последнее изменение: 15.05.2023 09:15:44 (Петров П.П.)
Преимущество внешних инструментов — визуализация и возможность массовой обработки. Например, обработка с Инфостарта может экспортировать историю в Excel для дальнейшего анализа.
Как найти бесплатные обработки для анализа документов?
На сайте Инфостарт (infostart.ru) в разделе "Публикации" используйте фильтр по тегам: #аудит #история_изменений #1С_8.3. В большинстве случаев есть бесплатные версии с ограниченным функционалом или демо-периодом. Обращайте внимание на рейтинг публикации и отзывы пользователей — это поможет избежать нестабильных решений.
Сравнение методов: какой выбрать?
Выбор способа зависит от ваших прав в базе, технических навыков и цели анализа. Ниже сводная таблица для быстрого ориентирования:
| Метод | Требуемые права | Точность | Сложность | Подходит для массового анализа |
|---|---|---|---|---|
| Журнал документов | Пользовательские | Средняя (зависит от аудита) | Низкая | ❌ Нет |
| Конфигуратор + SQL | Администратор | Высокая | Средняя | ✅ Да |
| Встроенный язык 1С | Пользователь с правами на запросы | Высокая | Средняя | ✅ Да |
| Логи транзакций | Sysadmin СУБД | Максимальная | Высокая | ⚠️ Ограничено |
| Внешние инструменты | Зависит от решения | Высокая | Низкая | ✅ Да |
Для разовых проверок подойдёт журнал документов или встроенный язык. Если нужно проанализировать тысячи документов — используйте SQL-запросы или специализированные обработки.
Дата создания документа в 1С может отличаться от даты в поле "Дата" на дни, месяцы или даже годы. Это нормально для ретроспективно введённых документов или при миграции данных из других систем.
FAQ: Частые вопросы о дате создания документов в 1С
Можно ли узнать дату создания документа, если он был удалён?
Да, но с оговорками. Если документ удалён логически (помечен на удаление), его можно восстановить через журнал и посмотреть дату создания стандартными методами. Если удалён физически — поможет только анализ резервных копий или транзакционных логов СУБД (при условии, что они не были очищены). В 1С:Бухгалтерии 3.0 для этого есть обработка «Восстановление удалённых документов».
Почему дата создания в истории изменений позже, чем дата в самом документе?
Это типичная ситуация для документов, введённых задним числом. Поле «Дата» в документе отражает бизнес-дату операции (например, 01.01.2023), а дата создания в истории — момент сохранения в базе (например, 15.06.2023). Такое расхождение нормально и не указывает на ошибку. Чтобы избежать путаницы, в некоторых конфигурациях (например, 1С:ERP) добавляют пользовательское поле «ДатаСоздания» и заполняют его автоматически при записи.
Как массово экспортировать даты создания документов в Excel?
Используйте внешнюю обработку или напишите скрипт на встроенном языке. Пример кода для экспорта:
Процедура ЭкспортДатыСоздания()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Документ,
| МИНИМУМ(ИсторияДанных.ДатаИзменения) КАК ДатаСоздания
|ИЗ
| Документ.ПоступлениеТоваров КАК Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияДанных КАК ИсторияДанных
| ПО Документ.Ссылка = ИсторияДанных.Ссылка
|СГРУППИРОВАТЬ ПО
| Документ.Ссылка";
Результат = Запрос.Выполнить();
ТаблицаРезультата = Результат.Выгрузить();
ЭкспортВExcel(ТаблицаРезультата, "ДатыСозданияДокументов.xlsx");
КонецПроцедуры
Для выгрузки в Excel используйте стандартную процедуру ЗаписьXML или библиотеку OneScriptExcel.
Можно ли изменить дату создания документа в 1С?
Технически да, но это требует прямого вмешательства в базу данных и нарушает целостность данных. Дата создания хранится в системных полях таблиц СУБД (например, _Document{НомерТипа}.ДатаСоздания). Изменение этого поля может привести к:
- 🔄 Нарушению последовательности событий в истории.
- 🚨 Ошибкам при регламентных операциях (например, закрытии месяца).
- 📝 Проблемам с аудитом и отчётностью.
Если необходимо скорректировать дату для бизнес-процессов, лучше добавить пользовательское поле (например, «ДатаРегистрации») и заполнять его вручную.
Как узнать, кто создал документ, если в истории изменений нет данных?
Если аудит отключён, попробуйте:
- Просмотреть логи входов пользователей (в 1С:Предприятии 8.3 они хранятся в регистре сведений «ЖурналРегистрации»).
- Использовать логи СУБД (например, в MS SQL через
fn_dblogили PostgreSQL черезpg_stat_activity). - Проанализировать резервные копии базы на момент создания документа.
В крайнем случае поможет журнал событий Windows (если 1С работает на сервере под управлением Windows) — в нём фиксируются запуски сеансов пользователей.