Структура SQL-таблиц ГТД

Материал из Alta-Soft Wikipedia
Версия от 16:11, 11 марта 2019; Rudometov (обсуждение | вклад) (Таблица EdMsgs (заголовки всех сообщений ЭД-2))
Перейти к навигации Перейти к поиску

Основные таблицы БД программы Альта-ГТД

Неиспользуемые поля выделены серым, самые важные жирным.

Таблица Docs (основное хранилище документов программы)

Поле Тип Описание
ID [int] IDENTITY(1,1) Автоинкрементный ключ (устаревший, см. GID)
PathId [int] Ссылка на путь, т.е. поле ID с именем папки (устаревший, см. PathGID)
DocKey [varchar](50) Номер документа или имя папки, для показа в списке
Dir [int] Признак типа записи, 0-документ, 10-папка. Возможно появление других служебных записей с Dir>0.
DocTyp [varchar](50) Тип документа, например 'GTD' для ГТД
DocDate [datetime] Дата из номера документа, там где оно применимо (прописано в структуре документа *.dcf)
ModDate [datetime] Дата последней модификации документа
RegDate [datetime] Дата выпуска для ГТД, проставляется вручную по кнопке "синяя печать", или при выпуске по ЭД-2
CrDate [datetime] Дата создания (первого сохранения) документа
GoodsNum [int] Кол-во товаров в документе, там где оно применимо (прописано в структуре документа *.dcf)
UserName [varchar](20) Имя пользователя, последним сохранявшего документ. Присваивается только если в Альте настроены внутренние имена пользователей, к имени компьютера и пользователя в смысле Windows отношения не имеет.
EDSender [varchar](20) Пользователь, отославший документ по ЭД-2. Или логин в смысле Альты, или, если нет, то имя компьютера.
Binded [varchar](100) Взаимосвязанные документы, русские имена через запятую, для показа в списке. На 100% верить нельзя, т.к. не все помещаются и не всегда обновляются. Связь считается по одинаковому номеру в пределах одной папки (ГТД+ДТС+КТС+КУТС+Опись) или по происхождению (Инвойс=>ГТД=>ЭД-Инвойс).
Status [varchar](10) Статус. В большой степени заготовка, сейчас используется только '0000000001' для обозначения регистрации синей печатью. Не путать с EdStatus!
Blob [image] Главное поле! Собственно сохраненный документ. К сожалению в виде малочитабельного бинарника, хотя слова в кодировке WIN-1251 разобрать можно (на этом строится индексация для Full Text Search).
DocSize [int] Размер поля Blob (он же размера выгруженного файла документа во внутреннем формате Альта)
SDSId [int] Код пограничного поста при "удаленном декларировании по ЭД-2". Отменено Спецификацией ЭД от 01.10.15. Изначально здесь была ссылка на номер СДС в смысле ЭД-1, но это тем более устарело.
Locked [int] Значение Locked>0 признак того, что документ уже открыт другим пользователем (занят). В списке отображается желтым.
LockTime [datetime] Время, когда документ был открыт другим пользователем. Для показа в списке. Если время залочки больше суток, то считаем что это зависший компьютер и в списке желтым не отображаем.
LockUser [varchar](15) Имя пользователя, который занял документ
Comment [varchar](50) Короткий комментарий, показывается и редактируется вручную в режиме "широкого списка"
ParentId [int] Ссылка на родительский документ (Устаревший, см. ParentGID)'
ProcessId [varchar](36) Номер процедуры ЭД-2, присваивается таможней в момент "открытия процедуры". Один из способов связки с таблицей EdMsgs.
EDStat [int] Статус процедуры ЭД-2. Отвечает за подсветку, "молнию" и подписи в списке документов. Подробнее см. Статусы документов ЭД-2.
RegNum [varchar](25) Регистрационный номер ГТД, полученный из таможни по ЭД-2. Виден в режиме "широкого списка". Может использоваться в отчетах.
DocumentID [varchar](36) Уникальный номер документа, существует только для документов ЭД-2 (но не для ГТД!). При отправке в таможню не должен повторяться, поэтому при каждом сохранении создается заново. Не путать с главным ключом GID!
ArchId [varchar](50) Номер ЭД-2 архива таможни, в который последний раз отправляли документ.
ArchDocID [varchar](50) Номер документа в ЭД-2 архиве, присваивается таможней в ответном сообщении.
ArchDocumentID [varchar](36) Номер DocumentID экземпляра документа переданного в ЭД-2 архив таможни.
GID [uniqueidentifier] ROWGUIDCOL Первичный ключ, уникальный ID документа. Служит для связки с таблицами EdMsgs и *List.
ParentGID [uniqueidentifier] Ссылка на GID родительского документа. Проставляется при создании взаимосвязанного (ГТД из Инвойса, ДТС из ГТД и т.д.). Используется для показа и совместной выгрузки во внутреннем формате.
PathGID [uniqueidentifier] Указатель на папку, в которой лежит документ. Используется для структуризации списка. Папка - это такая же запись таблицы Docs, только с пустым Blob и Dir>0. По умолчанию ссылается на корневую папку с GUID(0)
TXT [char](3) Способ индексации, необходим для полнотекстового индекса. По умолчанию всегда "txt".
Thumb [varchar](40) Идентификатор сертификата ЭЦП, с которой документ был отправлен по ЭД-2. Для предотвращения отправки с подписью разных фирм в рамках одной процедуры декларирования.
Firm [varchar](100) Фирма в смысле ЭД-2, для связки с таблицей EdFirms "ЭД-2 для нескольких фирм в одной базе"
FirstDT [varchar](25) Ссылка на первичную ДТ (регистрационный номер) у ЭД-документа для признака подачи /2.
ScanID [varchar](36) ID сканированной копии документа.
Hash [varchar](50) Hash для XML-блобов.
Comment2 [varchar](50) Дополнительный короткий комментарий, показывается в списке документов по настройке

