Fastinfoset 1с что это
Перейти к содержимому

Fastinfoset 1с что это

  • автор:

Олег Клюкин
эксперт
по повышению доходности
оконного бизнеса

(965) 770-22-70

  • Экспертный блог >
  • Выгрузка и загрузка данных xml для 1с 8.3

Выгрузка и загрузка данных xml для 1с 8.3

Содержание

  1. Внешний вид обработки
  2. Выгрузка данных
  3. Загрузка данных
  4. Дополнительные настройки
  5. Удаление данных
  6. Коротко о настройке правил обмена
  7. Готовые решения для всех направлений

Внешний вид обработки

Управление торговлей невозможно представить без продукции компании 1С. На крупном предприятии или в масштабном бизнесе устанавливают разные версии программного обеспечения 1C. Чаще всего для работы устанавливают модули «Предприятие» и «Бухгалтерия». В утилите данные обрабатывают с помощью формата XML. Его можно выгрузить, например, в Excel, после чего посчитать параметры или провести аналитику. Но чаще всего данный файл используют, чтобы перенести информацию из одного модуля в другую.

Внешний вид обработки

Выгрузка и загрузка баз происходит внутри интерфейса 1С. Предусмотрено универсальное копирование, которое позволяет сделать обмен между разными модулями программной среды. Конвертация происходит в автоматическом режиме, без участия пользователя. Чаще всего процесс экспорта/импорта данных настраивает специалист со стороны. На старых версиях 1С файлы для копирования имеют расширения EPF. С ними не всегда удобно работать. Поэтому мы рекомендуем переходить на более свежие редакции 1С для решения любых задач.

Еще один вариант – установка специальной утилиты «Выгрузка и загрузка данных XML». Ее можно скачать на главной странице сайта компании 1С. У нас есть полная инструкция по работке с ней. Из статьи вы узнаете: как скачать, загрузить, править файл, редактировать разные типы данных в родственных версиях 1С. С ее помощью можно отправить документ, прайс, справочник, не используя эксель. Обработка происходит на одной платформе. Вы можете загрузить несколько документов и прочих объектов в один файл.

Выгрузка данных

Способ подходит для ПО версии 8.3 и выше. Конфигурация не влияет на процесс копирования. Также вам потребуется инсталлировать вышеуказанную утилиту. О более точных параметрах поговорим чуть ниже. Пока распишем способ по выгрузке данных:

  1. Перейдите в программу «1С Предприятие». Кликните «Открыть». Запустите обработку.
  2. В новом окне выберите формат данных: документы, константы, справочники, регистры накоплений, документы. Отметьте поля галочкой.
  3. Укажите, каким методом отбора из базы будет собрана отчетность: за период, срез первых на дату окончания, срез последних по дате начала или комбинация среза последних и первых.
  4. Задайте метод выгрузки: на сервер или личный ПК.
  5. Параметры установлены, база готова. Ее можно выгружать. Кликните «Выгрузить данные».

При указании метода выгрузки на ПК утилита сначала создает сам файл, а уже потом просит указать место для его хранения. Он требуется, например, если под рукой есть флешка, при этом сеть недоступна или не работает. Когда внешняя сеть доступна, проще отправить XML напрямую на сервер.

Загрузка данных

Файл на импорт создан, остается загрузить файл в XML формате. Для этого потребуется:

  1. Откройте новую базу в программе 1С 8.3, куда будет происходить импорт.
  2. Запустите «Выгрузка и загрузка данных XML» через «Файл», затем «Открыть». Идентичный способ, как при создании файла выгрузки.
  3. В новом окне выберите вкладку «Загрузка». После чего кликните по «Загрузить данные».
  4. Откроется стандартное окно с возможностью выбора файла. Укажите путь до XML базы, кликните «Открыть».
  5. Произойдет обмен данными между базами.

Таким образом можно скопировать все данные. Если вам необходимо перенести только часть данных, необходимо сделать точную отстройку.

Дополнительные настройки

Не всегда для работы требуется копировать множество объектов (пунктов). Проще сделать информационный отбор по тем параметрам, которые вам необходимы. Даем несколько практичных советов по калибровке загрузке и выгрузке:

  1. При выгрузке выставьте флажок напротив тех пунктов, которые требуется перенести. Например, только «контрагенты» и «контактные лица». Также вы можете выбрать дополнительный пункт во второй вкладке «Дополнительные объекты для выгрузки». Например, выставить параметры отображения реквизитов, указания имя сотрудника. Так можно сформировать частичную информационную политику для каждого работника, филиала или отделения.
  2. По умолчанию, в поле объекта, стоит галочка «Выгружать при необходимости». Она отмечает все выгружаемые пункты, чтобы сохранилась полная целостность информации при копировании. Если вы уверены, что какие-то сведения не потребуются – можете снять галочки с отдельных пунктов.
  3. Еще один важный пункт при импорте, это использование переноса «В формате FastInfoSet». Довольно неплохая альтернатива XML. Файл отчета занимает меньше места. В нем меньше ошибок. Он быстрее обрабатывается. Выставьте галочку напротив соответствующего пункта, если обе программы работают с данным расширением.
  4. Вы можете проверить выгрузку по отдельным пунктам через «Справочники». После формирования базы перейдите в «Справочники», после чего кликните на интересующий вас пункт.

