1с отчет по структуре метаданных
Была проблема: В процессе обновления и объединения различных баз, прототипов и наработок разных разработчиков, иногда бывали проблемы "утраты" нужных метаданных. Реквизит оставался, а его тип уходил в небытие. Реквизит в таком случае становился типа "Строка (10)". Да и разработчики пару раз тупо забывали указать тип реквизита. Результат - тот же. Возникла потребность просмотреть реквизиты с такими типами в конфиграции. Когда-то давно, когда разработка велась в СППР, то с этим легко справлялся простой запрос по табличной части "ТипыЗначенияРеквизита" справочника "РеквизитыОбъектовДанных". Но СППР мы больше не использовали.
На коленке было написано вот это решение, может быть кому-нибудь зачем-то понадобится.
Отчет состоит из СКД с внешним набором данных. Внешний набор данных заполняет таблицу со столбцами "ТипМетаданных", "Метаданные", "ТабличнаяЧасть", "Реквизит", "ТипРеквизита", "Длина" данными. Обрабатываются следующие типы метаданных:
Справочники
Документы
Отчеты
Обработки
ПланыВидовХарактеристик
ПланыВидовРасчета
РегистрыСведений
РегистрыНакопления
РегистрыБухгалтерии
РегистрыРасчета
БизнесПроцессы
Задачи
Эта таблица передается в СКД, где группируется и можно смотреть структуру базы данных в удобной мне группировке. Так как меня интересуют только пустые типы - в СКД стоит отбор по Строка(10).
Отчет не содержит формы, работает с генерирующейся по умолчанию.
"Зачем тебе всё это нужно":
Отчет встроен в конфигурацию на обычных формах. В модуле регламентных заданий дописано:
и создано регламентное задание, которое примерно раз в неделю присылает мне список потенциальных проблем с типами данных. В общем-то все. Планов дорабатывать что-то нет, но если у кого-то будут идеи или просьбы - могу и сделать. Запускал на самописной конфе на обычных формах и на бухгалтерии 3.0.
Выкладывается, скорее, как шаблон, если кому-то вдруг нужно нечто подобное. Аналоги искал, нашел один, но мне он не подошел.
Изначально обработка была создана на 1С 8.3, автоматически сконвертировать из 8.3 в 8.2 не получилось, потому вручную был создан файл для 8.2 с незначительными отличиями.
8.3 (управляемая форма): Отчёт по структуре метаданных с возможностью отбора по количеству объектов в БД (СКД, без БСП) 8.2 (обычная форма): Отчёт по структуре метаданных с возможностью отбора по количеству объектов в БД (СКД, без БСП)Специальные предложения
Просмотры 12178
Загрузки 73
Рейтинг 11
Создание 08.12.17 11:31
Обновление 26.03.20 15:35
№ Публикации 712770
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
"Словом можно убить, словом можно спасти, словом можно полки за собой повести" Онлайн-тренажер "Боевая риторика. Ложь и давление в переговорах" с 29 ноября по 27 декабря.См. также
Структура хранения базы данных в виде таблицы Excel (управляемые и обычные формы)
Простая обработка получает таблицу соответствия таблиц СУБД объектам конфигурации 1С и сохраняет ее в файл MS Excel (XLSX). Мне лично нужна была для анализа SQL-запросов, генерируемых 1С.
1 стартмани
31.01.2020 3686 10 w.r. 4
Имена метаданных и синонимы
Обработка показывает имена объектов конфигурации и их синонимы.
1 стартмани
13.12.2019 3442 1 Senator_I 4
Размер таблицы SQL базы 1С
Обработка для анализа структуры БД в виде таблиц SQL, их объемов и объемов индексов таблиц. Писалась для анализа в целях оптимизации работоспособности и быстродействия 1С. Будет полезна администраторам и разработчикам, в целях поиска нужной таблицы в SQL по метаданным конфигурации. Две обработки: 1. "Размер таблицы SQL базы 1С не УФ" - не управляемые формы - работает на любой конфигурации 1С 8.2/8.3 (тестировалась УПП 10.3, КА 1.1, ЗУП 2.5 и т.д.) 2. "Размер таблицы SQL базы 1С УФ" - под управляемые формы - работает под любыми конфигурациями 1С 8.3 (тестировалась УТ 11)
Была проблема: В процессе обновления и объединения различных баз, прототипов и наработок разных разработчиков, иногда бывали проблемы "утраты" нужных метаданных. Реквизит оставался, а его тип уходил в небытие. Реквизит в таком случае становился типа "Строка (10)". Да и разработчики пару раз тупо забывали указать тип реквизита. Результат - тот же. Возникла потребность просмотреть реквизиты с такими типами в конфиграции. Когда-то давно, когда разработка велась в СППР, то с этим легко справлялся простой запрос по табличной части "ТипыЗначенияРеквизита" справочника "РеквизитыОбъектовДанных". Но СППР мы больше не использовали.
На коленке было написано вот это решение, может быть кому-нибудь зачем-то понадобится.
Отчет состоит из СКД с внешним набором данных. Внешний набор данных заполняет таблицу со столбцами "ТипМетаданных", "Метаданные", "ТабличнаяЧасть", "Реквизит", "ТипРеквизита", "Длина" данными. Обрабатываются следующие типы метаданных:
Справочники
Документы
Отчеты
Обработки
ПланыВидовХарактеристик
ПланыВидовРасчета
РегистрыСведений
РегистрыНакопления
РегистрыБухгалтерии
РегистрыРасчета
БизнесПроцессы
Задачи
Эта таблица передается в СКД, где группируется и можно смотреть структуру базы данных в удобной мне группировке. Так как меня интересуют только пустые типы - в СКД стоит отбор по Строка(10).
Отчет не содержит формы, работает с генерирующейся по умолчанию.
"Зачем тебе всё это нужно":
Отчет встроен в конфигурацию на обычных формах. В модуле регламентных заданий дописано:
и создано регламентное задание, которое примерно раз в неделю присылает мне список потенциальных проблем с типами данных. В общем-то все. Планов дорабатывать что-то нет, но если у кого-то будут идеи или просьбы - могу и сделать. Запускал на самописной конфе на обычных формах и на бухгалтерии 3.0.
Выкладывается, скорее, как шаблон, если кому-то вдруг нужно нечто подобное. Аналоги искал, нашел один, но мне он не подошел.
Работа во встроенном языке с объектами метаданных
Во встроенном языке "1С:Предприятия" предоставляется доступ к структуре метаданных конфигурации. Эта возможность предназначена в основном для создания универсальных алгоритмов, которые могли бы единообразно работать с различными объектами конфигурации. В этом разделе приводится информация об особенностях работы с метаданными во встроенном языке.
Доступ к метаданным предоставляется только на чтение. Программное изменение метаданных не поддерживается.
В документации по встроенному языку не приводится перечень свойств объектов метаданных и коллекций подчиненных объектов. Для ознакомления со структурой объектов и составом свойств необходимо использовать отчет по конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, отображаемые в этом отчете, соответствуют именам свойств и коллекций подчиненных объектов.
Структура метаданных в отчете и в программной модели не содержит ветки "Общие". Эта ветка используется только в дереве метаданных для удобства редактирования. В отчете по конфигурации и в программной модели все объекты, входящие в ветку "Общие", подчинены непосредственно корневому объекту.
Доступ к структуре метаданных осуществляется через свойство Метаданные глобального контекста. Это свойство предоставляет доступ к корневому объекту конфигурации и коллекциям объектов верхнего уровня. Каждый объект предоставляет соответственно доступ к своим свойствам и подчиненным объектам. Таким образом, можно получить доступ к любому объекту.
Например:
Кроме того, у некоторых типов предназначенных для работы с прикладными объектами, имеется метод Метаданные() , предназначенный для получения объекта метаданных, отвечающего за конкретный тип.
Например:
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу() .
Например:
Объекты метаданных можно сравнивать на равенство. При этом проверяется идентичность объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается именно один и тот же объект конфигурации.
Например:
С помощью метода Родитель() можно получить вышестоящий объект метаданных.
Например:
Для представления объекта метаданных пользователю нужно использовать преобразование значения к строке или метод Представление() .
Например:
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующего объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя() .
Например:
Для поиска объекта метаданных, соответствующего значению перечисления, можно использовать методику, описанную в разделе "Как получить имя значения перечисления, заданное в метаданных?".
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам. Методика такой проверки описана в разделе "Как проверить, что тип значения относится к справочникам, документам и т. д.?".
Некоторые свойства объектов метаданных имеют перечислимый тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию СвойстваОбъектов , предоставляемую корневым объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных .
Например:
В разделе документации, описывающем работу с объектами метаданных, приводятся также описания специфических типов свойств метаданных, например, таких как ПараметрыВводаПоСтроке .
Следует учитывать, что не все значения свойств метаданных могут быть получены из встроенного языка. Программный доступ к объектам метаданных не позволяет получать, например, значения свойств, хранящих формы, модули, макеты, разделы справочной информации, картинки, интерфейсы, стили, наборы предопределенных объектов, права.
Для получения форм и макетов используются специализированные методы.
Для получения значений, идентифицирующих стили и элементы стилей, а также картинок, используются специализированные коллекции.
Например:
Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа() и ПараметрыДоступа() .
Техническое описание внутреннего устройства опубликовано мной в статье Краткое описание формата файлов *.1CD (файловых баз 1Сv8). Однако она достаточно сумбурна, плоха для восприятия, поэтому здесь я попытаюсь описать формат немного более популярно. Чтобы не было путаницы с термином «файл», сразу замечу, что когда я буду иметь в виду файл базы *.1CD, я буду говорить «файл базы», когда же я буду говорить про внутренние файлы, содержащиеся внутри базы, я буду употреблять просто термин «файл».
На самом нижнем уровне файл базы данных 1CD состоит из страниц размером 4 килобайт (0x1000).
По сути, весь файл базы состоит из массива четырехкилобайтных страниц. Каждая страница имеет свой номер (индекс). Здесь и далее каждый прямоугольник с красной рамкой обозначает одну страницу.
Файлы
На более высоком уровне находятся файлы. Файл состоит из одной или более страниц. У каждого файла есть ровно одна заголовочная страница, в которой размещается массив номеров страниц размещения. В каждой странице размещения, в свою очередь, находится массив номеров страниц данных. Заголовочная страница и страницы размещения – это служебные страницы, которые нужны только для хранения служебных данных (сигнатура, длина файла, версия) и для нахождения страниц данных. Собственно содержимое файла хранится в страницах данных.
Структура таблиц
Каждая таблица состоит из нескольких файлов:
- файла описания таблицы DESCR;
- файла записей DATA;
- файла индексов INDEX;
- файла данных неограниченной длины BLOB.
Файл описания таблицы DESCR содержит текстовое описание таблицы – имя таблицы, состав полей и индексов. А также файл DESCR содержит номера файлов DATA, INDEX и BLOB. Таблица адресуется с помощью файла описания таблицы. Структуру файлов таблиц мы в данной статье рассматривать не будем, подробности можно узнать из моей статьи, ссылку на которую я приводил выше. Файл индексов может отсутствовать, если в таблице нет ни одного индекса. Файл данных неограниченной длины тоже может отсутствовать, если в таблице нет ни одного поля с данными неограниченной длины.
Адресация
База состоит из таблиц. Таблицы, в свою очередь, состоят из файлов. И наконец, файлы состоят из страниц. Адресом страницы является ее порядковый номер (индекс) в файле базы. Адресом файла является номер его заголовочной страницы. Адресом таблицы является адрес ее файла описания, а значит, номер заголовочной страницы файла описания. Т.е. о каком бы объекте мы бы не говорили – странице, файле или таблице, адресом объекта всегда является просто номер страницы.
Как запустить epf файл для выгрузки из 1С метаданных
for each fileName in FileList ( 'F:\1С_Аналитика\db_xml\*.xml' ) FROM '$(fileName)' ( XmlSimple , Table is [ Table / Fields / Field ] ) ;После небольшой корректировки получаем отчет, можете скачать (но там ничего не понятно, нужна расшифровка метаданных): Таблицы и поля из 1С Предприятия 8.3 после обработки Tool 1CD.exe и выгрузкой в XML.xlsx
1С Script Builder реализован в виде внешней 1С-обработки и предназначен для автоматизированного проектирования скрипта загрузки данных из БД 1С версии 8.x в аналитическое приложение QlikView. Использование 1С Script Builder позволяет получить максимальную скорость загрузки данных и максимальную гибкость при формировании самых сложных запросов.
ВНИМАНИЕ! В коде последнюю запятую перед SQL надо удалить. Не знаю, как программными средствами убрать.
На вкладке LOAD Script For QlikView приведен загрузочный скрипт. Не забывайте про запятую, которую нужно убрать.
Читайте также: