Чтение XML-документов в 1С: как открывать файлы, способы их записи и преобразования в структуру
Работа с учетными программами представляет собой совокупность ежедневного выполняемых рутинных процессов. Использование сразу нескольких систем, отличающихся форматами хранения данных, обуславливает потребность в наличии универсального способа обработки. Подобным вариантом, оказывающим помощь в выгрузке, передаче и последующей загрузке информации в базу стал расширяемый язык разметки eXtensible Markup Language, рекомендованный к применению W3C (Консорциум Всемирной Паутины). Сегодня предприятия, пользующиеся стандартизированными библиотеками, имеют возможность в кратчайшие сроки реализовывать процесс обмена — создание, чтение и запись файлов XML, преобразуемых в структуру 1С, позволяет решить многие актуальные задачи.
Общее представление
Одним из главных преимуществ, отличающих рассматриваемую спецификацию, принято считать удобство и интуитивную понятность предлагаемого синтаксиса. Целью разработчиков являлось создание универсального языка разметки, одинаково комфортного для прочтения как машинными алгоритмами, так и непосредственными пользователями. Несмотря на внушительный по меркам индустрии возраст, релиз состоялся еще в 1998 году — стандарт по-прежнему остается одним из наиболее востребованных и популярных способов адаптации данных.
Для прочтения написанной процедурой объектов достаточно передать путь к заданному документу, используя либо интерфейс, позволяющий вручную указывать место хранения, либо текст обработки, в котором точно прописывается актуальный маршрут. В рамках 1С работа с XML файлами зачастую реализуется с помощью объектной модели DOM — при условии, что размер элемента не превышает 100 МБ. Схема предусматривает последовательную проверку каждого представленного узла и на практике выглядит следующим образом:
- Объявление механизмов, применяемых для чтения.
- Определение цикла поочередного обхода.
- Считывание данных и их атрибутов.
- Представление информации, включая опцию записи в таблицы или переменные.
- Завершение процесса.
Результатом обработки, выполненной таким способом, становится вывод сообщений, содержащих импортированные сведения. При необходимости есть возможность заполнить заданную структуру и использовать ее для дальнейшей генерации документов и справочных записей. Стоит отметить, что функциональные возможности 1С позволяют быстро прочитать XML файл, что обуславливает популярность формата в тех случаях, когда требуется оперативный обмен данными со смежными источниками.
Механизм XDTO
В целях обеспечения доступности рассматриваемой методики разработчики учетной программы интегрировали собственную конфигурацию — Data Transfer Objects. В редакциях 8.1 и выше опция трансфера доступна по умолчанию, и позволяет пользователям не вдаваться в специфику формирования файловых объектов. За технические нюансы отвечает непосредственно платформа 1С, тогда как взаимодействующим с ней сотрудникам остается только указать информацию, требующую обработки. Правда, стоит учесть, что для полноценной реализации новой функции потребуется выполнение ряда специфических манипуляций.
Загрузка с помощью XDTO возможна после сообщения учетной программе его структуры, для передачи которой используется набор схем. Они создаются как с помощью специального приложения, так и в обычном текстовом редакторе. Итоговый документ должен описывать содержание и типы данных, которые будут использованы объектом. Перед тем как записать XML файл в 1С, схематическое описание загружается в общую конфигурацию, в раздел «Пакеты».
Самый простой вариант — создание вручную. Достаточно отразить наличие головного элемента и вложения с определенными атрибутами, экспортировать получившуюся в результате набора структуру в формат xsd, и передать ее второй стороне, исключая необходимость повторной генерации XDTO. Для сохранения новых версий на жестком диске применяется типовой серверный алгоритм, при этом следует учитывать, что сведения добавляются отдельно по каждой позиции, а при увеличении количества уровней вложения описывать придется все заголовки.
Готовые решения для всех направлений
Ускорьте работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.
Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.
Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя
Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.
Повысьте точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.
Повысьте эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.
Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.
Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.
Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..
Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.
Считывание файла средствами внутреннего языка
Максимально простая процедура, для реализации которой создается объект ЧтениеXML — 1С, заранее получившая необходимую информацию, раскладывает содержание полученного документа по нужным разделам.
Особенности записи данных
В целях оперативного выполнения подобной операции платформой осуществляется отдельная обработка. Пользователь открывает учетную программу, авторизуется и последовательно выбирает разделы «Файл — выгрузка», указывая конкретную область сохранения документа — жесткий или съемный накопитель — а также требуемый формат. Стоит отметить, что скорость во многом зависит от размера объекта, так что перед запуском очередного цикла следует уточнить, какую именно информацию нужно выгрузить. Программа допускает слияние путем добавления новых позиций — в этом случае в качестве конечного указывается уже существующий элемент, либо используется буфер.
Выгрузка с помощью XDTO
Пакет представляет собой объект метаданных, предназначенный для обмена с использованием рассматриваемого формата. Его задача — создание понятной системе структуры, которая в дальнейшем будет использоваться ею в процессе выгрузки. Альтернативное решение — уже упомянутое применение файлового структурирования, при котором параметры задаются вручную. В обоих случаях завершение процедуры, означающее определение схемы, позволяет перейти к созданию документов любой сложности.
Как программно создать файл XML в 1С
Взаимодействие с документацией реализуется непосредственно через встроенный системный язык. Функционал, предлагаемый разработчиками начиная с версии 8.1, позволяет:
- Последовательно считывать и записывать информацию.
- Преобразовывать строки, выбранные из текстового содержания или значения атрибута, в заданный тип.
- Формировать строковое атрибутное представление для размещения в тексте.
- Получать формат, соответствующий переданному типовому параметру.
- Проверять возможность прочтения и соответствие структуре по умолчанию.
- Применять функцию «записатьXML» и возвращать тип данных.
- Использовать модель схемы и объектного доступа DOM, соответствующую стандартам Level 2, XPath и Load and Save, а также канонической версии 1.1 Canonical.
Используя внешнее соединение, механизмы работы и преобразования, можно организовывать интеграцию с прикладным обеспечением в соответствии с принятыми форматами.
Как осуществляется перенос между базами
Разработчики предлагают для решения подобной задачи форму 1С: Конвертация, основывающуюся на использовании стандартных файлов XML. Алгоритм процедуры предусматривает предварительное формирование пользователем документа, содержащего перечень последовательных правил, на основе которых и будет выполняться заданная операция. Программный продукт обеспечивает оперативный трансфер как между идентичными, так и между различными по типологии конфигурациями. В первом случае продолжительность процесса составляет не более часа, тогда как в остальных придется ждать чуть дольше.
Локализация баз данных в одном месте, равно как и наличие доступа сразу к нескольким хранилищам, обеспечивает возможность использования механизма OLE. Это достаточно удобная заготовка, в ходе которой реализуется прямая файловая транзакция, что не слишком сокращает время обработки, но при этом сводит к нулю вероятность возникновения ошибок. Нужно учитывать, что технология не подходит для применения в тех случаях, когда речь идет о распределенных областях хранения.
Еще один, пожалуй, самый распространенный метод — файловый перенос. Простота и удобство обуславливаются возможностью использования любых форматов, включая doc, xls или dbf, однако на практике удобнее всего открыть в 1С файл XML, так как его структура позволяет сразу распределить информацию в соответствии с заданной схемой. Алгоритм укладывается в три последовательных операции: выгрузка, передача, загрузка. При этом фактическое местонахождение пользователей не имеет значения, что делает способ абсолютно универсальным. Небольшие размеры формируемых документов позволяют передавать их онлайн, через съемные носители или облачные сервисы хранения.
Из минусов, характерных для файлового метода, выделяют только два аспекта. Первый — необходимость наличия у юзера хотя бы начального уровня знаний и практических навыков работы с платформой. Второй — потребность в написании двух обработок, с помощью которых 1С и будет выгружать и загружать передаваемые данные.
Как правильно сформировать XML-документ произвольной структуры
Многие специалисты индустрии IT скрупулезно подходят к вопросу формирования файлов рассматриваемого стандарта, поскольку любые несоответствия, выявляемые программой в ходе прочтения, делают реализацию заданного процесса невозможной. В первую очередь это касается грамотного использования синтаксиса — так, например, несоблюдение порядка применения открывающих и закрывающих тегов приведет к появлению ошибки в тот момент, когда приложение получит команду его обработки.
На самом деле спецификация, определяющая правила корректного составления подобных схем и описаний, достаточно проста, и не требует особых пользовательских навыков. Можно сказать, что сегодня она даже не рассматривается в качестве обязательной для детального изучения, поскольку для создания нужных файлов всегда можно использовать встроенные программные механизмы или отдельные конфигураторы. В то же время нельзя не учитывать критичность ошибок, исключающих открытие документов другими приложениями и системными элементами.
Одно из преимуществ XML — отсутствие зависимости от конкретной платформы. Любая программа, предназначенная для обработки подобных объектов, способна считывать и использовать содержащуюся в них информацию, невзирая на то, какое оборудование или операционная система имеются в распоряжении пользователя. Так, например, грамотное применение структуры тегов позволяет открывать и обрабатывать данные, полученные с сервера, при помощи различных офисных приложений. Подобная совместимость во многом обуславливает популярность технологии в тех случаях, когда требуется быстрые трансферы между базами и компьютерами сети.
Стандартный алгоритм файловой генерации представляет собой следующую последовательность действий:
- Инициализация в 1С нового класса «ЗаписьXML», к примеру, с идентичным наименованием.
- Открытие временного файла и запись объявления.
- Заполнение содержания, с обязательным указанием начала и конца элемента.
- Запись и закрытие полученного объекта.
По умолчанию сгенерированный документ будет переведен в двоичные данные и вернется в место вызова функции создания, после чего может сохраняться в файловой структуре.
Преобразование объекта XDTO в текст
В ходе интеграции информационных систем, реализуемом с помощью вспомогательных сервисов, возможно появление необходимости в переводе пакета в текстовый вид — к примеру, с целью сохранения обменных логов. В подобной ситуации целесообразно придерживаться следующего алгоритма действий:
- Создать типовой файл записи.
- Отметить, что XML должно выводиться в строку 1С.
- Записать объект XDTO в элемент.
- Завершить процесс, получив результирующий вывод.
При этом нужно учитывать, что используемая пакетная переменная данных содержит информацию в формате, соответствующем одной из конфигураций, предложенных по умолчанию. В тех случаях, когда от платформы поступает запрос в сторону внешнего сервиса, предоставляющего динамическое описание, есть вероятность ошибки кода, обуславливаемой отсутствием в механизме сведений о структуре. Решение проблемы — замена в содержании элемента «ФабрикаXDTO» на «Прокси.ФабрикаXDTO», где последний является объектом типа WSПрокси, обеспечивающим обращение к ресурсу.
Формирование файла XML. Простая выгрузка для стороннего приложения
В организации учет может вестить не только в решениях на платформе 1С:Предприятие, но и в других программным комплексах (Галактика, Парус, SAP и прочее). При этом появляются задачи интеграции двух приложений.
Напрмер, в некотором приложении (назовем его «X») требуется прочитать список документов конфигурации. О практической пользе решения подобной задачи говорить не будем, отмечу лишь, что наиболее удобным и универсальным способом в такой ситуации будет выгрузка списка документов в формате XML .
Обмен с использованием этого формата является универсальным, поскольку с ним могут работать большинство приложений. Рассмотрим как можно из 1С:Предприятия выгрузить список документов конфигурации в XML-файл.
Выгрузка в XML
И так, перейдем к главному. Нам нужно обойти список метаданных документов и сформировать список в XML-файле. На следующем скриншоте представлен алгоритм формирования XML-файла:
Каждый созданный элемент должен быть правильно завершен. После выполнения «ЗаписатьНачалоЭлемента()» обязательно должен быть выполнен метод «ЗаписатьКонецЭлемента», иначе структура XML-файла будет некорректной.
Общий шаблон создания XML-файлов предсавляет собой следующую последовательность:
С помощью этих пяти шагов создается практически любой XML-файл.
В нашем примере созданный файл переводится в двоичные данные и возвращается в место вызова функции «СоздатьXML». Далее этот файл может быть записан в файловую систему.
Пример выгруженного файла Вы могли видеть на скриншоте выше.
Стороннее приложение
Для примере создал приложение на .NET Framework, чтобы продемонстрировать чтенеие XML-файла в стороннем приложении.
Програма читает созданный файл и выводит документы в виде списка:
Можете попробовать сами, приложение доступно для загрузки по ссылке в конце статьи.
Универсальность
Формат XML используется в большинстве конфигурации обмена данными между прикладными решениями на платформе 1С:Предприятие. Другим часто используемым способом обмена является подключение через COM-соединение. XML-позволяет выполнять обмен практически с любыми приложениями, чем и заслужил называться универсальным.
Формат документа XML в 1C
В платформе системы 1С: Предприятие существует специальный встроенный язык, который помогает работать с документами в формате XML 1С. Ниже представлено, как документы с таким форматом отображаются в системе:
При помощи этого встроенного языка 1С Предприятие, как раз, можно делать следующее с файлами формата XML 1С:
· По порядку, с чёткой структурой, записывать и считывать документы в формате XML 1С;
· Задействовать способы по объектному доступу к информации внутри документации с форматом «XML»;
· Работать по объектной модели со схемой «XML»;
· Внедрять и использовать стандарт XML 1.1.
При помощи внешнего соединения есть возможность делать различные интеграции, которые будут использовать документы в формате XML 1С. Возможность таких интеграций обеспечивает механизм «XSL-преобразование». К примеру, даже сервер «Microsoft» можно использовать в этой схеме таким образом:
Также, платформа системы 1С: Предприятие даёт возможность работать с документацией формата «XML» в виде бинарного формата «Fast Infoset». Данный формат является основным и задействует дополнительные инструменты для отображения синтаксиса данных в формате «XML». При помощи формата «Fast Infoset» объём файлов будет меньшим, а скорость работы с документами и их загрузка более высокие. Если для работы с XML был использован в 1С формат «Fast Infoset», то у результирующего документа будет расширение «.finf» или «.fi».
2. Выгрузка документов в формате «xml» для отправки контрагентам
Одним из продуктов системы 1С является «1С: Электронный документооборот» («1С: ЭДО»), при помощи этой конфигурации можно просто отправлять и получать различную документацию в электронном формате.
Для начала, следует открыть необходимый документ и кликнуть на «Ещё», после чего избрать пункт «ЭДО» и нажать на «Выгрузить документ в файл 1С», как демонстрируется на скриншоте с примером ниже:
Появится окно, в нём, нужно выбрать пункт выгрузки «На диск» и нажать на кнопку «Выполнить», как можно увидеть далее:
Следующим шагом нам необходимо избрать в какое место на диске сохранится наш документ, который уже находится в формате «xml». В случае выгрузки документа в «облако» — нужно выбрать папку «Общее», чтобы осталась возможность загружать туда и файловые данные, и папки, это показано на скриншоте ниже:
После этого, наш документ в формате XML 1С будет помещён в архив и сохранён.
3. Формирование файлов в формате XML в программе системы 1С Предприятие
У программы системы 1С Предприятие есть много интеграций с другими программами, пусть требуется для какого-то приложения прочесть перечень документации из программы системы 1С Предприятие. Для такой задачи более удачным решением будет выгрузить перечень документации в формате «XML».
Получаем, что выгрузка должна выглядеть каким-то подобным образом:
Чтобы выгрузить документы в формате «xml» из платформы системы 1С: Предприятие — необходимо избежать перечня с метаданными от данной документации, а также создать отдельный перечень с документацией в файле с форматом «XML». Ниже показан программный код 1С, который поможет сформировать файл формата XML 1С:
Также, можно определить стандартный алгоритм для того, чтобы создавались файлы формата XML 1С, он будет иметь такой вид:
Такие шаги обеспечат «превращение» какого-либо документа в файл формата XML 1С.
При помощи программного кода мы превращали документ из платформы системы 1С Предприятие в код двоичного вида, а затем уже в файл с форматом «XML».
Прикладной уровень взаимодействия
Данный уровень позволяет обмениваться любыми исходящими и входящими электронными документами, которые возникают в процессе взаимодействия Клиента, работающего в системе «1С:Предприятие 8», и Банка.
Порядок обмена электронными документами
Отправителем и получателем электронного документа могут быть как Клиент (Организация), работающий в системе «1С:Предприятие 8», так и Банк (роли участников обмена зависят от конкретной бизнес-операции). При этом инициатором обмена всегда выступает система «1С:Предприятие 8».
Общий принцип работы на прикладном уровне может быть представлен в виде схемы:
Отправка платежного документа и изменение статусов.
- В «1С:Предприятии 8» формируется электронный документ «Платежное поручение» (XML-файл с бизнес данными, соответствующий XML-схеме платежного поручения) или «Платежное требование» (XML-файл с бизнес данными, соответствующий XML-схеме платежного требования).
- Если используется электронная подпись на стороне «1С:Предприятия 8» (см. раздел «Обеспечение безопасности данных»), то система предложит пользователю подписать электронный документ.
- Электронный документ с электронной подписью (если используется, см. раздел «Обеспечение безопасности данных») помещаются в транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне).
- Далее передача данных в Банк проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- При этом происходит изменение статусов:
- Если отправка прошла успешно, то система «1С:Предприятие 8» изменит статус электронному документу на «Отправлен».
- После получения из Банка ответа по результатам обработки транспортного контейнера система «1С:Предприятие 8» назначит электронному документу статус «Доставлен».
- По результатам контроля и первичной обработки электронного документа на стороне Банка формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий либо ошибку обработки, либо текущий статус электронного документа, и готовится к отправке.
- После получения информации о статусе электронного документа или ошибки обработки на стороне Банка система «1С:Предприятие 8» назначит соответствующий статус электронному документу.
- Статус «Подтвержден» электронному документу «1С:Предприятие 8» назначит только после получения электронного документа «Выписка банка», в которой будет соответствующая операция (OperationInfo.ExtID = PayDocRu.Id).
Пример XML-файла платежного поручения
Пример XML-файла платежного требования
Получение выписки банка и изменение статусов
- В «1С:Предприятии 8» формируется электронный документ «Запрос выписки банка» (XML-файл, соответствующий XML-схеме запроса на выписку).
- Если используется электронная подпись на стороне «1С:Предприятия 8» (см. раздел «Обеспечение безопасности данных»), то система предложит пользователю подписать электронный документ.
- Электронный документ «Запрос выписки банка» и электронная подпись (если используется) помещаются в транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне).
- Далее передача данных в Банк проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- При этом происходит изменение статусов:
- Если отправка прошла успешно, то система «1С:Предприятие 8» изменит статус электронному документу на «Отправлен».
- После получения из Банка ответа по результатам обработки транспортного контейнера система «1С:Предприятие 8» назначит электронному документу статус «Доставлен».
- По результатам контроля и первичной обработки электронного документа на стороне Банка формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий либо ошибку обработки, либо текущий статус электронного документа, и готовится к отправке. После получения информации о статусе электронного документа или ошибки обработки на стороне Банка система «1С:Предприятие 8» назначит соответствующий статус электронному документу.
Пример XML-файла запроса выписки
Пример XML-файла выписки банка
Получение состояния электронного документа
На любом из этапов работы с электронным документом на стороне Банка может возникнуть ошибка обработки, о которой надо проинформировать Клиента. — Банковская система формирует электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий ошибку обработки. — Если используется электронная подпись (см. раздел «Обеспечение безопасности данных»), то электронный документ подписывается. — Затем создает транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера) и ставит в очередь на передачу в «1С:Предприятие 8». — Далее получение данных из Банка проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне». — После получения информации об ошибке обработки на стороне Банка, система «1С:Предприятие 8» назначит соответствующий статус электронному документу с пояснением причины отказа в обработке Банком.
Пример XML-файла извещения о состоянии электронного документа
Запрос состояния электронного документа
На любом из этапов работы с электронным документом на стороне Клиента может возникнуть потребность узнать актуальное состояние электронного документа в Банке.
- По команде в «1С:Предприятии 8» формируется электронный документ «Запрос о состоянии электронного документа» (XML-файл, соответствующий XML-схеме запроса о состоянии).
- Если используется электронная подпись на стороне «1С:Предприятия 8» (см. раздел «Обеспечение безопасности данных»), то система предложит пользователю подписать электронный документ.
- Электронный документ с электронной подписью (если используется, см. раздел «Обеспечение безопасности данных») помещаются в транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне).
- Далее передача данных в Банк проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- Если отправка прошла успешно, то система «1С:Предприятие 8» изменит статус электронного документа запрос на «Отправлен».
- После получения из Банка ответа по результатам обработки транспортного контейнера система «1С:Предприятие 8» назначит электронному документу запроса статус «Доставлен».
- Если по результатам контроля и первичной обработки электронного документа на стороне Банка выявляется ошибка, то формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий ошибку обработки запроса, и готовится к отправке. После получения ошибки обработки из Банка система «1С:Предприятие 8» назначит соответствующий статус запросу.
- Если запрос корректный, то на стороне Банка выполняется запрос на получение актуального статуса исходного электронного документа, затем формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий 2 идентификатора (ИД исходного электронного документа и ИД запроса), а также, либо ошибку обработки исходного электронного документа, либо его текущий статус.
- Если используется электронная подпись (см. раздел «Обеспечение безопасности данных»), то электронный документ извещения подписывается.
- Банковская система формирует транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне) и ставит в очередь на передачу в «1С:Предприятие 8».
- Далее получение данных из Банка проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- Текущий статус исходного электронного документа и статус запроса система «1С:Предприятие 8» назначит после успешного разбора входящего транспортного контейнера из Банка.
Пример XML-файла запроса состояния электронного документа
Запрос об отзыве электронного документа
На стороне Клиента может возникнуть потребность направить запрос об отзыве электронного документа, ранее переданного в Банк.
- По команде в «1С:Предприятии 8» формируется электронный документ «Запрос об отзыве электронного документа» (XML-файл, соответствующий XML-схеме запроса об отзыве), пользователь может указать причину отзыва документа.
- Если используется электронная подпись на стороне «1С:Предприятия 8» (см. раздел «Обеспечение безопасности данных»), то система предложит пользователю подписать электронный документ.
- Электронный документ «Запрос об отзыве электронного документа» помещается в транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне).
- Далее передача данных в Банк проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- Если отправка прошла успешно, то система «1С:Предприятие 8» изменит статус электронного документа запрос на «Отправлен».
- После получения из Банка ответа по результатам обработки транспортного контейнера система «1С:Предприятие 8» назначит электронному документу запроса статус «Доставлен».
- Если по результатам контроля и первичной обработки электронного документа на стороне Банка выявляется ошибка, то формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий ошибку обработки запроса, и готовится к отправке. После получения ошибки обработки из Банка система «1С:Предприятие 8» назначит соответствующий статус запросу.
- Если запрос корректный, то на стороне Банка определяется, возможен ли отзыв исходного электронного документа и если возможен, то электронный документ аннулируется, если нет, то готовится описание ошибки выполнения запроса об отзыве. Затем формируется электронный документ «Извещение о состоянии электронного документа» (XML-файл, соответствующий XML-схеме извещения о состоянии электронного документа), содержащий 2 идентификатора (ИД исходного электронного документа и ИД запроса), а также, либо ошибку обработки запроса, либо тек. статус исходного электронного документа — «Аннулирован».
- Если используется электронная подпись (см. раздел «Обеспечение безопасности данных»), то электронный документ извещения подписывается.
- Банковская система формирует транспортный контейнер (XML-файл, соответствующий XML-схеме транспортного контейнера), согласно настройкам обмена между Клиентом и Банком (в частности, применение сжатия данных на прикладном уровне) и ставит в очередь на передачу в «1С:Предприятие 8».
- Далее получение данных из Банка проходит согласно протоколу, описанному в разделе «Порядок взаимодействия на транспортном уровне».
- Текущий статус исходного электронного документа и статус запроса система «1С:Предприятие 8» назначит после успешного разбора входящего транспортного контейнера из Банка.
Пример XML-файла запроса состояния электронного документа
Описание формата документа Поручение на перевод валюты (ISO 20022)
Элемент Описание элемента Тип Мн. CstmrCdtTrfInitn CustomerCreditTransferInitiationV03 [1] GrpHdr Секция: Реквизиты сообщения GroupHeader32 [1] MsgId Уникальный идентификатор сообщения. Max35Text [1] CreDtTm Дата и время формирования сообщения. ISODateTime [1] NbOfTxs Общее число поручений в сообщении.
Всегда содержит значение 1.Max15NumericText [1] InitgPty Секция: Иницииатор(отправитель) сообщения.
Всегда пустое.PartyIdentification32 [1] PmtInf Секция: Реквизиты распоряжения по дебету (списания).
Всегда состоит из одного элемента.PaymentInstructionInformation3 [1..n] PmtInfId Уникальный идентификатор распоряжения.
Такое же значение должна содержать операция в выписке в поле BkToCstmrStmt.Stmt.Ntry.NtryDtls.TxDtls.Refs.MsgId.Max35Text [1] PmtMtd Всегда содержит значение «TRF» PaymentMethod3Code [1] ReqdExctnDt Дата исполнения. ISODate [1] Dbtr Секция: Плательщик PartyIdentification32 [1] Nm Наименование Max140Text [0..1] PstlAdr Секция: Адрес PostalAddress6 [0..1] PstCd Индекс Max16Text [0..1] TwnNm Город Max35Text [0..1] Ctry Код страны CountryCode [0..1] AdrLine Адрес.
Может содержать только один элемент.Max70Text [0..n] Id Секция: идентификация участника платежа Party6Choice [0..1] OrgId Секция: идентификация компании OrganisationIdentification4 [1] Othr Секция: иной вид идентификации
Может содержать только один элементGenericOrganisationIdentification1 [0..n] Id ИНН Max35Text [1] SchmeNm Секция: идентификация вида кода OrganisationIdentificationSchemeName1Choice [0..1] Cd Код типа данных в поле Id
Всегда содержит значение «TXID»ExternalOrganisationIdentification1Code [1] CtryOfRes Код страны регистрации CountryCode [0..1] CtctDtls Секция: контактная информация ContactDetails2 [0..1] Nm ФИО Max140Text [0..1] PhneNb Телефон PhoneNumber [0..1] EmailAdr Email адрес Max2048Text [0..1] DbtrAcct Секция: Счет плательщика CashAccount16 [1] Id Секция: идентификатор счета AccountIdentification4Choice [1] Othr Секция: другой тип счета GenericAccountIdentification1 [1] Id Cчет Max34Text [1] SchmeNm Секция: тип счета AccountSchemeName1Choice [0..1] Cd Вид счета.
Всегда содержит значение «BBAN»ExternalAccountIdentification1Code [1] DbtrAgt Секция: Банк плательщика BranchAndFinancialInstitutionIdentification4 [1] FinInstnId Секция: идентификация банка FinancialInstitutionIdentification7 [1] BIC SWIFT BICIdentifier [0..1] Nm Наименование Max140Text [0..1] PstlAdr Секция: Адрес PostalAddress6 [0..1] TwnNm Город Max35Text [0..1] AdrLine Адрес.
Может содержать только один элемент.Max70Text [0..n] ChrgBr С кого списывается комиссия.
Возможные значения: «CRED», «DEBT», «SHAR»ChargeBearerType1Code [0..1] ChrgsAcct Секция: счет комиссии. CashAccount16 [0..1] Id Секция: идентификатор счета AccountIdentification4Choice [1] Othr Секция: другой тип счета GenericAccountIdentification1 [1] Id Счет Max34Text [1] SchmeNm AccountSchemeName1Choice [0..1] Cd Всегда содержит значение «BBAN» ExternalAccountIdentification1Code [1] CdtTrfTxInf Секция: Реквизиты по кредиту (зачисления).
Всегда содержит один элемент.CreditTransferTransactionInformation10 [0..n] PmtId Секция: идентификаторы платежа PaymentIdentification1 [1] InstrId Уникальный номер поручения Max35Text [0..1] EndToEndId Номер платежного поручения Max35Text [1] PmtTpInf Секция: тип платежа PaymentTypeInformation19 [0..1] Amt Секция: сумма платежа AmountType3Choice [1] InstdAmt Сумма ActiveOrHistoricCurrencyAndAmount [1] @Ccy Валюта перевода ActiveOrHistoricCurrencyCode [1] XchgRateInf Секция:курс конверсии ExchangeRateInformation1 [0..1] XchgRate Курс BaseOneRate [0..1] RateTp Тип курса.
Всегда имеет значение «SPOT»ExchangeRateType1Code [0..1] IntrmyAgt1 Секция: Банк посредник BranchAndFinancialInstitutionIdentification4 [0..1] FinInstnId Секция: идентификация банка FinancialInstitutionIdentification7 [1] BIC SWIFT BICIdentifier [0..1] Nm Наименование банка Max140Text [0..1] PstlAdr Секция: Адрес PostalAddress6 [0..1] Ctry Код страны CountryCode [0..1] AdrLine Адрес.
Может содержать только один элементMax70Text [0..n] CdtrAgt Секция: Банк получателя BranchAndFinancialInstitutionIdentification4 [0..1] FinInstnId Секция: идентификация банка FinancialInstitutionIdentification7 [1] BIC SWIFT BICIdentifier [1] ClrSysMmbId Секция: идентификация участника клиринга ClearingSystemMemberIdentification2 [0..1] MmbId БИК Max35Text [1] Nm Наименование Max140Text [0..1] PstlAdr Секция: Адрес PostalAddress6 [0..1] Ctry Код страны CountryCode [0..1] AdrLine Адрес банка.
Может содержать только один элемент.Max70Text [0..n] CdtrAgtAcct Счет банк посредника получателя CashAccount16 [0..1] Id Секция: идентификация счета Max34Text [1] Othr Секция: не IBAN счет Max34Text [1] Id Счет Max34Text [1] SchmeNm AccountSchemeName1Choice [0..1] Cd Всегда содержит значение «BBAN» ExternalAccountIdentification1Code [1] Cdtr Секция: Получатель PartyIdentification32 [0..1] Nm Наименование Max140Text [0..1] PstlAdr Секция: адрес PostalAddress6 [0..1] Ctry Код страны CountryCode [0..1] PstCd Индекс Max16Text [0..1] TwnNm Город Max35Text [0..1] AdrLine Неструктурированный адрес.
Может содержать только один элемент.Max70Text [0..n] Id Идентификатор получателя Party6Choice [0..1] OrgId OrganisationIdentification4 [1] Othr Может содержать только один элемент GenericOrganisationIdentification1 [0..n] Id ИНН получателя Max35Text [1] SchmeNm OrganisationIdentificationSchemeName1Choice [0..1] Cd Всегда содержит значение «TXID» ExternalOrganisationIdentification1Code [1] CtryOfRes Код страны получателя CountryCode [0..1] CtctDtls Контактная информация организации получателя ContactDetails2 [0..1] Nm ФИО Max140Text [0..1] PhneNb Телефон PhoneNumber [0..1] EmailAdr Email адрес Max2048Text [0..1] CdtrAcct Секция: Счет получателя CashAccount16 [1] Id Счет AccountIdentification4Choice [1] Othr Секция: другой тип счета GenericAccountIdentification1 [1] Id Номер счета Max34Text [1] SchmeNm AccountSchemeName1Choice [0..1] Cd Всегда содержит значение «BBAN» ExternalAccountIdentification1Code [1] RgltryRptg Секция: информация для регулятора RegulatoryReporting3 [0..n] Dtls StructuredRegulatoryReporting3 [0..n] Tp Всегда содержит значение «VO» Max35Text [0..1] Cd Код вида операции Max10Text [0..1] Amt Сумма ActiveOrHistoricCurrencyAndAmount [0..1] @Ccy Код валюты ActiveOrHistoricCurrencyCode [1] Inf Номер паспорта сделки Max35Text [0..n] RmtInf Секция: Информация о платеже RemittanceInformation5 [0..1] Ustrd Назначение платежа Max140Text [0..n] Strd Секция: Структурированная информация о платеже StructuredRemittanceInformation7 [0..n] RfrdDocInf Секция: Информация о связанных документах ReferredDocumentInformation3 [0..n] Tp Секция: Тип связанного документа ReferredDocumentType2 [0..n] CdOrPrtry ReferredDocumentType1Choice [1] Prtry Тип документа.
Всегда имеет значение «POD»Max35Text [1] Nb Номер документа Max35Text [0..1] RltdDt Дата документа ISODate [0..1] Описание формата документа Выписка банка в валюте (ISO 20022)
Элемент Описание элемента Тип Мн. BkToCstmrStmt BankToCustomerStatementV02 [1] GrpHdr Секция: Заголовок GroupHeader42 [1] MsgId Системный идентификатор сообщения. Max35Text [1] CreDtTm Дата и время создания сообщения системой. ISODateTime [1] AddtlInf Идентификатор запроса выписки. Max500Text [0..1] Stmt Секция: Выписка по счету AccountStatement2 [1..n] Id Системный идентификатор выписки. Max35Text [1] CreDtTm Дата / время создания выписки. ISODateTime [1] FrToDt Секция: Период выписки DateTimePeriodDetails [0..1] FrDtTm Дата начала периода ISODateTime [1] ToDtTm Дата конца периода ISODateTime [1] Acct Секция: Реквизиты счета, владелеца, обслуживающего банка CashAccount20 [1] Id Секция: Идентификация организации AccountIdentification4Choice [1] IBAN IBAN IBAN2007Identifier [1] Othr Секция: другие идентификаторы GenericAccountIdentification1 [1] Id Номер счета Max34Text [1] Nm Наименование организации Max70Text [0..1] Ownr Секция: владелец счета PartyIdentification32 [0..1] Nm Наименование владельца счета Max140Text [0..1] Id Секция: Идентификация владельца счета Party6Choice [0..1] OrgId Секция: Идентификация организации OrganisationIdentification4 [1] Othr Секция: Другие реквизиты.
Должен содержать только один элементGenericOrganisationIdentification1 [0..n] Id ИНН / КИО владельца счета Max35Text [1] Svcr Секция: Обслуживающий банк BranchAndFinancialInstitutionIdentification4 [0..1] FinInstnId FinancialInstitutionIdentification7 [1] BIC SWIFT BICIdentifier [0..1] ClrSysMmbId ClearingSystemMemberIdentification2 [0..1] MmbId БИК банка/отделения обслуживающего счет Max35Text [1] Nm Наименование банка/отделения обслуживающего счет Max140Text [0..1] Bal Секция: Информация о балансах CashBalance3 [1..n] Tp BalanceType12 [1] CdOrPrtry BalanceType5Choice [1] Cd Тип баланса.
«OPBD» — начальный остаток
«CLBD» — конечный остатокBalanceType12Code [1] Amt Сумма остатка ActiveOrHistoricCurrencyAndAmount [1] @Ccy Код валюты ActiveOrHistoricCurrencyCode [1] TxsSummry Секция: Итоговая информация о транзакциях TotalTransactions2 [0..1] TtlCdtNtries Секция: Итоговая информация о транзакциях по кредиту NumberAndSumOfTransactions1 [0..1] Sum Обороты по кредиту DecimalNumber [0..1] TtlDbtNtries Секция: Итоговая информация о транзакциях по дебиту NumberAndSumOfTransactions1 [0..1] Sum Обороты по дебету DecimalNumber [0..1] Ntry Секция: Информация о транзакции (если были) ReportEntry2 [0..n] Amt Сумма операции ActiveOrHistoricCurrencyAndAmount [1] @Ccy Код валюты ActiveOrHistoricCurrencyCode [1] CdtDbtInd Индикатор Дебет (‘DBIT’) /Кредит (‘CRDT’) CreditDebitCode [1] Sts Статус операции Исполняется (‘PDNG’) / Исполнено (‘BOOK’) EntryStatus2Code [1] BookgDt Секция: дата отражения по выписке DateAndDateTimeChoice [0..1] Dt Дата ISODate [1] DtTm Дата и время ISODateTime [1] ValDt Секция: Дата валютирования DateAndDateTimeChoice [0..1] Dt Дата ISODate [1] DtTm Дата и время ISODateTime [1] AcctSvcrRef Идентификатор транзакции. Max35Text [0..1] BkTxCd Секция: Информация о типе транзакции BankTransactionCodeStructure4 [1] NtryDtls Секция: Детали строки выписки.
Должен содержать только 1 элементEntryDetails1 [0..n] TxDtls Секция: Детали транзакции.
Должен содержать только 1 элементEntryTransaction2 [0..n] Refs Секция: Референсы TransactionReferences2 [0..1] MsgId Идентификатор исходного документа Поручение на перевод валюты Max35Text [0..1] EndToEndId Номер документа Max35Text [0..1] RltdPties Секция: Реквизиты участников платежа TransactionParty2 [0..1] Dbtr Секция: Реквизиты плательщика PartyIdentification32 [0..1] Nm Наименование плательщика Max140Text [0..1] Id Секция: Идентификация плательщика Party6Choice [0..1] OrgId Секция: Идентификация организации OrganisationIdentification4 [1] Othr Секция: Другие реквизиты
Должен содержать только 1 элементGenericOrganisationIdentification1 [0..n] Id ИНН / КИО плательщика Max35Text [1] CtryOfRes Код страны CountryCode [0..1] DbtrAcct Секция: счет плательщика CashAccount16 [0..1] Id AccountIdentification4Choice [1] Othr Секция: Другие реквизиты GenericAccountIdentification1 [1] Id Номер счета плательщика Max34Text [1] Cdtr Секция: Реквизиты получателя PartyIdentification32 [0..1] Nm Наименование получателя Max140Text [0..1] Id Секция: Идентификация получателя Party6Choice [0..1] OrgId Секция: Идентификация организации OrganisationIdentification4 [1] Othr Секция: Другие реквизиты.
Должен содержать только 1 элементGenericOrganisationIdentification1 [0..n] Id ИНН / КИО получателя Max35Text [1] CtryOfRes Код страны CountryCode [0..1] CdtrAcct Секция: Cчет получателя CashAccount16 [0..1] Id AccountIdentification4Choice [1] Othr GenericAccountIdentification1 [1] Id Номер счета получателя Max34Text [1] RltdAgts Секция: Реквизиты банков TransactionAgents2 [0..1] DbtrAgt Секция: Реквизиты банка плательщика BranchAndFinancialInstitutionIdentification4 [0..1] FinInstnId FinancialInstitutionIdentification7 [1] BIC SWIFT банка плательшика BICIdentifier [0..1] Nm Наименование банка плательщика Max140Text [0..1] PstlAdr Адрес PostalAddress6 [0..1] Ctry Код страны CountryCode [0..1] CdtrAgt Секция: Реквизиты банка получателя BranchAndFinancialInstitutionIdentification4 [0..1] FinInstnId FinancialInstitutionIdentification7 [1] BIC SWIFT банка получателя BICIdentifier [0..1] Nm Наименование банка получателя Max140Text [0..1] PstlAdr Адрес PostalAddress6 [0..1] Ctry Код страны CountryCode [0..1] RmtInf Секция: Детали документа RemittanceInformation5 [0..1] Ustrd Назначение платежа, может быть более одного поля Max140Text [0..n] Strd Секция: Структурные детали StructuredRemittanceInformation7 [0..n] RfrdDocInf ReferredDocumentInformation3 [0..n] RltdDt Дата документа ISODate [0..1] Автоматическое получение выписки банка
При автоматическом получении выписки используется только базовая аутентификация. Логин и пароль сохраняются в информационной базе, поэтому данная учетная запись должна иметь строгое ограничение на стороне сервера банка: она должна иметь только право получения выписки. Запросы выписок при автоматическом получении не имеют электронной подписи.
Особенности автоматического получения выписки:
- Используется базовая аутентификация по отдельной ограниченной учетной записи.
- Запрос выписки отправляется каждый час.
- Период запроса определяется автоматически с даты последней операции по счету по текущий день.
- Период запроса выписки не может превышать 7 дней.
- Запрос выписки не имеет электронной подписи.
Порядок действий при очередной итерации получения выписки:
Таким образом после отправки система не ждет от банка выписки. Если после отправки запроса система банка не успела сформировать выписку, то она будет получена в следующем сеансе через один час.