Дополнительные настройки

На платформах версии «1С: Предприятие 7.7» и ниже создают специальный код (обработчика), который встраивают в код обработки выгрузки или загрузки. Он задает рекомендации на программном уровне. Управление табличных регистров – это трудоемкий процесс. Им занимается профессиональный отладчик. При этом каждый отдельный обработчик выделяют в отдельную функцию и настраивают в индивидуальном порядке.

Удаление данных

Частая задача: перед копированием данных необходимо отметить часть пунктов на стирание. Чтобы они не оказались в информационной базе в тех или иных формах. В этом случае вы можете убрать лишние данные ручным или автоматическим способом. Внимание: затирать пункты может пользователь с правами администратора. Рассмотрим на примере «склада».

Пошаговый метод работы:

  1. Откройте импортированный файл. Перейдите по вкладке «склад».
  2. Кликните правой кнопкой по строке склада. Выберите пункт «пометить на удаление/снять пометку». Альтернативный вариант – нажать кнопку «Del» на выделенном пункте.
  3. Перейдите в пункт «Администрирование». Кликните по строке «Удаление помеченных объектов» (Сервис).
  4. Утилита предложит два варианта: автоматическое затирание или выборочное. В первом случае она сотрет все сведения, который имеют отметку, если они не потребуются для копирования. Во-втором варианте пользователь может еще раз просмотреть весь список на затирание, и только потом нажать «Удалить».

Если какой-то пункт убрать невозможно, интерфейс подсветит его. Появится сообщение и ссылка на связанный пункт. Например, склад может быть отмечен в одной из накладных. Перейдите в документ по ссылке, удалите или поменяйте его на другой склад, после чего повторите процесс идентичными методами. Если этого не сделать, может возникнуть ошибка.

Коротко о настройке правил обмена

Для переброса данных между разными редакциями 1С внедряют правила обмена (ПО). Они позволяют перенести все сведения из одного интерфейса в другой. Для каждого типа конфигурации существует два вида ПО:

  1. Типовой (с доработкой). Функциональность системы ограничена. Этот формат подходит в том случае, если вы собираетесь немного доработать перенос, используя типовые параметры в одной из версий ПО.
  2. Полнофункциональные. Наиболее частый вариант для загрузки/выгрузки сведений в 1С разных версий. По сути, функциональность ничем не ограничивается. Вы можете следовать ПО или «добить» нужные пункты с помощью технической поддержки.

На практике это работает в двух вариациях. Первая: берут оба ПО в обеих/одной из 1С; в этом случае приоритет отдается полнофункциональным правилам. Вторая: установлено типовые правила только в одной из 1С – они же и будут браться за основу.

Готовые решения для всех направлений

Что же делать, если требуется настроить копирование между разными конфигурациями? Но у вас нет желания изучать правила и методы их внедрения, а модуль «Выгрузка и загрузка данных XML» попросту не подходит? В этом случае на помощь приходит конфигуратор. Готовое решение, с помощью которого можно увидеть все правила импорта/экспорта как на ладони.

Конфигуратор позволяет настроить ПО на уровне разработчика. Вы можете создавать или менять их, присваивать условия импорта/экспорта. При этом конфигуратор не является модулем по выгрузке и загрузке. Он просто задает «дерево правил». Множество управляемых функций, которые снимают часть рутинной работы при копировании данных из одной конфигурации в другую.

Заинтересовались,
и Вам необходима информация?

Работаем по всей России и зарубежью

XDTO-пакет в 1С: что это такое, как осуществляется обмен и выгрузка данных

Бобков Олег

Конструкторы

Релиз платформы 1С версии 8.1 открыл для пользователей новый механизм, получивший название XML Data Transfer Objects. Его использование позволяет упростить конвертацию информации из учетной программы в соответствии со стандартной конфигурацией, обеспечивающей возможность чтения документа другими приложениями и сводящей к минимуму вероятность возникновения ошибок обработки. Функциональная задача инструмента — помощь в создании файлов, формат и структура которых будет понятна как юзеру, так и машинному алгоритму. Давайте разберемся, что такое пакет XDTO в 1С 8,1, схему выгрузки в таблицу значений, обмена и записи в XML, и почему это просто находка для тех, кто не слишком хорошо знаком с нюансами работы в нескольких системных программах.

Общее представление

Начнем с того, что рассматриваемый механизм, расшифровка названия которого переводится как «XML-объекты переноса данных», не относится к числу международных стандартов. Фактически это собственное детище разработчиков платформы, так что за ее пределами вам вряд ли доведется встретить аналогичные примеры. Перечень свойств, которыми обладает ПО, обуславливается спецификой взаимодействия с учетной базой — навык создания и работы с объектами типа пакеты XDTO в 1С пригодится только тем, кто постоянно работает с программой.

