Передача данных через SQL-таблицу ExtDocs

Материал из Alta-Soft Wikipedia
Версия от 17:02, 19 марта 2014; Belousov (обсуждение | вклад) (Статусы и коды ошибок обработки записи)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Для передачи документов в программу "Альта-ГТД" из пользовательской КИС часто бывает удобнее вместо папки с файлами использовать таблицу на 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 Собственно документ в одном из разрешенных форматов:
  • XML таможенного формата (в соответствии с альбомами форматов утвержденными ФТС).
  • XML внутреннего формата "Альта-ГТД". Для ЭД-2 документов совпадает с таможенным, для ГТД и Инвойса существенно отличается. Примеры можно получить выгрузив любой готовый документ через меню "Каталог|Выгрузка/Загрузка дополнительная|Выгрузка в XML (Альта)".
  • Бинарник внутреннего формата. Расширение соответствует типу документа, например "GTD" или "INV". Закрытый формат, получается выгрузкой из программы "Альта-ГТД" на другом рабочем месте.
  • TXT, DBF, SCP, SCW, INI - в соответствии с форматами ввода вывода Альта-ГТД
Status int Статус (при создании записи 0 или NULL, при обработке присваивается код результата операции)
Comment varchar(100) Комментарий (для отображения в списке)
DOCGUID uniqueidentifier Guid документа, для последующей его идентификации в таблице Docs рабочей БД.
  • Если был передан из КИС, то используется как главный ключ Docs.GID для загружаемого документа.
  • Если был пустой, то программа прописывает в это поле новый Docs.GID созданного документа.
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 NOT NULL PRIMARY KEY NONCLUSTERED ROWGUIDCOL DEFAULT (newid())
)

См. также

Форматы ввода вывода Альта-ГТД

Интеграция с КИС