Инструмент для выгрузки своих фабрик XDTO во внешний файл для использования своих схем во внешних обработках

13.04.18

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

Инструмент для выгрузки своих пакетов XDTO в единый xml файл, на основании которого можно создать фабрику XDTO, благодаря чему можно встроить свои форматы обмена во внешнюю обработку, не трогая конфигурацию. В обработке есть пример записи и считывания xml файла с помощью такой внешней фабрики, а также инструмент для выгрузки из такой фабрики набор xsd схем, для последующей загрузки обратно в конфигурацию в XDTO пакет, на случай если вы потеряли конфигурацию, где делали XDTO пакет, как потерял её я. В общем, если не хотите портить конфигурацию лишними объектами и ещё не сделали такой инструмент для себя - качайте, не стесняйтесь.

Файлы

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

Наименование Скачано Купить файл
Инструмент для выгрузки своих фабрик XDTO во внешний файл для использования своих схем во внешних обработках.:
.epf 9,52Kb
43 1 850 руб. Купить

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

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

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

Во-первых выражаю глубокое почтение автору трилогии XDTO это просто, в третьей части которого этот метод изложен. Так же использовался материал с http://catalog.mista.ru/public/77526/, о выгрузке xsd схемы из фабрики XDTO. Я всего лишь собрал всё это в одну обработку и дополнил примером. Постоянно забываю механизмы, которыми давно не пользовался, сделал себе чекпоинт, а вам скромный инструмент.


Итак, мы хотим с кем-нибудь обменяться новеньким xml форматом, который ещё нигде не описан. Создаёте в копии базы XDTO пакет, наполняете его либо XSD файлом (общепринятый формат описания файлов xml), который может вам предоставить добросовестный товарищ по другую сторону обмена или сформировать в сторонней программе как предлагает сделать автор цикла XDTO это просто, или собрать схему в 1С руками, как это обычно делаю я. С описанием как правильно заполнять руками через 1С в интернете туго, кое-как разобрался под свои нужды.

Итого у вас есть объект конфигурации пакет XDTO (мы сделали его в копии базы), он заполнен и вы можете к нему обращаться через менеджер всех фабрик кофигурации ФабрикаXDTO.
Запускаем внешнюю обработку и жмём кнопку "Выгрузить фабрику из конфигурации в файл", выбираем свой XDTO пакет из списка или перечень пакетов, если они зависимы (типы одного использует другой), и получаете файл фабрики.
Файл фабрики можно вставить как текстовый макет во внешнюю обработку и использовать его вот так:

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(РеквизитФормыВЗначение("Объект").ПолучитьМакет("Модель").ПолучитьТекст());
ОбъектModel = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
НоваяФабрикаXDTO = Новый ФабрикаXDTO(ОбъектModel);
ЧтениеXML.Закрыть();

В обработке есть примеры использования такой подвижной фабрики, а так же функция обратного преобразования фабрики в набор пакетов xsd, если вдруг их нужно изменить, а исходной конфигурации с этим пакетом XDTO уже давно нет:

Проверена на платформе 8.3.10.2580

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

Фабрика Пакет XDTO Внешняя обработка выгрузить фабрику макет

См. также

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

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

15500 руб.

02.09.2020    212948    1163    413    

1049

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

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

8400 руб.

20.08.2024    40459    220    115    

209

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

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

16000 руб.

10.11.2023    18791    76    39    

92

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    26505    67    30    

96

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

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

9500 руб.

17.05.2024    37611    134    55    

176

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

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

9900 руб.

25.08.2025    3934    7    10    

14

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    3673    7    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MOPC 24 13.04.18 08:30 Сейчас в теме
Добрый день

Как все таки вовремя!

Спасибо.
4. пользователь 15.04.18 05:20
Сообщение было скрыто модератором.
...
2. MaxS 3041 14.04.18 09:19 Сейчас в теме
Добрый день!
Столкнулся с проблемой на платформе 8.1, поиски привели к этой публикации. Спасибо за инструмент, плюсую. ;)
Часть вопросов снялась, но осталась главная проблема.

Такой код только на платформе 8.1 генерирует ошибку
ЗначениеСвойства = Новый Структура("тест","тест");
ЗначениеXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства);

МойСериализаторXDTO = Новый СериализаторXDTO(МояФабрикаXDTO);
ЗначениеXDTO = МойСериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства);
Текст ошибки:
Ошибка при вызове метода контекста (ЗаписатьXDTO): Ошибка отображения типов:
Отсутствует отображение для типа 'Структура'
ЗначениеXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства);
Или: ЗначениеXDTO = МойСериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства);