Функциональные возможности

  • Описание параметров и возвращаемых значений различных Web-сервисов.
  • Обмен информацией между конфигурацией Предприятия.
  • Передача данных с использованием структуры XML без привязки к форме.
  • Формирование собственной системы типовых характеристик, позволяющей обрабатывать произвольную информацию.

В целом — не так уж и мало, если принять во внимание эффективность оптимизации процессов, сопряженных с конвертацией документов для последующего чтения различными программными продуктами. Однако для того, чтобы лучше разобраться в том, какие именно возможности открывает новый механизм, следует подробнее погрузиться в базовую терминологию.

Готовые решения для всех направлений

Ускорьте работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.

Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.

Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя

Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.

Учреждения

Повысьте точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.

Повысьте эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.

Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.

Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.

Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..

Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.

Типы, объекты и фабрики

Количество программистов, по долгу службы создающих различные файлы формата XML, вряд ли поддается подсчету. А вот вариаций в пространствах имен, используемых в 1С и других программах, существенно меньше — и в тех случаях, когда в рамках одной информационной системы сталкиваются одинаковые понятия, характеризующие различные показатели, происходит конфликт значений. Как правило, для наименования пространственных объединений используются строки-идентификаторы, структура которых схожа с URL-ссылками — подобные примеры встречаются в любом документе и могут смутить сотрудников, не знакомых со спецификой их происхождения. Подобный формат обеспечивает уникальность и исключает вероятность пересечения двух пространств, содержащих идентичные по общему названию группы объектов.

Собственная фабрика

Расширение XDTO пакета 1С

Главным корневым элементом подсистемы выступают рассматриваемые массивы, от которых разветвляются и множатся все остальные связи. Именно с них и стоит начать рассмотрение предложенной модели данных.

Особенности конфигурации

Вероятно, каждый пользователь наблюдал в общей структуре ветку Пакеты XDTO. Однако мало кто знает, что на практике она не считается обязательной — описание составляющих не является важным условием работы. Этот раздел решает прикладные задачи и используется в качестве вспомогательного рабочего средства. Чтобы лучше понять, как функционирует фабрика XDTO в 1С, достаточно закрепить базовый тезис: ее задачей выступает создание объектов, относящихся к типам, соответствующим модели данных.

То есть каждая предлагаемая конфигурация по умолчанию содержит механизм, опции которого позволяют создавать описанные, прошитые в системе или созданные разработчиком элементы, включая прообразы справочных списков, документов, реестров и т. п. Сгенерированный автоматически, он доступен в коде в качестве глобальной переменной, с присвоенным наименованием Фабрика XDTO. Все пакеты, закрепленные в соответствующей ветке, представляют собой компоненты, содержащие описание доступных для создания типовых объектов, что обеспечивает возможность сочетания собственных и платформенных значений.

Выгрузка модели данных

Особенности устройства

С технической точки зрения под пакетными подразумеваются логически цельные наборы типов, характеризующиеся обязательным наличием именного пространства, гарантирующего уникальную идентификацию. Возвращаясь к базовой конфигурации, можно сказать, что выгрузка на основе XSD позволяет создать XML по схеме 1С, соответствующей стандартному протоколу обработки и чтения другими программными приложениями.

В состав пакета входит перечень простых и составных описаний типовых объектов, оперирование которыми требуется для аналитического учета, а также набор вспомогательных средств, применяемых для перевода имен переменных с одного языка на другой в процессе конвертации. С точки зрения программирования, внедрение XDTO-пакетов обуславливает необходимость использования таких понятий, как:

  • ТипЗначения XDTO;
  • ТипОбъекта XDTO;
  • Значение XDTO;
  • Объект XDTO;
  • Список XDTO.

С типами и значениями все обстоит точно так же, как и в других структурах, а вот списки требуют более детального разбирательства. При определении для любого из свойств верхнего порогового предела, отличного от единицы, создается условие, допускающее его неоднократное повторение. Фактически это способ манипуляции множествами одного формата.

Интеграция в конфигурацию

Самый простой вариант — встраивание собственных пакетных объектов. Использование переменной, обладающей названием и типом Фабрика XDTO, позволяет создать в 1С необходимую структуру, содержащую все требуемые элементы, начиная с присвоенных по умолчанию и заканчивая прикладными, а также добавленными к дереву метаданных. Подобный алгоритм легко реализуется вручную и не предусматривает особого функционала.

Повторение значений

Нельзя не отметить, что концепция, предложенная разработчиками и предусматривающая использование идентичных названий, нередко становится причиной путаницы. Речь идет о глобальной переменной, что само по себе создает сложности работы, одинаковые тип и название провоцируют семантическую неразбериху, особенно в тех случаях, когда основной объем задач, решаемых программистом, никак не связан с фабриками. Тем не менее это один из неотъемлемых атрибутов инструмента, с которым придется мириться в процессе взаимодействия.

