Структура SQL-таблиц ГТД
Содержание
Основные таблицы БД программы Альта-ГТД
Неиспользуемые поля выделены серым, самые важные жирным.
Таблица 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] |
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] | Используется для контроля ЭД сообщений. Сообщение на контроле - 1, снято с контроля - 0. Значение по умолчанию 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. |