[System]
ListComment2=1

Timestamp [timestamp] Служебное поле, хранит информацию о времени последнего обновления строки таблицы. Для динамического обновления списка документов.

Таблица EdMsgs (заголовки всех сообщений ЭД-2)

Большая часть полей соответствует одноименным тэгам XML-сообщения ЭД-2

Поле Тип Описание
EnvelopeID [varchar](36) Идентификатор сообщения, уникальный ключ.
InitialEnvelopeID [varchar](36) Ссылка на идентификатор предыдущего сообщения. Для ответов, например при получении ошибки позволяет проследить к чему она относится.
SenderInformation [varchar](100) Имя отправителя сообщения. Обычно имеет вид "smtp://eps.customs.ru/company_name". Выдается таможней, прописано в настройке ЭД-2.
ReceiverInformation [varchar](100) Имя получателя сообщения. Обычно фиксированное "smtp://eps.customs.ru/gateway". Прописано в настройке ЭД-2. Для входящих сообщений от таможни SenderInformation и ReceiverInformation меняются местами.
PreparationDateTime [datetime] Время создания сообщения. По часам отправляющего компьютера, поэтому для разных поясов или летнего-зимнего времени может сильно не совпадать у входящих и исходящих сообщений.
InOutDateTime [datetime] Время приема сообщения в базу. По времени SQL-сервера. Используется для сортировки сообщений по умолчанию.
Priority [int] Фактически не используется, значение по умолчанию 4
Expiration [int] Фактически не используется, значение по умолчанию null
ConfirmationRequest [varchar](10) Фактически не используется, значение по умолчанию null
MessageType [varchar](10) Тип сообщения. Имеет вид "CMN.01234". Основное поле для понимания смысла сообщения. Все типы прописаны в "Спецификации ЭД".
ProccessID [varchar](36) Идентификатор процедуры. Объединяет сообщения относящиеся к одной ГТД (кроме самого первого, "запрос на открытие процедуры")
CustomsCode [varchar](8) Код таможенного поста, всегда 8 знаков. Служит дополнением к адресу получателя, который один на всю таможню.
ParticipantID [varchar](15) Идентификатор участника ВЭД. Служит дополнением к адресу отправителя. Выдается таможней, прописан в настройке ЭД-2.
Status [int] Статус сообщения ЭД. Позволяет определить что оно доставлено, не обработано или обработано с ошибкой. Подробнее см. Статусы сообщений ЭД-2
Msg [image] Устаревшее поле. Раньше здесь хранилось тело сообщения в формате XML. Сейчас такого поля нет, а тело сообщения вынесено в связанную таблицу EDMsgsXML, которая в общем случае может находиться в другой БД - см. поле MsgDB.
DocumentID [varchar](50) Идентификатор документа внутри сообщения, уникальный.
RefDocumentID [varchar](50) Ссылка на идентификатор документа в предыдущем сообщении. В некотором роде дублирует пару EnvelopeID/InitialEnvelopeID. По идее должны присутствовать обе связки, но в сообщениях от таможни одной из них может не быть. Приходится смотреть на обе связки по "или".
Incoming [bit] Признак входящего сообщения. 0-сообщения декларанта, 1-сообщение таможенника.
DocumentName [varchar](50) Тип документа. Соответствует первому информативному тэгу XML (который обернут снаружи конвертом SOAP с тэгом <Envelope> и подписью Крипто-ПРО с тэгом <Object>). Зависит от MessageType, причем один тип документа (например <Result>) может встречаться во многих разных "CMN.XXXXX". Используется, в частности, для проверки соответствия содержимого XML одноименной XSD-схеме.
Result [varchar](250) Текст для показа в списке сообщений. Для разных типов содержит выборку из разных полей XML. Например русское название и номер ЭД-документа для сообщения "передан в ответ на запрос". Или текст ошибки для таможенного сообщения об ошибке.
DocGuid [uniqueidentifier] Служит для связки с таблицей Docs по главному ключу GID. В большинстве случаев дублирует связь по ProccessID. Но особенно важен для "запроса на открытие процедуры" (когда идентификатор процедуры еще не присвоен), и для отправки ПИ и ЭД-2 в архив (когда процедуры вообщен нет).
SoftVersion [varchar](20) Версия использованного формата XML. Регулярно меняется таможней. Первая цифра - версия "Альбома форматов", вторая "Спецификации ЭД". На момент ноября 2011 года используется "5.0.3/3.0.1".
Sender [varchar](15) Имя пользователя, либо имя компьютера, который отправил либо принял сообщение. Используется в основном техподдержкой для диагностики проблем со связью. Аналогично полю EDSender таблицы Docs.
MsgDB [varchar](50) Если XML-тело сообщения вынесено в другую БД, то в данном поле хранится имя БД, в чьей таблице EDMsgsXML оно находится. По умолчанию данное поле пусто (NULL), что означает что используется таблица EDMsgsXML самой базы ГТД.
NameDS [varchar](100) Имя подписавшего сообщение (берется из ЭЦП).
ProgVers [varchar](20) Версия программы, сформировавшей запись сообщения.
FPD [varbinary] Former Protect Data - данные о рабочем месте Альта-ГТД, на котором сформировано сообщение. Служебное поле в двоичном формате.
MainProccessID [varchar](36) Ссылка на основную процедуру с ДТ, при ответвлении сообщения о досмотре со своим ProccessID.

Таблица EdMsgsXML (тело сообщений ЭД-2)

Данная таблица всегда есть в самой базе ГТД и связана с EdMsgs по полю EnvelopeID (связь "один к одному"). Однако, часть ЭД-сообщений (или все) могут быть вынесены в дополнительные БД на этом же SQL-сервере - см. описание поля EdMsgs.MsgDB выше и меню "Настройка / Сервер и сетевые настройки / Доп. базы для ЭД" в программе Альта-ГТД. По умолчанию XML-тело сообщений сжимается (архивируется) для экономии места в БД, поэтому если предполагается напрямую читать XML-содержимое сообщений, то рекомендуется отключить функцию сжатия в вышеупомянутом меню Альта-ГТД, там же есть кнопка "Разжать" для уже записанных в БД сообщений (если вовремя не отключили сжатие).

Поле Тип Описание
EnvelopeID [varchar](36) Идентификатор сообщения, уникальный ключ. Связка с EdMsgs.
Msg [image] Тело сообщения в формате XML подписанное ЭЦП и возможно сжатое - см. след. поле.
Zip [int] Признак сжатия поля Msg: 0 - нет сжатия (можно прочитать XML из поля Msg средствами SQL Server), 1 - сжатие по алгортму zlib версии 1.2.3.