Сериализация XDTO

Еще один аспект, продиктованный благими намерениями, но нередко открывающий дороги в ином направлении. Сама по себе идея переноса данных призвана обеспечить условия, достаточные для быстрой передачи информации между устройствами и программными приложениями, в максимально понятном виде и с возможностью обратной выгрузки. В результате этого конечным форматом каждого документа становится XML, то есть по логике достаточно обойтись автоматической записью и повторным чтением. Однако в этом случае необходимо дифференцировать два разных механизма:

  • Создание XDTO и последующая сериализация в обоих направлениях
  • Извлечение из объектов прикладных элементов, включая строки, ссылки и т. д.

При этом важно понимать, что для Фабрики XDTO не существует таких понятий, как метаданные, конфигурация или таблицы значений. Единственное, чем она оперирует — искомые и формируемые в процессе записи или чтения типы XML, схожие с оригинальными и описывающие те же объектные параметры, но в собственных терминах. Соответственно, сериализатор выступает в качестве посредника между фабрикой и средой исполнения, имеющего представление о чтении узлов и их интерпретации.

Очевидно, что указанные механизмы, несмотря на четкое разграничение, на самом деле неотделимы друг от друга. И все же их функциональная сущность различна — платформа пытается замаскировать существующую принципиальность различий, автоматически реализуя процедуру сериализации тех типов, которые ей доступны.

Метод Тип

Чистый XDTO

В тех ситуациях, когда пользователю требуется, например, извлечь из «Карточки» непосредственное значение, не адаптированное сериализатором под готовые 1С строки, следует воспользоваться методом «Получить», функционал которого обеспечивает возврат искомого объекта.

Список XDTO

Еще один класс, функциональные возможности которого позволяют создавать условия для группового взаимодействия с объектными наборами. Формируется при условии, что одному из свойств установлена предельная граница, не равная нулю — число определяет максимально допустимое количество, при этом значение «-1» показывает отсутствие ограничений.

Задача списков — обработка и оптимизация рутинных процессов, однако в этом аспекте важно понимать, когда именно реализуется подобный формат сериализации. Так, обход синтаксис-помощника работает через итератор, а также через метод «Получить» (Номер) — в обоих случаях результирующий показатель получится сериализованным, представляя собой ссылку 1С.

Фабрика XDTO

Здесь речь идет о классе, выступающим единственным средством, обеспечивающим прямую и обратную конвертацию файлов формата XML в объектные элементы. Фабрика тщательно отслеживает соответствие установленной по умолчанию схеме, и в тех ситуациях, когда наполнение расходится с заданной конфигурацией, возникает исключение времени выполнения.

Свойство «Пакеты»

Ранее мы уже упоминали о том, что под моделью данных подразумевается пакетный массив. Исходя из этого, можно рассматривать предыдущий класс в качестве его непосредственного пользователя. Обращение к коллекции допускается как на основании присвоенного автоматически числового параметра, так и по унифицированному кодификатору ресурса, либо, при необходимости, с использованием стандартного перебора.

Теперь рассмотрим основные применяемые методы.

Тип ()

Предусматривает получение полной вводной, т. е. URI и имени, и в качестве результата возвращает конкретный объект или значение — в зависимости от параметров. Подобные элементы сопоставимы с классом «Метаданные», применяемым в синтаксисе 1С, и обеспечивают определение типа XDTO, к примеру, по таким характеристикам, как перечень свойств, длина, маска и т. д.

Создать ()

Пожалуй, наиболее популярная опция, благодаря которой фабрика в полной мере оправдывает собственное название. Конфигурирует объектные файлы в соответствии с заданной схемой.

Записать XML ()/Прочитать XML ()

Обеспечивают отправку в поток, чтение и последующее создание объекта на его основании. Характеризуются наличием ряда особенностей.

Чтение XML

Любое взаимодействие с документами подобного рода подразумевает наличие источника, в качестве которого могут выступать текстовые документы, модели данных, либо FastInfoset. Само происхождение не имеет принципиального значения, поскольку все указанные варианты взаимно заменяют друг друга. Перед тем как создать и добавить пакет XDTO в 1С, потребуется соотнести область происхождения файла с началом конкретного узла, и воспользоваться методом Фабрика XDTO.Прочитать XML ().

При этом в большинстве случаев потребности пользователя характеризуются необходимостью получения понимаемых определенных элементов. Для уточнения существует второй параметр, позволяющий проверить соответствие схеме — тип объекта. При положительном исходе проверки система генерирует необходимый результат, исключая вероятность наличия ошибочных реквизитов.

Устройство пакета

Запись XML

Для реализации процедуры применяется 1С пример Фабрика XDTO.Записать XML (ПотокЗаписи, Объект XDTO), что позволяет по дефолту помещает компонент в соответствующий типовому значению именной узел. Важно учесть, что структура XML допускает запись особого атрибута — xsi:type — который содержит явное указание на заданный критериями объектный тип. Необходимость пометки в файле обеспечивается вводом в методе параметра «УказаниеТипа».

