Передача данных через SQL-таблицу ExtDocs
Для передачи документов в программу "Альта-ГТД" из пользовательской КИС часто бывает удобнее вместо папки с файлами использовать таблицу на SQL-сервере. При этом в таблице хранятся по сути те же самые файлы (XML или бинарные), загруженные в поле типа BLOB.
Стандартное имя такой таблицы в рабочей БД ГТД - ExtDocs
При появлении в ней необработанных записей (Status=0 или NULL) на панели инструментов ГТД появляется кнопка "зеленая стрелка", которая позволяет загрузить их из таблицы в текущую папку рабочей БД. Это та же самая кнопка, которая показывает наличие документов в папке "автозагрузки". Выборочная загрузка возможна через меню "Каталог|Выгрузка/Загрузка дополнительная|Внешние документы из SQL-базы".
По умолчанию таблица ExtDocs в базе отсутствует, чтобы создать ее и начать работу с данным механизмом необходимо хотя бы один раз зайти в упомянутое меню "Внешние документы из SQL-базы". Так сделано чтобы не замедлять работу большинства пользователей ненужными SQL-запросами.
Поля таблицы ExtDocs
Жирным шрифтом выделены обязательные для заполнения поля
Поле | Тип | Описание |
---|---|---|
DocExt | varchar(10) | Тип файла, чаще всего "XML" |
DocName | varchar(50) | Название док-та (для отображения в списке) |
DocNum | varchar(50) | Номер документа (для отображения в списке) |
SendDate | datetime | Время создания записи |
SendFrom | varchar(16) | Имя создателя записи (для отображения в списке) |
SendTo | varchar(16) | Имя загрузившего запись (логин пользователя в смысле "Альта-ГТД", заполняется при обработке записи) |
GetDate | datetime | Время загрузки (заполняется при обработке записи) |
Data | image | Собственно документ в одном из разрешенных форматов:
|
Status | int | Статус (при создании записи 0 или NULL, при обработке присваивается код результата операции) |
Comment | varchar(100) | Комментарий (для отображения в списке) |
DOCGUID | uniqueidentifier | Guid документа, для последующей его идентификации в таблице Docs рабочей БД.
|
GID | uniqueidentifier | Номер записи в таблице, PRIMARY KEY, присваивается автоматически |
Статусы и коды ошибок обработки записи
Код | Описание |
---|---|
0 | Новая запись, не обработана |
1 | Документ успешно загружен |
-1 | Ошибка записи на диск |
-2 | Неизвестный тип данных в поле DocExt |
-3 | Ошибка при конвертации документа, неверный формат |
-4 | Дубль, документ с таким DocGUID уже есть в базе |
Удаление обработанных записей, как и их добавление, осуществляется внешней КИС. Таким образом ExtDocs может являться одновременно и логом с информацией о загруженных документах, если удалять их не сразу, а через какое-то время.
Ниже приведен скрипт для создания таблицы ExtDocs. После его выполнения и перезапуска программы ГТД загрузка новых документов "зеленой стрелкой" начинает работать автоматически.
CREATE TABLE [dbo].[ExtDocs]( [DocExt] [varchar](10) NULL, [DocName] [varchar](50) NULL, [DocNum] [varchar](50) NULL, [SendDate] [datetime] NULL, [SendFrom] [varchar](16) NULL, [SendTo] [varchar](16) NULL, [GetDate] [datetime] NULL, [Data] [image] NULL, [Status] [int] NULL, [Comment] [varchar](100) NULL, [DOCGUID] [uniqueidentifier] NULL, [GID] [uniqueidentifier] ROWGUIDCOL NOT NULL DEFAULT (newid()), PRIMARY KEY CLUSTERED ([GID] ASC) ON [PRIMARY]) ON [PRIMARY]