Структура SQL-таблиц ГТД: различия между версиями

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску
м (1 версия: Все статьи из старой AltaPedia)
Строка 1: Строка 1:
=Основные таблицы БД программы ГТД-PRO=
+
=Основные таблицы БД программы Альта-ГТД=
  
 
Неиспользуемые поля выделены <span style="color:#CCCCCC">серым</span>, самые важные '''жирным'''.
 
Неиспользуемые поля выделены <span style="color:#CCCCCC">серым</span>, самые важные '''жирным'''.
Строка 151: Строка 151:
 
  |}
 
  |}
  
==Таблица '''EdMsgs''' (все сообщения ЭД-2) ==
+
==Таблица '''EdMsgs''' (заголовки всех сообщений ЭД-2) ==
  
 
Большая часть полей соответствует одноименным тэгам XML-сообщения ЭД-2
 
Большая часть полей соответствует одноименным тэгам XML-сообщения ЭД-2
Строка 215: Строка 215:
 
  |Статус сообщения ЭД. Позволяет определить что оно доставлено, не обработано или обработано с ошибкой. Подробнее см. [[Статусы сообщений ЭД-2, поле EdMsgs.Status|Статусы сообщений ЭД-2]]
 
  |Статус сообщения ЭД. Позволяет определить что оно доставлено, не обработано или обработано с ошибкой. Подробнее см. [[Статусы сообщений ЭД-2, поле EdMsgs.Status|Статусы сообщений ЭД-2]]
 
  |-
 
  |-
  |'''Msg'''
+
  |<span style="color:#CCCCCC">Msg</span>
 
  |[image]
 
  |[image]
  |Тело сообщения в формате XML подписанное ЭЦП. Самое объемное поле. MS SQL 2005/2008 позволяет с помощью специальных запросов залезть внутрь. Но мы обычно загружаем его целиком, как XML-файл.
+
  |Устаревшее поле. Раньше здесь хранилось тело сообщения в формате XML. Сейчас такого поля нет, а тело сообщения вынесено в связанную таблицу EDMsgsXML, которая в общем случае может находиться в другой БД - см. поле MsgDB.
 
  |-
 
  |-
 
  |DocumentID
 
  |DocumentID
Строка 250: Строка 250:
 
  |[varchar](15)
 
  |[varchar](15)
 
  |Имя пользователя, либо имя компьютера, который отправил либо принял сообщение. Используется в основном техподдержкой для диагностики проблем со связью. Аналогично полю EDSender таблицы Docs.
 
  |Имя пользователя, либо имя компьютера, который отправил либо принял сообщение. Используется в основном техподдержкой для диагностики проблем со связью. Аналогично полю EDSender таблицы Docs.
 +
|-
 +
|'''MsgDB'''
 +
|[varchar](50)
 +
|Если XML-тело сообщения вынесено в другую БД, то в данном поле хранится имя БД, в чьей таблице EDMsgsXML оно находится. По умолчанию данное поле пусто (NULL), что означает что используется таблица EDMsgsXML самой базы ГТД.
 +
|}
 +
 +
==Таблица '''EdMsgsXML''' (тело сообщений ЭД-2) ==
 +
 +
Данная таблица всегда есть в самой базе ГТД и связана с ''EdMsgs'' по полю ''EnvelopeID'' (связь "один к одному"). Однако, часть ЭД-сообщений (или все) могут быть вынесены в дополнительные БД на этом же SQL-сервере - см. описание поля ''EdMsgs.MsgDB'' выше и меню "Настройка / Сервер и сетевые настройки / Доп. базы для ЭД" в программе Альта-ГТД.
 +
По умолчанию XML-тело сообщений сжимается (архивируется) для экономии места в БД, поэтому если предполагается напрямую читать XML-содержимое сообщений, то рекомендуется отключить функцию сжатия в вышеупомянутом меню Альта-ГТД, там же есть кнопка "Разжать" для уже записанных в БД сообщений (если вовремя не отключили сжатие).
 +
 +
{| class="standard"
 +
!Поле
 +
!Тип
 +
!Описание
 +
|-
 +
|'''EnvelopeID'''
 +
|[varchar](36)
 +
|Идентификатор сообщения, уникальный ключ. Связка с EdMsgs.
 +
|-
 +
|'''Msg'''
 +
|[image]
 +
|Тело сообщения в формате XML подписанное ЭЦП и возможно сжатое - см. след. поле.
 +
|-
 +
|'''Zip'''
 +
|[int]
 +
|Признак сжатия поля Msg: 0 - нет сжатия (можно прочитать XML из поля Msg средствами SQL Server), 1 - сжатие по алгортму [http://www.zlib.net zlib] версии 1.2.3.
 
  |}
 
  |}
  

Версия 19:40, 7 апреля 2014

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

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

Таблица 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". (Изначально здесь была ссылка на номер СДС в смысле ЭД-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](36) Номер ЭД-2 архива таможни, в который последний раз отправляли документ.
ArchDocID [varchar](36) Номер документа в ЭД-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 для нескольких фирм в одной базе"

Таблица 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 самой базы ГТД.

Таблица 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.