Как организовать выгрузку данных из Directum для перехода на 1С:Документооборот 3.0?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

Переход с одной системы электронного документооборота (СЭД) на другую — это всегда сложный технологический вызов, и полезно заранее изучить опыт коллег, чтобы избежать типовых подводных камней при переходе на ДО 3.0. В данном материале мы проанализируем ситуацию миграции из системы Directum в 1С:Документооборот 3.0. Основная задача заключается не только в переносе карточек документов, но и в сохранении их связей, версий файлов и, что самое трудоемкое, истории согласования и переписки. Разберем по шагам, как реализовать этот процесс наиболее эффективно.

Шаг 1. Выгрузка метаданных документов из Directum

Для начала нам необходимо получить реестр документов с их основными реквизитами (номер, дата, сумма, контрагент и т.д.). Рассмотрим два основных пути реализации этой задачи:

  1. Использование Directum Development Studio (DDS): Если у вас есть доступ к среде разработки Directum, мы можем создать «Мастер-действие», которое будет итерировать по справочнику документов и записывать данные в XLSX или XML файл. Это наиболее контролируемый путь, позволяющий сразу фильтровать ненужные документы.
  2. Использование готовых утилит: Существует специализированный инструмент d5-util-export-data (доступен на GitHub), предназначенный для экспорта данных из Directum 5. Он позволяет выгружать объекты по заданным правилам в промежуточный формат.

Проанализируем пример структуры запроса, который можно использовать для получения данных через API Directum. Нам важно получить уникальный идентификатор ID, который в дальнейшем станет ключом связи в 1С.


// Пример логики обращения к API для получения списка договоров
// Используется псевдокод на базе интеграционных механизмов
Запрос = Новый COMОбъект("Directum.Application");
Документы = Запрос.Content.EDocuments;
Фильтр = Документы.CreateSelect();
Фильтр.Add("ВидДокумента", "Договор");
СписокДоговоров = Фильтр.Execute();

Шаг 2. Экспорт файлов и версионности

Выгрузка тел документов должна происходить синхронно с выгрузкой метаданных. Выясним причину, почему важно сохранять иерархию папок на диске: при большом объеме данных (сотни гигабайт) импорт в 1С может затянуться, и наличие четкой структуры ID_документа / Версия_N / файл.ext позволит организовать загрузку порциями.

При выгрузке из Directum рекомендуется придерживаться следующего алгоритма:

Посмотрим на пример того, как это может выглядеть в итоговой таблице Excel, которую мы подготовим для 1С:

ID; Номер; Дата; Сумма; ПутьКФайлу

15243; ДГ-001; 01.01.2023; 100000; C:\Export\15243\Договор.docx

Шаг 3. Извлечение истории согласования

Это самый сложный этап, так как в Directum история согласования хранится в таблицах задач (Workflow). Прямого экспорта «одной кнопкой» для всей истории не существует. Разберем подробнее, как это реализовать через SQL-запросы к базе данных Directum.

История «размазана» по таблицам, связанным с заданиями (T_Tasks, T_Jobs). Чтобы собрать историю по конкретному документу, нам нужно найти все задачи, в которых этот документ был вложениями. Рассмотрим пример SQL-запроса для получения цепочки согласования:


SELECT 
    j.JobName as 'Этап',
    u.UserName as 'Исполнитель',
    j.Status as 'Результат',
    j.FinishDate as 'ДатаЗавершения',
    j.Text as 'Комментарий'
FROM T_Jobs j
JOIN T_Users u ON j.ExecutorID = u.UserID
WHERE j.TaskID IN (SELECT TaskID FROM T_Attachments WHERE AttachmentID = 'ID_ВАШЕГО_ДОКУМЕНТА')
ORDER BY j.FinishDate ASC

Полученные данные лучше всего сохранять в отдельный XLSX файл, где первой колонкой будет ID документа, а остальными — строки истории. В 1С:Документооборот 3.0 эту информацию можно импортировать либо в лист согласования, либо в виде текстового блока в дополнительный реквизит «История из старой системы».

Шаг 4. Подготовка 1С:Документооборот 3.0 к приему данных

Прежде чем запускать импорт, проанализируем ситуацию в целевой системе. 1С:ДО 3.0 требует предварительной настройки метаданных. Нам необходимо:

  1. Загрузить НСИ: Контрагенты, Организации, Подразделения и Пользователи должны быть созданы заранее. Для автоматизации этого процесса можно использовать готовые инструменты, например, для загрузки контрагентов из Excel или для выгрузки сотрудников и структуры предприятия из 1С:ЗУП. Сопоставление лучше делать по ИНН для контрагентов и по Логину для пользователей.
  2. Создать дополнительные реквизиты: Обязательно добавьте в документы 1С реквизит ID_Directum (типа Строка). Это позволит избежать дублей при повторной загрузке и даст возможность всегда найти первоисточник.
  3. Настроить тома хранения файлов: Поскольку мы переносим архив, крайне рекомендуется хранить файлы не в базе SQL, а в томах на диске. Существуют обработки для переноса присоединенных файлов во внешние тома, которые могут пригодиться как на этапе внедрения, так и в ходе дальнейшей эксплуатации.

Шаг 5. Загрузка данных в 1С

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


// Создание документа программно
НовыйДокумент = Справочники.ВнутренниеДокументы.СоздатьЭлемент();
НовыйДокумент.Наименование = "Перенос из Directum: " + СтрокаИзФайла.Номер;
НовыйДокумент.ДатаРегистрации = СтрокаИзФайла.Дата;
// Заполнение доп. реквизита для связи
ЗначениеДопРеквизита = НовыйДокумент.ДополнительныеРеквизиты.Добавить();
ЗначениеДопРеквизита.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ID_Directum");
ЗначениеДопРеквизита.Значение = СтрокаИзФайла.ID;
НовыйДокумент.Записать();

// Прикрепление файла
РаботаСФайлами.ДобавитьФайл(НовыйДокумент.Ссылка, СтрокаИзФайла.ПутьКФайлу, "Договор.docx");

Важный момент: в 1С:ДО 3.0 механизм работы с файлами тесно связан с «Обработкой документа». Если вы загружаете документы, которые уже завершены, не забудьте программно установить им состояние «Завершен» или «Действует», чтобы избежать запуска новых бизнес-процессов по старым данным.

Резюме и рекомендации

Подводя итог, отметим, что качественная миграция — это на 70% работа с данными в источнике (Directum) и на 30% — в приемнике (1С). Выясним основные риски: потеря версионности и «битые» ссылки на контрагентов. Чтобы этого избежать, всегда делайте тестовую загрузку 10-15 документов разных типов и проверяйте корректность заполнения всех полей, включая историю согласования. Используйте ID из Directum как «якорь» для синхронизации, и тогда переход пройдет гладко.

← На главную