Fluent XML: Генератор XML

28.05.26

Разработка - Инструментарий разработчика

Универсальный фреймворк «ГенераторXML» для 1С. Цель публикации: Презентация и предоставление готового enterprise-инструмента для автоматизации и упрощения процесса создания XML-документов в 1С. Публикация предлагает уйти от стандартного низкоуровневого кода платформы в пользу современной объектной разработки на базе паттерна Fluent Interface (текучий интерфейс). Кому и для чего полезна публикация: 1) Разработчикам интеграций: Поможет в разы быстрее проектировать и сопровождать сложные обмены данными (SOAP, государственные ИС, Честный Знак, СМЭВ). 2) Архитекторам: Предоставляет готовый и отказоустойчивый библиотечный модуль (класс), который можно сразу внедрить как стандарт разработки внутри ИТ-команды. 3) Сторонникам Чистого Кода (Clean Code): Демонстрирует практическое применение паттернов SOLID и Fluent API в реалиях встроенного языка 1С для повышения читаемости и снижения стоимости поддержки кода.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Fluent XML
.zip 22,08Kb ver:1.0.1
4 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Каждый разработчик 1С знает, как громоздко выглядит стандартная ЗаписьXML. Код быстро превращается в «спагетти» из сотен строк ЗаписатьНачалоЭлемента(), ЗаписатьКонецЭлемента() и бесконечных Формат(). Ошибиться в такой простыне кода легко, а читать её через полгода — больно.

Решение — обработка ГенераторXML с текучим интерфейсом (Fluent Interface). Она автоматизирует рутину, управляет вложенностью, сама приводит типы и позволяет собирать XML-документы любой сложности одной изящной цепочкой вызовов.

 

Как работать с этим механизмом

Работа с генератором всегда строится по строгому конвейерному принципу и состоит из 3 понятных шагов:

[Шаг 1: Конфигурация] e32; [Шаг 2: Инициализация потока] e32; [Шаг 3: Конструирование XML] e32; [Результат]

  1. Конфигурация (Опционально): задаются кодировка, версия или кастомные форматы данных.
  2. Инициализация потока: вызывается метод определения приемника (в строку или в файл на диск).
  3. Конструирование XML: с помощью цепочки методов строится тело документа.
  4. Финализация: вызывается закрывающий метод, который автоматически дописывает все забытые теги и возвращает результат.

 
 Основные методы

 

Примеры кода и тест-кейсы

Для инициализации генератора используется общий модуль ГенераторXML.

 
 Кейс 1: Сборка со стандартными типами и автозакрытием тегов
 
 Кейс 2: Сериализация сложных вложенных структур и массивов
 
 Кейс 3: Enterprise-специфика (SOAP, CDATA, кастомные форматы)

 

Сведения о поставке

  • Тестировалось на платформе 8.3.27 в режиме совместимости с 8.3.19. Скорее всего работать будет и на других версиях платформы, там особо ломаться нечему).
  • В архиве конфигурация с внешней обработкой с тестовыми кейсами.
  • В конфигурации один общий модуль с методом для инициализации конструктора и одна обработка с функционалом.

Вступайте в нашу телеграмм-группу Инфостарт

XML Конструктор Генератор Fluent

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    263275    1468    421    

1174

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    72213    367    170    

319

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    39103    108    46    

122

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    58969    121    34    

130

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4218    14    1    

18

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    7053    30    41    

44

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    53895    186    63    

218

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    25866    95    46    

103
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DmitryKlimushkin 28.05.26 16:18 Сейчас в теме
".... Что только не придумают русские, лишь бы не делать хорошие дороги" - подумали немцы, взглянув на автомобиль УАЗ
siamagic; evgen7938; AlexGr00vy; Sashares; awk; +5 Ответить
2. avbolshakov 29.05.26 12:11 Сейчас в теме
Мне нравится в расте этот флюент интерфейс.

