Переход с одной системы электронного документооборота (СЭД) на другую — это всегда сложный технологический вызов, и полезно заранее изучить опыт коллег, чтобы избежать типовых подводных камней при переходе на ДО 3.0. В данном материале мы проанализируем ситуацию миграции из системы Directum в 1С:Документооборот 3.0. Основная задача заключается не только в переносе карточек документов, но и в сохранении их связей, версий файлов и, что самое трудоемкое, истории согласования и переписки. Разберем по шагам, как реализовать этот процесс наиболее эффективно.
Для начала нам необходимо получить реестр документов с их основными реквизитами (номер, дата, сумма, контрагент и т.д.). Рассмотрим два основных пути реализации этой задачи:
XLSX или XML файл. Это наиболее контролируемый путь, позволяющий сразу фильтровать ненужные документы.d5-util-export-data (доступен на GitHub), предназначенный для экспорта данных из Directum 5. Он позволяет выгружать объекты по заданным правилам в промежуточный формат.Проанализируем пример структуры запроса, который можно использовать для получения данных через API Directum. Нам важно получить уникальный идентификатор ID, который в дальнейшем станет ключом связи в 1С.
// Пример логики обращения к API для получения списка договоров
// Используется псевдокод на базе интеграционных механизмов
Запрос = Новый COMОбъект("Directum.Application");
Документы = Запрос.Content.EDocuments;
Фильтр = Документы.CreateSelect();
Фильтр.Add("ВидДокумента", "Договор");
СписокДоговоров = Фильтр.Execute();
Выгрузка тел документов должна происходить синхронно с выгрузкой метаданных. Выясним причину, почему важно сохранять иерархию папок на диске: при большом объеме данных (сотни гигабайт) импорт в 1С может затянуться, и наличие четкой структуры ID_документа / Версия_N / файл.ext позволит организовать загрузку порциями.
При выгрузке из Directum рекомендуется придерживаться следующего алгоритма:
ID.Посмотрим на пример того, как это может выглядеть в итоговой таблице Excel, которую мы подготовим для 1С:
ID; Номер; Дата; Сумма; ПутьКФайлу
15243; ДГ-001; 01.01.2023; 100000; C:\Export\15243\Договор.docx
Это самый сложный этап, так как в 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 эту информацию можно импортировать либо в лист согласования, либо в виде текстового блока в дополнительный реквизит «История из старой системы».
Прежде чем запускать импорт, проанализируем ситуацию в целевой системе. 1С:ДО 3.0 требует предварительной настройки метаданных. Нам необходимо:
ИНН для контрагентов и по Логину для пользователей.ID_Directum (типа Строка). Это позволит избежать дублей при повторной загрузке и даст возможность всегда найти первоисточник.Для загрузки мы можем использовать типовую обработку ЗагрузкаДанныхИзФайла, однако для сложной миграции с файлами и историей лучше написать небольшую собственную обработку. Рассмотрим пример программного создания документа с прикрепленным файлом:
// Создание документа программно
НовыйДокумент = Справочники.ВнутренниеДокументы.СоздатьЭлемент();
НовыйДокумент.Наименование = "Перенос из Directum: " + СтрокаИзФайла.Номер;
НовыйДокумент.ДатаРегистрации = СтрокаИзФайла.Дата;
// Заполнение доп. реквизита для связи
ЗначениеДопРеквизита = НовыйДокумент.ДополнительныеРеквизиты.Добавить();
ЗначениеДопРеквизита.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ID_Directum");
ЗначениеДопРеквизита.Значение = СтрокаИзФайла.ID;
НовыйДокумент.Записать();
// Прикрепление файла
РаботаСФайлами.ДобавитьФайл(НовыйДокумент.Ссылка, СтрокаИзФайла.ПутьКФайлу, "Договор.docx");
Важный момент: в 1С:ДО 3.0 механизм работы с файлами тесно связан с «Обработкой документа». Если вы загружаете документы, которые уже завершены, не забудьте программно установить им состояние «Завершен» или «Действует», чтобы избежать запуска новых бизнес-процессов по старым данным.
Подводя итог, отметим, что качественная миграция — это на 70% работа с данными в источнике (Directum) и на 30% — в приемнике (1С). Выясним основные риски: потеря версионности и «битые» ссылки на контрагентов. Чтобы этого избежать, всегда делайте тестовую загрузку 10-15 документов разных типов и проверяйте корректность заполнения всех полей, включая историю согласования. Используйте ID из Directum как «якорь» для синхронизации, и тогда переход пройдет гладко.