gifts2017

О встроенных моделях XDTO платформы 1С

Опубликовал Яков Коган (Yashazz) в раздел Обмен - Обмен через XML

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

Учитывая наблюдаемый интерес к работе с XDTO, хочу обратить внимание на информацию о специфике самой платформы, которая предоставлена в пакетах самой платформы. Ничего нового, всё это можно увидеть при работе со стационарным описанием XDTO при выборе типов свойств и объектов, но это интерфейс. Но и программно докопаться несложно. Эти пакеты, ровно с теми же URI, доступны для глобальной переменной ФабрикаXDTO (синглтона). Надо заметить, что этим, помимо клиент-серверной доступности, отличаются способы создания фабрик. Если вы делаете фабрику конструктором, в неё включатся только нужные вам пакеты, а если задействуете синглтон, то всё "барахло" встроенных пакетов тоже ваше. Так вот, путём несложных манипуляций можно получить, например, выгрузку содержимого пакета в текстовый файл, почитать его и узнать кое-что интересное. Например, для желающих глубже понять устройство 1С и особенности её поведения в тех или иных ситуациях.

По рассмотрении пакетов, выяснилось следующее:

"http://v8.1c.ru/8.1/data/enterprise/current-config" - все метаданные, но без универсальных полей, т.е. без, например, таких понятий, как ДлинаКода или РежимУправленияБлокировкойДанных,  только реквизиты и самое общее по ним, что, в общем, можно получить обычным опросом метаданных.
"http://v8.1c.ru/8.1/data/core" - системные перечисления, служебные типы, самые-самые базисные понятия, на которых построена и сама платформа, у меня вызвало чисто теоретический интерес, т.к. не знаю, где применить.
"http://v8.1c.ru/8.1/data/enterprise" - системные перечисления, служебные типы, но уже не самые базисные понятия, и это может понадобиться в тонкостях работы конвертаций, обменов и тыды.
"http://v8.1c.ru/8.2/uobjects" - универсальные коллекции, в т.ч. ДанныеФормы. Любителям дербанить и пересобирать формы, используя выгрузку в файлы на 8.3 рекомендую.
"http://v8.1c.ru/8.2/bsl" - объекты обработки ошибок, тоже может пригодиться.
"http://v8.1c.ru/8.2/data/bsl" - описание описаний процедур и функций, если я верно понял. Наверное, было бы интересно в каких-то интеграциях в вебе, в веб-расширении и прочих трансляциях).
"http://v8.1c.ru/8.2/managed-application/core" - базовые и основные для интерфейсов УФ. Опять-таки, разбирать конфу с учётом этих сведений удобнее.
"http://v8.1c.ru/8.1/data/ui" - также некоторые служебные системные перечисления и сведения, может пригодиться ленивым, которым неохота перепечатывать СП, делая свои списки выбора, и волноваться, а не добавила ли 1С ещё что-нибудь в очередной версии. 

Например, можно вытащить все описанные форматы картинок (а равно и вообще форматы файлов, поддерживаемые платформой и выдаваемые в фильтре при открытии файла в 1С).

// маленький пример, как пользоваться XDTO самой конфы
Функция ПолучитьДопустимыеФорматыКартинок1С()
Попытка
   
// в принципе, так же можно получать и другие системные перечисления - надо лишь выяснить, в каком пакете они.
   
рОбъектXDTO=ФабрикаXDTO.ЭкспортМоделиXDTO("http://v8.1c.ru/8.1/data/ui"); // тут известно, что в этом пакете.
   
рXML=Новый ЗаписьXML;
   
рXML.УстановитьСтроку("UTF-8");
   
рXML.ЗаписатьОбъявлениеXML();
   
ФабрикаXDTO.ЗаписатьXML(рXML,рОбъектXDTO);
   
// читаем в построитель
   
рХМЛ=Новый ЧтениеXML;
   
рХМЛ.УстановитьСтроку(рXML.Закрыть());
   
постр=Новый ПостроительDOM;
   
док=постр.Прочитать(рХМЛ);
   
// ищем (жаль, нет поиска по значению атрибута)
   
мЗначений=Новый Массив;
   
спЭлементов=док.ПолучитьЭлементыПоИмени("valueType");
    Для каждого
эл Из спЭлементов Цикл
        Если
эл.ПолучитьАтрибут("name")="PictureFormat" Тогда // это он, нужный
           
Для каждого уз Из эл.ДочерниеУзлы Цикл // находится в теге enumeration
               
мЗначений.Добавить(уз.ТекстовоеСодержимое);
            КонецЦикла;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Возврат
мЗначений;
Исключение
   
Сообщить("ПолучитьДопустимыеФорматыКартинок1С, ошибка: "+ОписаниеОшибки(),СтатусСообщения.Важное);
    Возврат Неопределено;
КонецПопытки;
КонецФункции

 

Ну а уж вывалить ЗаписьXML в текстовый файл, чтоб просто полюбоваться, думаю, все смогут:

т=Новый ТекстовыйДокумент; т.УстановитьТекст(ЗаписьХМЛ.Закрыть()); т.Показать(); 

Если кому пригодится, будет хорошо )))

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Герман (German) 14.02.14 09:41
// ищем (жаль, нет поиска по значению атрибута)


ВычислитьВыражениеXpath
Chif13; CagoBHuK; barelpro; awk; +4 Ответить 2
2. Яков Коган (Yashazz) 14.02.14 10:19
(1) Во! Спасибо, давно хочется докопаться до возможностей XPath, да руки не доходят. Подозревал, что это возможно.
3. Валерий Федоров (barelpro) 16.02.14 14:26
(1) German,

Жалко что этот метод работает только у ДокументDOM. А хотелось и у ДокументHTML, например в этом примере:

ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(Текст);
Построитель = Новый ПостроительDOM;
ДокументHTML = Построитель.Прочитать(ЧтениеHTML);
4. Евгений Зорин (evn-zorin) 16.02.14 17:22
Интересные темы поднимаете, спасибо вам за XDTO, очень мало информации по ним толковой.
5. Алексей Роза (DoctorRoza) 19.02.14 08:07
6. Яков Коган (Yashazz) 19.02.14 11:13
Я вот сейчас, исходя из этих сведений, хочу запилить программную определялку, какие данные имеют отображение при передаче клиент-сервер и какие нет, ибо одно дело - наличие на клиенте, и другое - возможность сериализованной передачи, тут СП не помощник, а методом тыка или через Попытка-Исключение делать уже надоело.
7. Никита Грызлов (nixel) 19.02.14 17:13
(6) Yashazz, в СП у сериализуемых объектов явно прописано "Сериализуется". Так же используется ключевая фраза "Возможна передача между клиентом и сервером". Если есть возможность каким-то образом выгрузить СП в файл (не знаю), то можно просто распарсить.
8. Яков Коган (Yashazz) 19.02.14 18:04
(7) А вот и нифига, иногда написано, что передача возможна, а оно не фурычит. Хотя, возможно, это на моей 8.2.19 так, а в 8.3 всё идёт. Или наоборот. Короче, я встречался с несколькими объектами, для которых СП не актуален.
9. Ivon (Ivon) 14.03.16 23:53
// ищем (жаль, нет поиска по значению атрибута)

Улыбнуло.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа