-
-
Обсуждения на сайте Альта-Софт
-
Помогите написать SQL запрос к базе ГТД.
Модераторы: Renat, Gala, alta_olg, expert, Lemur
Помогите написать SQL запрос к базе ГТД.
Помогите , плиз, с написанием запроса к SQL серверу.
Из базы данных мне нужно получить: номер ГТД, дату ГТД, код ТН ВЭД товара, номер товара, страна происхождения, описание товара (31-я графа), вес нетто, вес брутто, таможенная стоимость, номер инвойса, дата инвойса, валюта и + желательно вся 44-я графа со всеми возможными разбивками по полям (ну, т.е. не сплошным текстом в одном поле). Всё это нужно по каждому товару из декларации, т.е. 1 товар - 1 запись, 10 товаров - 10 записей.
Если кто в курсе как это сделать, помогите, люди добрые.
Я бы и сам написал, но структуру базы мне пока разгадать не удалось.
Из базы данных мне нужно получить: номер ГТД, дату ГТД, код ТН ВЭД товара, номер товара, страна происхождения, описание товара (31-я графа), вес нетто, вес брутто, таможенная стоимость, номер инвойса, дата инвойса, валюта и + желательно вся 44-я графа со всеми возможными разбивками по полям (ну, т.е. не сплошным текстом в одном поле). Всё это нужно по каждому товару из декларации, т.е. 1 товар - 1 запись, 10 товаров - 10 записей.
Если кто в курсе как это сделать, помогите, люди добрые.
Я бы и сам написал, но структуру базы мне пока разгадать не удалось.
Re: Помогите написать SQL запрос к базе ГТД.
... совсе забыл - цена товара (42-я графа) тоже нужна в запросе.
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Именно над рабочей базой Альты такого запроса сделать, к сожалению, нельзя. Потому что большая часть документа хранится в большом бинарном поле типа BLOB в абсолютно не читаемом виде. Это полный аналог файла во внутреннем формате *.GTD, пришедшем еще из DOS. Наружу (в таблицах Docs и GTDList) торчат только несколько полей заголовка: номер, тип ГТД, валюта и еще по мелочи.
Рекомендуемый способ для изготовления отчетов - завести рядом с рабочей БД отдельную "БД зарегистрированных ГТД" http://alta.ru/docs2sql.php
В нее попадают только выпущенные ГТД, или при получении сообщения о выпуске по ЭД от таможни, или при нажатии кнопки "синяя печать" и присвоении регистрационного номера вручную. В этой БД уже лежит ГТД не одним полем неясной структуры, а развернутая в несколько таблиц. Формат при этом тот же, что используется в программах таможни, он документирован на http://www.customs.ru. Ну и названия граф там в большинстве своем понятные, типа G22_2 или G47_1_1 - от номера графы.
Рекомендуемый способ для изготовления отчетов - завести рядом с рабочей БД отдельную "БД зарегистрированных ГТД" http://alta.ru/docs2sql.php
В нее попадают только выпущенные ГТД, или при получении сообщения о выпуске по ЭД от таможни, или при нажатии кнопки "синяя печать" и присвоении регистрационного номера вручную. В этой БД уже лежит ГТД не одним полем неясной структуры, а развернутая в несколько таблиц. Формат при этом тот же, что используется в программах таможни, он документирован на http://www.customs.ru. Ну и названия граф там в большинстве своем понятные, типа G22_2 или G47_1_1 - от номера графы.
Следующие пользователи поблагодарили Nick за это собщение: batoo
Re: Помогите написать SQL запрос к базе ГТД.
ясно
жаль что так дело обстоит
все равно, спасибо за ответ
жаль что так дело обстоит
все равно, спасибо за ответ
Re: Помогите написать SQL запрос к базе ГТД.
Все время забывал спросить а как мы с документами работаем если в базе они в неудобоваримом формате ? ) что даже запроса не сделать к нему ния ? ) в чем фокус ? )Nick писал(а):Именно над рабочей базой Альты такого запроса сделать, к сожалению, нельзя. Потому что большая часть документа хранится в большом бинарном поле типа BLOB в абсолютно не читаемом виде. Это полный аналог файла во внутреннем формате *.GTD, пришедшем еще из DOS. Наружу (в таблицах Docs и GTDList) торчат только несколько полей заголовка: номер, тип ГТД, валюта и еще по мелочи.
Рекомендуемый способ для изготовления отчетов - завести рядом с рабочей БД отдельную "БД зарегистрированных ГТД" http://alta.ru/docs2sql.php
В нее попадают только выпущенные ГТД, или при получении сообщения о выпуске по ЭД от таможни, или при нажатии кнопки "синяя печать" и присвоении регистрационного номера вручную. В этой БД уже лежит ГТД не одним полем неясной структуры, а развернутая в несколько таблиц. Формат при этом тот же, что используется в программах таможни, он документирован на http://www.customs.ru. Ну и названия граф там в большинстве своем понятные, типа G22_2 или G47_1_1 - от номера графы.
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Документ каждый раз загружается в память целиком, вся его загрузка/выгрузка спрятана в один объект. Для всей остальной программы его внутреннее устройство не важно, она работает с ним через методы GetField/SetField.
Для получения отчетов над базой есть еще два способа
1) Меню "Сервис/"Отчеты", там есть много разных полезных вариантов, они делаются над рабочей базой специальной программой на том же Delphi. Может там найдется подходящий вариант.
2) Меню "Печать в Word/Excel", там тоже есть разные отчеты. Обычно над одной ГТД, но можно сделать и над всеми декларациями в папке. Там же есть подробный хелп по их изготовлению.
Для получения отчетов над базой есть еще два способа
1) Меню "Сервис/"Отчеты", там есть много разных полезных вариантов, они делаются над рабочей базой специальной программой на том же Delphi. Может там найдется подходящий вариант.
2) Меню "Печать в Word/Excel", там тоже есть разные отчеты. Обычно над одной ГТД, но можно сделать и над всеми декларациями в папке. Там же есть подробный хелп по их изготовлению.
-
- Эксперт
- Сообщения: 1261
- На форуме: c 28 сен 2009
Сказал: 233 ед.
Получил: 113 ед.
Получил: 113 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Скажите, а эти подходящие варианты можно самому подправить как и при "Печать в Word/Excel" ?Nick писал(а):1) Меню "Сервис/"Отчеты", там есть много разных полезных вариантов, они делаются над рабочей базой специальной программой на том же Delphi. Может там найдется подходящий вариант.
Re: Помогите написать SQL запрос к базе ГТД.
Вообще, использование выгрузки данных это, конечно, хорошо, но меня интересует автоматизация такой выгрузки на сколько это вообще возможно.
Поэтому возвращаясь к своему первому посту, попробуем поставит задачу по другому.
Я так понимаю ничто не мешает извлечь данные из таблиц на SQL сервере. Проблемма потом прочитать столбец с BLOB-данными.
Как бы тогда написать на питоне (ведь он же, по моему для этого в альте используется) такую программу, которая извлекала бы эти данные и передавала их... ну, скажем обратно на SQL сервер в темповую таблицу, но только уже в нормальном удобочитаемом виде?
Более того я почти уверен, что в каком либо модуле в файлах альты уже есть такая или похожая процедура. Вот тока где и как её приручить...
Поэтому возвращаясь к своему первому посту, попробуем поставит задачу по другому.
Я так понимаю ничто не мешает извлечь данные из таблиц на SQL сервере. Проблемма потом прочитать столбец с BLOB-данными.
Как бы тогда написать на питоне (ведь он же, по моему для этого в альте используется) такую программу, которая извлекала бы эти данные и передавала их... ну, скажем обратно на SQL сервер в темповую таблицу, но только уже в нормальном удобочитаемом виде?
Более того я почти уверен, что в каком либо модуле в файлах альты уже есть такая или похожая процедура. Вот тока где и как её приручить...
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Поправить можно, они прописаны скриптами на pascal-подобном язычке в файлах C:\ALTA\REPORT*.DATМарат Казань писал(а):Скажите, а эти подходящие варианты можно самому подправить как и при "Печать в Word/Excel" ?
Еще можно прислать свой образец отчета в Альту и по нему вам сваяют еще один скрипт. На данный момент их в дистрибутиве уже 92 различных варианта...
Процедура конечно же есть, точнее класс TDocument написанный на Delphi. Примерно 100Кб кода, плюс еще кое-какие библиотечки тянутся. Только мы его обычно никому не даем. По очень простой причине - это внутренний формат и состав полей в нем все время меняется (вместе с таможенными приказами по заполнению и таможенной электронной копией). И что, обновления исходников каждый раз всем "автоматизаторам" рассылать?Проблема потом прочитать столбец с BLOB-данными. Более того я почти уверен, что в каком либо модуле в файлах альты уже есть такая или похожая процедура. Вот тока где и как её приручить...
Поэтому стандартный способ - это работа с утвержденным таможней открытым XML-форматом. Один из вариантов как его получить я уже здесь описывал - утилитой Docs2SQL. Она делает как вы просите - берет из SQL бинарник и кладет его обратно уже в разобранном виде - на 20 таблиц и 500 полей.
Есть еще вариант - слазить в таблицу EDMsgs, там хранятся сообщения ЭД-2 для таможни и от таможни. У них тоже есть BLOB, только в нем лежит не абы что, а вполне читабельный XML, утвержденного таможней формата. Описание его есть например вот здесь http://ved.customs.ru/index.php?option= ... temid=1833
Re: Помогите написать SQL запрос к базе ГТД.
Здравствуйте!
Помогите пожалуйста написать запрос для получения из ПИ/ж/д сведений о номере вагона, получателе, отправителе, номере ТТН, наименовании товара, весе нетто. Отбор по номерам вагонов и дате
.
Помогите пожалуйста написать запрос для получения из ПИ/ж/д сведений о номере вагона, получателе, отправителе, номере ТТН, наименовании товара, весе нетто. Отбор по номерам вагонов и дате
.
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Одним запросом к базе ГТД здесь не обойдется. Документы в ней хранятся в виде блобов, в лучшем случае - в виде XML. А не в виде нескольких связанных таблиц с полями, как это обычно надо для отчетов.
Получить все XML-документы типа ПИ ж/д, отправленные в таможню и зарегистрированные можно запросом
SELECT Msg FROM EDMsgs WHERE MessageType='CMN.12015' and Status=3
Дальше уже смотрите что именно из него вам надо вытащить, инструменты для работы с XML есть в любой современной СУБД.
Или есть еще один вариант, попроще. Пришлите нам на почту образец отчета который надо получить (в виде Excel), а мы вам его нарисуем и подключим в программу
Получить все XML-документы типа ПИ ж/д, отправленные в таможню и зарегистрированные можно запросом
SELECT Msg FROM EDMsgs WHERE MessageType='CMN.12015' and Status=3
Дальше уже смотрите что именно из него вам надо вытащить, инструменты для работы с XML есть в любой современной СУБД.
Или есть еще один вариант, попроще. Пришлите нам на почту образец отчета который надо получить (в виде Excel), а мы вам его нарисуем и подключим в программу
Следующие пользователи поблагодарили Nick за это собщение: SBOdin
- Nick
- Аксакал
- Сообщения: 734
- На форуме: c 02 фев 2005
- Откуда: Альта-Софт, Программист
Сказал: 13 ед.
Получил: 124 ед.
Получил: 124 ед.
Re: Помогите написать SQL запрос к базе ГТД.
Q: Существует ли возможность при помощи docs2sql, вытащить информацию Артикул (не товара) и таможенную стоимость артикула? У каждой ДТ есть связанный инвойс и хотелось бы делать такой запрос через SQL (например Access), так как работа рутинная.
A: Из Docs2SQL не получится, потому что она отображает ГТД, а в ней артикулы с одинаковым кодом ТНВЭД уже сплющены в один товар. Смотреть на стоимость по-артикульно (и на платежи, кстати) можно выгружая исходный документ Инвойс. Почитать про выгрузку инвойса можно здесь.
A: Из Docs2SQL не получится, потому что она отображает ГТД, а в ней артикулы с одинаковым кодом ТНВЭД уже сплющены в один товар. Смотреть на стоимость по-артикульно (и на платежи, кстати) можно выгружая исходный документ Инвойс. Почитать про выгрузку инвойса можно здесь.