У вас есть метод НачалоЭлемента() который потом сам закроется. Т.е. по факту это скорее ".ДобавитьЭлемент()" или просто Элемент(). Т.е. у меня замечания по поводу нейминга методов. Хотя может я и не прав
3. Kassper 65 29.05.26 12:32 Сейчас в теме
(2) Просто Элемент() уже есть, который сразу закрывается. А НачалоЭлемента предполагает, что его потом закроют, но он автоматически закрывается, если это завершающий тег и после него никаких других тегов нет
4. gybson 13 29.05.26 12:51 Сейчас в теме
Это для тех, кто сам не нашел ДокументDOM ?
Yashazz; siamagic; DmitryKlimushkin; +3 Ответить
5. Kassper 65 29.05.26 14:06 Сейчас в теме
(4) Ну как минимум, тут архитектурный подход другой. Плюс вряд ли у вас средствами ДокументDOM получится построить сложый XML меньшим количеством строк кода, причем чтобы код был более читабельным и прозрачным
6. DmitryKlimushkin 29.05.26 15:18 Сейчас в теме
(5) А пресловутая Фабрика и ПакетыXDTO - не? Я часто имею дело с XML и я в очень редких случаях использую эти "примитивы" в стиле "ЗаписатьНачалоЭлемента", это как дом из песчинок собирать - нафига такие мучения?
Мне кажется, что предложенная технология, это рефлекторный ответ на создавшуюся бардачную .... не могу назвать это системой, назову - бардачный обиход с применением текстов (именно - текстов!), напоминающих XML.
Хотите работать с XML? Сначала создайте XSD! Внятную, логичную и бесспорную схему! Имея схему в голову не придёт формировать содержимое XML через построчные записи (мазохизм какой-то!)
Уж тем более, когда речь идёт о некоем "сложном XML".
А в вашей системе можно записать объявление XML?
7. hdworker 29.05.26 15:22 Сейчас в теме
(6)
Имея схему в голову не придёт формировать содержимое XML через построчные записи


В смысле..? ФабрикаXDTO ведь именно построчно насыщает структуру данными?
Или вы про 3rd-party решения, тогда любые другие?
8. DmitryKlimushkin 29.05.26 15:34 Сейчас в теме
(7) ".. О сколько нам открытий чудных...." То есть, запись Фабрикой ОбъектаXDTO содержащего множество свойств и списков породит какую-то одну строчку, что ли?
Я сам очень воздерживаюсь от создания избыточно сложных (объёмных!) объектов (был опыт работы с очень крупными XML фалами), но я видел массы примеров, когда коллеги создавали вполне разнообразный объект XDTO и одной строкой кода создавали весть текст XML (конечно, без объявлений, соответствий имён и другой служебной информации в заголовке).
А откуда такое мнение, что Фабрика обречена на построчное заполнение?? Хотя... Могу догадаться)) Использование фабрики без Схемы (НабораСхем), а значит - без типов, это как большая совковая лопата, только без ручки. Потенциал есть, а работать не получается)
Коллега, очень советую посмотреть на сайте ФТС (Таможня РФ) их электронный кабинет. Там выложены образцы их электронного документооборота. Как по мне, это лучший пример - как надо работать с XML. Для каждого документа есть подробная схема XSD, с подробнейшим описанием, комментариями. Вот берешь такую схему, загоняешь её в набор, по этому набору создаёшь собственную(!!) фабрику. И обращаясь к типам из такого набора, можно работать укрупнёнными объектами (или сразу всем объектом!). Никакой построчной записи даже не рассматривается - это факультатив какой-то)
Yashazz; Dach; +2 Ответить
10. Kassper 65 29.05.26 16:04 Сейчас в теме
(6) Каждый выбирает подход наиболее удобный для реализации конкретно поставленных задач. В основе данной публикации - текучий интерфейс с реализацией основного функционала для построения XML файлов. И как бы использование фабрик и пакетов XDTO к данном архетектурному подходу не отностятся, без создания доп. библиотеки.
Поэтому мне непонятно, что конкретно вы пытаетесь донести.