Собственная фабрика и модель данных XDTO

Для функционирования механизма требуется информационное моделирование, то есть массив пакетов, позволяющий генерировать объекты. Процедура создания, как и в случае с иными элементами языка, используемого платформой, реализуется через встроенный конфигураторов — за функцию отвечает оператор «Новый Фабрика XDTO», который может возвращать неопределенно в таблицу значений 1С Объект XDTO при неправильном указании параметров.

Конструкторы

Существует два варианта, каждый из которых сводится к потребности наличия доступного для осуществления функционала пакетного массива, выступающего основой для модели данных. Изучение синтаксис-помощника позволяет уточнить, что от пользователя требуется создать объект, имеющий тип Model, который был объявлен в именном пространстве http://v8.1c.ru/8.1/xdto. Таким образом, решение задачи рассматривается в качестве простого алгоритма, предусматривающего создание очередного описания Объект XDTO для дальнейшего использования конструктором. Упростить процедуру помогают два метода экспортирования — «ЭкспортМодели XDTO ()» и «ЭкспортСхемы XML ()», которые обеспечивают возврат готовых элементов, адаптированных к конфигурации системы.

Выгрузка модели данных

Стандартная последовательность действий предусматривает несколько этапов:

  1. Формирование перечня пакетов с указанием в списке нужных вариантов.
  2. Создание массива URI с отмеченными значениями и генерация файла.
  3. Запись с явным указанием параметров необязательного типа.
  4. Запуск собственной фабрики на основе полученного результата.

Функции XDTO 1С — описание возврата web-сервисов, конвертация, передача и чтение информации — заметно упрощают взаимодействие с платформой и другими системными приложениями. Подобные решения представляют особую значимость для успешной реализации бизнеса, специфика которого предусматривает активную работу с учетными базами. Для тех, кто предпочитает оптимизировать все процессы, создавая эффективный управленческий цикл, стоит также рассмотреть возможности мобильной автоматизации, предлагаемые компанией «Клеверенс» — интеграция Mobile SMARTS на 70% сокращает издержки на проведение рутинных операций по учету товара, и позволяет свести к минимуму ошибки и расхождения, вызванные человеческим фактором.

Fastinfoset 1с что это

« Как стать программистом 1С » Язык 1С » XML файлы 1С — ЧтениеXML 1С, ЗаписьXML 1С, ЧтениеFastInfoset 1С, ЗаписьFastInfoset 1С, ЧтениеHTML 1С, ЗаписьHTML 1С

XML файлы 1С — ЧтениеXML 1С, ЗаписьXML 1С, ЧтениеFastInfoset 1С, ЗаписьFastInfoset 1С, ЧтениеHTML 1С, ЗаписьHTML 1С

XML — текстовые файлы, позволяющие с помощью специальной разметки сохранять сложные данные в структурированном виде.

FastInfoset — XML файл в бинарном («сжатом») виде.

HTML — всем известные веб-страницы, которые также представляют из себя аналог XML с нестрогими проверками.

Объекты чтения/записи XML, FastInfoset, HTML расширяют возможности чтения текстового файла встроенной обработкой тегов разметки.

Также они используются для объектов ПостроительDOM/ЗаписьDOM (см. далее) как источники данных.

Файлы XML 1С содержат текстовую информацию, то есть являются текстовыми файлами. Объекты ЧтениеXML 1С и ЗаписьXML 1С являются «надстройкой», позволяющей упростить работу с тегами XML файла 1С.

Объекты ЧтениеFastInfoset 1С и ЗаписьFastInfoset 1С, ЧтениеHTML 1С и ЗаписьHTML 1С полностью аналогичны ЧтениеXML 1С и ЗаписьXML 1С и служат для работы таким же способом с другими форматами.

Файл XML 1С, который использовался в примерах

Текстовое значение

Пример 1. Считывание файла XML 1С в дерево значений с помощью ЧтениеXML 1С

Только зарегистрированные пользователи VIP группы могут видеть этот контент.

//открываем файл XML 1С на чтение с помощью ЧтениеXML 1С
Файл = Новый ЧтениеXML();
Файл.ОткрытьФайл(«D:\СтруктураКонфигурации.xml»);

//подготовим дерево значений
//у каждой ветки XML может быть наименование, атрибуты и значение
дзXML = Новый ДеревоЗначений();
дзXML.Колонки.Добавить(«Наименование»);
дзXML.Колонки.Добавить(«Значение»);
дзXML.Колонки.Добавить(«Атрибуты»);

//так как атрибутов у строки XML может быть несколько — будем записывать их в таблицу значений
//каждый атрибут имеет имя и значение
тАтрибутов = Новый ТаблицаЗначений();
тАтрибутов.Колонки.Добавить(«Имя»);
тАтрибутов.Колонки.Добавить(«Значение»);

