Файл обмена Заполнителя
Файл обмена - текстовый файл формируемый программой Заполнитель для передачи данных в другие Альта-программы.
Содержание
Принцип работы
Передача данных из Заполнителя в программы экспорта производится посредством создания файла обмена в папке \IN\ рабочего каталога экспортной программы. Например С:\ALTA\IN\. Затем программа экспорта по команде от Заполнителя конвертирует этот файл в документ в своем внутреннем формате. В частности, "Альта-ГТД" создает документы, "Такса" наполняет список и т.д. После обработки файл удаляется. Поименование файлов идет по инкрементному принципу imp000.ini, imp001.ini, imp002.ini, .... При автоматическом вызове программы используется последний файл.
В зависимости от режима работы Заполнитель может формировать как один файл для создания одного документа, так и сразу несколько файлов для документов одного типа. Во втором случае к файлам устанавливается расширение .TMP
Структура файла
Файл обмена представляет из себя текстовый файл в кодировке Winows (cp1251, строки разделяются символами #13#10) со структурой w:INI-файла. Т.е. данные в файле организованы в виде секций, содержащих параметры со значениями:
[Секция1] Параметр1=Значение1 Параметр2=Значение2 [Секция2] Параметр1=Значение1 Параметр2=Значение2 ...
Перечень секций
- Первая обязательная секция имеет вид:
[Common] IncludedDoc=<ИМЯДОКУМЕНТА>\<ИМЯГЛАВНОГОБЛОКА>
,где
ИМЯДОКУМЕНТА - внутреннее краткое англоязычное наименование импортируемого документа; ИМЯГЛАВНОГОБЛОКА - внутреннее англоязычное название главного блока импортируемого документа.
Названия документов программы Альта ГТД для Windows можно посмотреть в файле \DATA\gtdwin.dcf, расположенном в рабочем каталоге программы Альта-ГТД. Это параметры DocFileExt= и MainBlock= из секций документов. Например, для документа инвойс секция [Common] имеет вид:
[Common] IncludedDoc=INV\block
- Вторая секция является необязательной и называется [ИМЯДОКУМЕНТА\ИМЯГЛАВНОГОБЛОКА.Header] В ней перечисляются данные для заголовка создаваемого документа, такие как реквизиты отправителя, получателя, номер документа и пр. Данные передаются в формате:
ИМЯПОЛЯ=ДАННЫЕ ДЛЯ ПОЛЯ Где: ИМЯПОЛЯ - латинский идентификатор поля документа в программе Альта ГТД. ДАННЫЕ ДЛЯ ПОЛЯ - собственно данные для заполняемой графы.
Узнать идентификатор можно несколькими способами. Например, если в программе Альта ГТД поставить курсор в нужное поле, то его идентификатор отображается в правом нижнем углу статусной строки. Список всех идентификаторов полей хранится в том же файле \DATA\gtdwin.dcf в секции [ИМЯДОКУМЕНТА.Fields] в строках сразу после начала секции.
Пример второй секции для документа Инвойс:
[INV\BLOCK.HEADER] INV_NUM=026/15 INV_DATE=13.11.02
При обработке такого файла в заголовке инвойса заполнятся 2 поля: номер инвойса и дата инвойса.
- Третья и последующие секции называются
[<ИМЯДОКУМЕНТА>\<ИМЯГЛАВНОГОБЛОКА>.Block<НОМЕРБЛОКА>] ,где НОМЕРБЛОКА - это порядковый номер товара в документе, начиная с 0.
Эти секции содержат данные для полей товара создаваемого документа в формате ИМЯПОЛЯ=ДАННЫЕ ДЛЯ ПОЛЯ. ИМЯПОЛЯ можно найти в файле \DATA\gtdwin.dcf в секции [ИМЯДОКУМЕНТА.Fields] внутри после строки, содержащей ИМЯГЛАВНОГОБЛОКА{&&NUM. Ниже приведен фрагмент \DATA\gtdwin.dcf для документа инвойс:
[INV.Fields] INV_NUM= 15 |Номер документа INV_DATE= 10 |Дата документа .... G44S= 16 |9.2-Nтов.в реестре G44DD= 10 |Дата предст. недост.док. BLOCK{&&NUM 7_NUM= 10 |Номер декларации, в которую будет экспортирован товар 32_NUM= 10 |Номер товара в создаваемой декларации 32_ID= 14 |Идентификационный номер товара 31_ARTICUL= 24 |Артикул товара ...... } ...
Поля, окрашенные красным, относятся к загловку инвойса, синие поля, вложенные в BLOCK{...}, относятся к товару инвойса.
Пример секций товаров для документа инвойс
[INV\block.Block0] 31_ARTICUL=GHS323 [INV\block.Block1] 31_ARTICUL=AA1555
При обработке такого файла, в документе инвойс будет создано 2 товара с заполненными полями Артикул. Количество последующих секций, т.е. товаров, не ограничено, но товары с номером большим, чем MaxExtraBlocks= из \DATA\gtdwin.dcf из секции [ИМЯДОКУМЕНТА.Header] не будут обработаны.
Дополнения (оборотные стороны) к графам
Для документов программы Альта ГТД помимо заголовка и данных товара, можно передавать данные для оборотных сторон. Синтаксис секций для обороток практически идентичен секциям, заполняющим данные о товаре. Только к имени основного блока через \ добавляется имя блока дополнения
[Common] IncludedDoc=<ИМЯДОКУМЕНТА>\<ИМЯГЛАВНОГОБЛОКА>\<ИМЯБЛОКАДОПОЛНЕНИЯ>
а в секциях описывающих записи дополнения, надо указать номер основного блока к которому относиться запись дополнения.
На примере документа ЭД2:Контракт
[Common] IncludedDoc=E2CONT\ContractSpecification\SpecificationGoods [E2CONT\ContractSpecification\SpecificationGoods.Header] [E2CONT\ContractSpecification\SpecificationGoods.Block0] ContractSpecification=1 GoodMarking=GHS323 [E2CONT\ContractSpecification\SpecificationGoods.Block1] ContractSpecification=2 GoodMarking=AA1555
Видно что в типе документа указан путь дополнения: ContractSpecification\SpecificationGoods т.е. основной блок Контракта - это спецификации (ContractSpecification), а уже к спецификациям добавляются списки в виде блоков товаров (SpecificationGoods). На основе этого файла будет создан контракт с двумя спецификациями. Артикул "GHS323" попадет в первую спецификацию, артикул "AA1555" - во вторую.
Один файл обмена теоретически может содержать несколько оборотных сторон для одного документа.
Примеры
Простой документ
Документ с двумя товарами. В шапке заполняются номер и дата документа.
[INV\BLOCK.HEADER] INV_NUM=026/15 INV_DATE=13.11.02 [INV\block.Block0] 31_ARTICUL=GHS323 31_QUNT=12 31_TEXT=ШТ [INV\block.Block1] 31_ARTICUL=AA1555 31_QUNT=11 31_TEXT=ШТ
Документ с дополнениями
Пример файла обмена для создания документа ГТД с оборотной стороной Контейнеры и Транспортные средства. В реальности в данный момент Заполнитель не умеет создавать такие файлы: программа может обрабатывать только одну таблицу за раз. Поэтому для создания документа с дополнениями надо сначала создать документ на основе таблицы с товарми, а потом отдельными операциями дозаполнить созданный документ дополнениями
[Common] IncludedDoc=GTD\block,GTD\Block\Kont,GTD\DKD [GTD\block.Header] 1_1=ИМ 1_2=40 [GTD\block.Block0] 31_NAME=ПЫЛЕСОС 33_1=8509101000 42_1=20 38_1=5 31=1- ПЫЛЕСОС КИТАЙ [GTD\block.Block1] 31_NAME=ГВОЗДОДЕР 33_1=8205599090 42_1=5.5 38_1=.25 31_COUNTRY=КИТАЙ 31=1- ГВОЗДОДЕР КИТАЙ [GTD\Block\Kont.Block0] BLOCK=1 CONT=КОНТ111 [GTD\Block\Kont.Block1] BLOCK=2 CONT=КОНТ222 [GTD\DKD.Block0] NGR=18 NTRANS=Е247ОН77 VIDTRANS=20 G212=643 [GTD\DKD.Block1] NGR=18 NTRANS=А456ВА99 VIDTRANS=20 G212=643
Данный пример создает ГТД с двумя дополнениями. Причем одно из них (котейнеры) потоварно.