О встроенных моделях XDTO платформы 1С
Иногда в пакетах, предоставленных самой платформой, можно найти интересное. Служебные объекты, системные перечисления, устройство универсальных коллекций.
- Описание
- Подробнее
Описание
Учитывая наблюдаемый интерес к работе с 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 в текстовый файл, чтоб просто полюбоваться, думаю, все смогут:
т=Новый ТекстовыйДокумент; т.УстановитьТекст(ЗаписьХМЛ.Закрыть()); т.Показать();
Если кому пригодится, будет хорошо )))