Если из МояФабрикаXDTO убрать xsd схему "http://v8.1c.ru/8.1/data/core", то ошибка появляется на любой платформе. Поэтому я и воспользовался вашей обработкой, чтобы раздобыть "http://v8.1c.ru/8.1/data/core" и добавить в МояФабрикаXDTO, но не помогло.
Куда копать, что делать? ;)
6. ЕСТЬNULL 208 16.04.18 03:08 Сейчас в теме
Спасибо за тёплые слова! Рад что оказался полезен.

(2) Это конечно страшный для меня вопрос, так как я в нём в целом - дилетант.
Я так понял вы обращаете структуру в ЗначениеXDTO сначала встроенной фабрикой - ошибка не выдаётся, а потом выгруженной и ошибка проявляется. Если это так, то значит фабрики отличаются. Они как бы и должны отличаться, никто не спорит, но можно сначала выгрузить в свою фабрику всё из встроенной в качестве эксперимента. Если чудо произойдет, значит вашей фабрике не хватает какой-то схемы, и вы сможете найти её например методом исключения. А вот если нет, то не знаю даже.

(5) Вы мне скинули ссылку в личку, но там " Ошибка! Публикация неактивна или находится на модерации.". Сравнить - вывести разницу в составе схем? Можно. Только надо найти для этого время, с этим очень туго. Может ещё надо добавить возможность дополнения, или даже редактирования такой схемы. В принципе то ничего сложного нет, только сделать красиво. И кстати недавно нашёл статью по то, как выгружать xml в файл на клиенте, не используя выгрузку во временный файл. Выгрузка производится напрямую в двоичные данные, это работает. Кто не в курсе - берите на вооружение! https://infostart.ru/public/672498/
В общем я вас понял, сделаю как будет время. А с вас рабочая ссылка на https://infostart.ru/public/727205/
Спасибо за критику!
7. MaxS 3041 16.04.18 03:49 Сейчас в теме
(6) Вопрос уже решился. Скину кратко результаты, вдруг кому пригодится. ;)
Если схема в моей фабрике такая же как в типовой, то она ведет себя как типовая, поэтому загружаем похожую.
ТипСтруктура = МояФабрикаXDTO.Тип("http://v8.1c.ru/8.2/data/core";, "Structure");
СтруктураXDTO = МояФабрикаXDTO.Создать(ТипСтруктура);
и потом рекурсивной функцией заполняем ОбъектXDTO данными структуры.
После записи xml файла открываем его как текстовый и меняем "http://v8.1c.ru/8.2/data/core" на "http://v8.1c.ru/8.1/data/core".
3. mvxyz 331 14.04.18 17:18 Сейчас в теме
5. onec.developer 174 15.04.18 22:31 Сейчас в теме
А как на счет сравнения фабрик?
8. ЕСТЬNULL 208 17.04.18 01:57 Сейчас в теме
(5) Вы мне скинули ссылку в личку, но там " Ошибка! Публикация неактивна или находится на модерации.". Сравнить - вывести разницу в составе схем? Можно. Только надо найти для этого время, с этим очень туго. Может ещё надо добавить возможность дополнения, или даже редактирования такой схемы. В принципе то ничего сложного нет, только сделать красиво. И кстати недавно нашёл статью по то, как выгружать xml в файл на клиенте, не используя выгрузку во временный файл. Выгрузка производится напрямую в двоичные данные, это работает. Кто не в курсе - берите на вооружение! https://infostart.ru/public/672498/
В общем я вас понял, сделаю как будет время. А с вас рабочая ссылка на https://infostart.ru/public/727205/
Спасибо за критику!
9. user596590_pavel.kuznecov 48 19.04.18 09:06 Сейчас в теме
Вставлю свои пять копеек про то как читать набор схем из внешнего файла и создавать на этой основе свою фабрику:

Чтение=Новый ЧтениеXML;
	Чтение.ОткрытьФайл("ПутьДоМоегоФайла\МойФайл.xsd");
	
	НовыйПостроительДом=Новый ПостроительDOM;
	НовыйДокументДом=НовыйПостроительДом.Прочитать(Чтение);
	
	НовыйПостроительСхем=Новый ПостроительСхемXML;
	НоваяСхема=НовыйПостроительСхем.СоздатьСхемуXML(НовыйДокументДом);
	
	НаборСхем=Новый НаборСхемXML;
	НаборСхем.Добавить(НоваяСхема);
	НоваяФабрика=Новый ФабрикаXDTO(НаборСхем);
Показать
Для отправки сообщения требуется регистрация/авторизация