//уровень вложенности поможет нам понимать когда требуется добавить вложенную ветку, а когда нужно вернуться на уровень вверх
УровеньВложенности = 0;
//текущая строка — строка дерева, будет меняться при увеличении вложенности
ТекущаяСтрока = Неопределено;
//чтение файла XML 1С производится не построчно, а по структуре, при окончании файла чтение вернет ЛОЖЬ
Пока Файл.Прочитать() Цикл

//нас интересуют три вида узлов — начало элемента, текст (значение элемента) и конец элемента (чтобы вернуться на уровень вверх)
Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//в начале элемента увеличиваем уровень вложенности, в конце элемента уменьшаем
УровеньВложенности = УровеньВложенности + 1;

//если это первая строка, то добавим ее в самый верх дерева и сохраним только наименование
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = дзXML.Строки.Добавить();
ТекущаяСтрока.Наименование = Файл.Имя;
Продолжить;
Иначе
//вложенные строки
ТекущаяСтрока = ТекущаяСтрока.Строки.Добавить();
ТекущаяСтрока.Наименование = Файл.Имя; //сохраним наименование

//есть ли у этого элемента XML атрибуты?
Если Файл.КоличествоАтрибутов() > 0 Тогда
//если да — скопируем подготовленную пустую таблицу для сохранения атрибутов
тАтрибутыУзла = тАтрибутов.Скопировать();
//цикл по количеству атрибутов у этого элемента
Для Сч = 0 по Файл.КоличествоАтрибутов()-1 Цикл
//для каждого атрибута запомним имя и значение
Строка = тАтрибутыУзла.Добавить();
Строка.Имя = Файл.ИмяАтрибута(Сч);
Строка.Значение = Файл.ЗначениеАтрибута(Сч);
КонецЦикла;
//сохраним таблицу атрибутов элемента в текущую строку
ТекущаяСтрока.Атрибуты = тАтрибутыУзла;
КонецЕсли;
КонецЕсли;

ИначеЕсли Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
//в начале элемента увеличиваем уровень вложенности, в конце элемента уменьшаем
УровеньВложенности = УровеньВложенности — 1;
//возвращаем текущую строку на уровень вверх
ТекущаяСтрока = ТекущаяСтрока.Родитель;

ИначеЕсли Файл.ТипУзла = ТипУзлаXML.Текст Тогда
//если у элемента есть значение — просто сохраним его
ТекущаяСтрока.Значение = Файл.Значение;

Пример 2. Запись файла 1С XML с помощью объекта ЗаписьXML 1С

Только зарегистрированные пользователи VIP группы могут видеть этот контент.

//создаем файл ЗаписьXML 1С
Файл = Новый ЗаписьXML();
Файл.ОткрытьФайл(«D:\СтруктураКонфигурации.xml», «UTF-8»);
Файл.ЗаписатьНачалоЭлемента(«Конфигурация»);

//по метаданным обходим все справочники (подробнее см. «Работа с метаданными»)
Для каждого Справочник из Метаданные.Справочники Цикл

//ЗаписатьНачалоЭлемента — открывает новую [подчиненную] ветку
Файл.ЗаписатьНачалоЭлемента(«Справочник»);
//ЗаписатьАтрибут — записывает атрибут в открытую ранее ветку
Файл.ЗаписатьАтрибут(«Имя», Справочник.Имя);
Файл.ЗаписатьАтрибут(«Синоним», Справочник.Синоним);

//по метаданным обходим все реквизиты справочника
Для каждого Реквизит из Справочник.Реквизиты Цикл
Файл.ЗаписатьНачалоЭлемента(«Реквизит»);
Файл.ЗаписатьАтрибут(«Имя», Реквизит.Имя);
Файл.ЗаписатьАтрибут(«Синоним», Реквизит.Синоним);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

//по метаданным обходим все табличные части справочника
Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
Файл.ЗаписатьНачалоЭлемента(«ТабличнаяЧасть»);
Файл.ЗаписатьАтрибут(«Имя», ТЧ.Имя);
Файл.ЗаписатьАтрибут(«Синоним», ТЧ.Синоним);

Для каждого Реквизит из ТЧ.Реквизиты Цикл
Файл.ЗаписатьНачалоЭлемента(«Реквизит»);
Файл.ЗаписатьАтрибут(«Имя», Реквизит.Имя);
Файл.ЗаписатьАтрибут(«Синоним», Реквизит.Синоним);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

//ЗаписатьКонецЭлемента — «закрывает» открытую ранее с помощью ЗаписатьНачалоЭлемента ветку
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;

Проголосовать за этот пост:

Кодирование и конвертирование данных в 1С:Предприятие 8.x