Сейчас объявление записывается по умолчанию, но при желании это исправить небольшой доработкой.
11. DmitryKlimushkin 29.05.26 17:59 Сейчас в теме
(10) Я пытаюсь донести простую мысль. Есть два метода развития почти всего - интенсивный и экстенсивный. Интенсивный предполагает инженерию, повышение производительности труда, качественные технологии и подобное.
Экстенсивный предполагает "А давайте напишем ещё тонны кода, примем на работу шесть человек и поставим два новых сервера".
Это не вопрос "подход наиболее удобный для реализации конкретно поставленных задач". Не, надо быть честным перед собой) Это вопрос смирения перед бардаком и низким качеством протоколов обмена (отсутствием этих протоколов), когда всё XML-содержимое верстается в ручном режиме "на живую нитку" без каких-либо предварительных "инжинирингов" и оформлений.
А Фабрики и XDTO работают только в режиме хоть какой-то проектной и протокольной подготовленности обменов.
В сети куча фоток, как в сельской местности п качестве телеги используют остов старого авто, запрягая его в телегу. И это безусловно тоже "подход наиболее удобный для реализации конкретно поставленных задач") Я бы авто починил, а не лошадь впрягал!
12. Yashazz 4924 01.06.26 11:36 Сейчас в теме
(11) Люто и яростно плюсую каждую изложенную мысль, а сверх того - понимание подоплёки и оценку ситуации, с каковой согласен гораздо более, чем полностью!
Но, к сожалению, что имеем.
13. Yashazz 4924 01.06.26 11:40 Сейчас в теме
(6) Люди зачастую не знают, что за зверь xsd вообще. Ну и не будем забывать, что общепринятые схемы, в т.ч. строимые реверсивно по xml, не полностью совместимы с 1С. Там разная трактовка пространств имён и некоторых фасетов, там и ручками иной раз надо схему править.
Но хотя бы одинэсное изобретение XDTO уж точно можно припахать, чем вот такой примитив городить... построчно...
15. Kassper 65 01.06.26 12:50 Сейчас в теме
(13) Так никто же не мешает при желании развивать этот примитив и добавить поддержку xsd схем и т.п. Я как бы и не позиционировал это решение как многофункциональную библиотеку для всех случаев жизни. Это решение лишь одна из демонстраций применения паттернов SOLID и Fluent API.
18. DmitryKlimushkin 01.06.26 13:15 Сейчас в теме
(15) Коллега, не в обиду. Для чего нужны друзья? Для искренности! Чужому - безразлично, он потреплет по плечу, помашет гривой, натянет дежурную улыбку и на уходе через плечо отвесит безэмоциональную мёртвую похвалу. Все это умеют. Тебе этого хочется? Всегда неприятно, как твоё детище (какое б не было!) препарируют чужими руками, да ещё и выстёбывают по ходу вивисекции. Но это искренне - для твоего же опыта. Ты думаешь, я (в числе почти всех - остальных) н лепил то же самое или похожее? Да наструячил столько кода, что ластики рассыпались при стирании этого хлама.
"...паттернов SOLID и Fluent API..." Я приседаю, когда читаю такие слова. В моём автомобильном городе в 90е был огромный автомобильный бизнес. И был, не меньших размеров, "околоавтомобильный". Это хорошо прописано у Ильфа и Петрова - "маленький мир и большой мир". Ну это, когда в салоне берёшь автомобиль, а рядом прилавки с "коврики-ароматизаторы-нашлёпки-наклейки-подставки-подложки" и всякая прочая малонужная фигня. В нашей разработке тоже есть, прям, "разработка-разработка", а есть "околоразработка". Когда коллеги пишут "программу для программы, помогающей другой программе писать программу про программу, которую заказал клиент". Это самая благодарная работа. Ты пишешь код, который никто не оспорит, не выбесит заказчика, он всегда - очень хороший. И столько наплодили всяких этих "паттернов", что их описание, как "освоенных", в резюме составляют отдельные главы. Это как-то помогло уровню нашей разработки? Примерно так же, как ароматизатор в салоне автомобиля влияет на ресурс поршневой группы двигателя.
Надо идти в большой мир!)
16. DmitryKlimushkin 01.06.26 13:02 Сейчас в теме
(13) Как раз про объект "СхемаXML" я писал подробную статью. Он в конфигурации очень своеобразно работает) Я пару-тройку месяцев с этим ребусом бодался) Именно для того, чтобы вручную (это для тяжёлых исключительных случаев!) собрать схему вручную. Абсолютно согласен, что XML в нашей родной платформе - это пасынок (или ещё хуже - падчерица!) Много чего не работает, даже из заявленного в "Синтаксис-Рабе". Объявления не обслуживаются, например - выбешивает. Кто-то скажет, что "устаревший метод", но это уж как сказать, особенно (как верно подмечено!) при таком дремучем и пренебрежительном отношении к XSD.
Я накануне статью писал об отчете для таможни "Сведения о перемещении товаров". Так там XML формировался из.... дерева (дерева, Карл!!!), используя в качестве некоего "чертежа" макет с типом "Табличный документ" (... Карл, отойди в сторонку, я туда плюну...) Я столько горькой иронии излил, что модератор счёл статью "чересчур эмоциональной" и отказался публиковать. Ну, и ладненько, проблему замели под ковёр и её вроде бы нет. Зато можно написать ещё кучу удивительных примочек в стиле "Мы любим XML".....
19. Yashazz 4924 01.06.26 13:50 Сейчас в теме
(16) Боль как она есть. Понимаю.

Впрочем, я перестал дёргаться после того, как один битриксоид мне через губу презрительно заявил, что я не владею хмл, т.к. у меня тег неправильный - <myteg/>

А так да, иной раз конкатенацией, чесслово, проще и быстрее налепить фигни) Тем более потоковые операции со строками ускорили)
9. gybson 13 29.05.26 15:49 Сейчас в теме
(5) Если кому-то очень захочется захардкодить XML, то еще проще можно сделать - через СтрШаблон
14. Yashazz 4924 01.06.26 11:42 Сейчас в теме
(9) Нууу... если уж извращаться, так xslt-преобразование из строки)
17. DmitryKlimushkin 01.06.26 13:03 Сейчас в теме
(14) О-о! А мсье знает толк в извращениях! )))
Для отправки сообщения требуется регистрация/авторизация