В этой публикации рассмотрены задачи, в которых данные не изменяются по содержанию, но изменяются по форме, т.е. по типу и/или представлению. В подавляющем числе такие задачи возникают по требованию протоколов обмена данными между различными информационные системами.

  • Приведение простых типов к типу Строка
    • Функция Формат
    • XML
    • FastInfoset
    • JSON
    • Base64
    • PHP

    Приведение простых типов к типу Строка

    Приведение простого типа к строке происходит неявным вызовом функции Строка(), которая использует текущие региональные настройки среды пользователя ОС, и поэтому в различных системах и различных сеансах может возвращать различные результаты, что самом по себе не приемлемо во многих задачах. Приведение к строке сложных типов вообще не дает представление о содержании, а содержит только краткое имя типа.

    Функция Формат

    Штатное приведение числового значения к строковому функцией Строка(. ) выполняется быстрее всего, но оно выполняется в соответствии с региональными настройками представления чисел (в частности с разделителем разрядов непереносимым пробелом и локальным разделителем дробной части). Если подобные «вольности» преобразования числа недопустимы, следует использовать функцию Формат(,). Таблица содержит правила форматирования для типа Число:

    вид Форматной Строки Формат() = Описание
    (1234567.89)
    (0)
    1 234 567,89 Отсутствие строки форматирования эквивалентно функции Строка(. )
    ЧЦ (ND)
    (число цифр)
    (1234567.89,»ЧЦ=10;»)
    (1234567.89,»ЧЦ=7;»)
    (1234567.89,»ЧЦ=6;»)
    1 234 568
    1 234 568
    999 999
    общее число отображаемых десятичных разрядов целой и дробной частей. Исходное число округляется при этом в соответствии с правилами округления Окр15как20. Если указан этот параметр, то для отображения дробной части числа обязательно указание параметра ЧДЦ, иначе дробная часть отображаться не будет.
    ЧВН ()
    (число вывод нуля)
    (1234567.89,»ЧЦ=9;ЧВН=;»)
    (1234567.89,»ЧЦ=6;ЧВН=;»)
    001 234 568
    999 999
    если параметр указан, лидирующие нули выводятся. Если не указан — лидирующие нули не выводятся. Значение параметра игнорируется.
    ЧН (NZ)
    (число ноль)
    (0,»ЧН=;»)
    (0,»ЧН=;ЧЦ=9;»)
    (0,»ЧЦ=9;ЧН=;ЧВН=;»)
    0
    0
    000 000 000
    строка, представляющая нулевое значение числа. Если не задано, то представление в виде пустой строки. Если задано «ЧН=», то в виде «0». Не используется для числовых полей ввода.
    ЧРГ (NGS)
    (число разделитель групп)
    (1234567.89,»ЧРГ=;»)
    (1234567.89,»ЧРГ= «)
    (1234567.89,»ЧРГ=+;»)
    (1234567.89,»ЧРГ=0;»)
    1 234 567,89
    1 234`567,89
    1+234+567,89
    102340567,89
    символ-разделитель групп целой части числа. Если в качестве разделителя использовать пустую строку, то в этом случае разделителем будет символ неразрывного пробела.
    ЧГ (NG)
    число группа
    (1234567.89,»ЧГ=;»)
    (1234567.89,»ЧГ=0;»)
    (1234567.89,»ЧГ=3;»)
    (1234567.89,»ЧГ=3,2;»)
    1234567,89
    1234567,89
    1234 567,89
    12 34 567,89
    порядок группировки разрядов числа. В качестве значения указываются числа, через запятую, обозначающие количество группируемых разрядов справа налево. Имеют смысл только два первых числа. Первое из них указывает первичную группировку, то есть ту, которая будет использована для наименее значимых разрядов целой части числа. Если второе число не указано, то будут сгруппированы только наименее значимые разряды. Если в качестве второго числа задан 0, то для всех разрядов целой части числа будет применено значение указанное для первичной группировки. Если в качестве второго числа используется значение, отличное от 0, то это значение будет использовано для группировки всех разрядов, кроме уже сгруппированных наименее значимых.
    ЧРД (NDS)
    число разделитель дробной части
    (1234567.89,»ЧРД=;»)
    (1234567.89,»ЧРД=.;»)
    (1234567.89,»ЧРД=:;»)
    1 234 567,89
    1 234 567.89
    1 234 567:89
    символ-разделитель целой и дробной части.
    ЧДЦ (NFD)
    число десятичные цифры
    (1234567.89,»ЧДЦ=0;»)
    (1234567.89,»ЧДЦ=1;»)
    (1234567.89,»ЧДЦ=3;»)
    1 234 567
    1 234 567,9
    1 234 567,890
    число десятичных разрядов в дробной части. Исходное число округляется при этом в соответствии с правилами округления Окр15как20.
    ЧО (NN)
    число отрицательные
    (-1234567.89,»ЧО=0″)
    (-1234567.89,»ЧО=1″)
    (-1234567.89,»ЧО=2″)
    (-1234567.89,»ЧО=3″)
    (-1234567.89,»ЧО=4″)
    (1 234 567,89)
    -1 234 567,89
    — 1 234 567,89
    1 234 567,89-
    1 234 567,89 —
    представление отрицательных чисел.
    ЧС (NS)
    число сдвиг
    (1234567.89,»ЧС=0;»)
    (1234567.89,»ЧС=1;»)
    (1234567.89,»ЧС=9;»)
    (1234567.89,»ЧС=-6;»)
    1 234 567,89
    123 456,789
    0,00123456789
    1 234 567 890 000
    сдвиг разрядов: положительный — деление, отрицательный — умножение. Другими словами, это означает, что исходное число будет умножено или поделено на 10*С, где С — значение параметра по модулю.
    ЧФ (NF)
    число формат
    (1234567.89,»ЧФ=’Ч штук’;»)
    (12345.89,»ЧФ=’Вес: Ч’;»)
    (123,»ЧФ=’ЧЧЧ’;»)
    1 234 567,89 штук
    Вес: 12 345,89
    123123123
    шаблон форматирования числа. В строке можно использовать символ Ч(N) для указания позиции, в которую нужно вывести число. Число выводится с учетом остальных параметров, заданных в форматной строке. Остальные символы выводятся как есть. Символы, находящиеся между двойными или одинарными кавычками выводятся как есть. Шаблон форматирования не применяется к числу 0 (за исключением случая наличия в формате строки параметра «ЧН color: #4682b4;» colspan=»5″ bgcolor=»#ffffff»>Форматирование типа Булево
    БЛ (BF)
    булево Ложь
    (Истина,»БЛ=Неправда;»)
    (Ложь,»БЛ=Неправда;»)
    Да
    Неправда
    строка, представляющая логическое значение Ложь.
    БИ (BT)
    булево Истина
    (Истина,»БИ=Правда;»)
    (Ложь,»БИ=Правда;»)
    Правда
    Нет
    строка, представляющая логическое значение Истина.
    БИ=;БЛ=;
    булево Истина и Ложь
    (Истина,»БИ=Свет;БЛ=Тьма»)
    (Ложь,»БИ=Свет;БЛ=Тьма»)
    Свет
    Тьма
    комбинированная форматная строка для типа Булево
    Полезные комбинированные форматные строки
    ЧГ=;ЧН=;
    ноль и числа без групп
    (0,»ЧГ=;ЧН=;»)
    (1234567,89,»ЧГ=;ЧН=;»)
    0
    -1234567,89
    отменяет числовые группы и выводит «0»
    для обычного отображения и экспорта в Ecxel
    ЧРД=.;ЧГ=0;ЧН=;
    точка, ноль, без групп
    (0,»ЧРД=.;ЧГ=0;ЧН=;»)
    (1234567.89,»ЧРД=.;ЧГ=0;ЧН=;»)
    0
    1234567.89
    использует десятичную точку, отменяет числовые группы и выводит «0»
    для вычисления в формулах, для обмена данными и сериализации

    Для преобразования к строке типа Дата используют другие виды форматных строк:

    • числа дня
      • д (d) — день месяца (цифрами) без лидирующего нуля;
      • дд (dd) — день месяца (цифрами) с лидирующим нулем;
      • ддд (ddd) — краткое название дня недели *);
      • дддд (dddd) — полное название дня недели *);
      • М (M) — минута без лидирующего нуля;
      • ММ (MM) — минута с лидирующим нулем;
      • МММ (MMM) — краткое название месяца *);
      • ММММ (MMMM) — полное название месяца *);
      • г (y) — номер года без века и лидирующего нуля;
      • гг (yy) — номер года без века с лидирующим нулем;
      • гггг (yyyy) — номер года с веком;
      • ч (h) — час в 12-часовом варианте без лидирующих нулей;
      • чч (hh) — час в 12-часовом варианте с лидирующим нулем;
      • Ч (H) — час в 24-часовом варианте без лидирующих нулей;
      • ЧЧ (HH) — час в 24-часовом варианте с лидирующим нулем;
      • м (m) — минута без лидирующего нуля;
      • мм (mm) — минута с лидирующим нулем;
      • с (s) — секунда без лидирующего нуля;
      • сс (ss) — секунда с лидирующим нулем;
      • Д (D) — дата (цифрами);
      • ДД (DD) — длинная дата (месяц прописью);
      • В (T) — полное время, дата может объединяться со временем;
      • ДВ (DT) — дата время.

      Сериализация и десериализация

      Понятие сериализации данных применяется, когда некоторые данные некоторого типа необходимо преобразовать в строковую последовательность, но не с целью представления, а для передачи средствами какого-либо потока. После прохождения сериализованной строковой последовательностью потока она должна быть точно преобразована к первоначальному или эквивалентному типу с эквивалентным значением.

      Сериализация 1С

      Платформа 1С реализует собственный формат сериализации, который может быть использован в модулях с компиляцией &НаСервере парой функций прямого и обратного преобразования:

      • ЗначениеВСтрокуВнутр()
      • ЗначениеИзСтрокиВнутр()

      Пример сериализации реквизита типа СписокЗначений:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *