Дерево метаданных документа с подчиненными узлами

16.01.13

Разработка - Механизмы платформы 1С

В форме пользователь может выбирать любой документ, имеющийся в системе.
Обработка строит развернутую структуру метаданных. Например, если выбран документ "Поступление товаров и услуг", то отображаются все его
реквизиты, табличные части, их реквизиты, формы и макеты. Для каждого реквизита ссылочного типа тоже разворачивается его структура (например, для реквизита "Контрагент") и так далее. Результат обработки представлен в виде дерева значений, размещенного на форме

Скачать исходный код

Наименование Файл Версия Размер
metadoc.epf
.epf 6,92Kb
83
.epf 6,92Kb 83 Скачать

В обработке представляется структура метаданных выбранного документа не в конфигураторе, а в пользовательском режиме. Программным способом обработка обращается к метаданным и считывает соответствующие свойства. Корневым узлом будет выбранный документ. Подчиненными элементами дерева будут реквизиты этого документа, стандартные реквизиты, табличные части и их реквизиты. Если реквизит ссылочного типа, например, номенклатура, то у него выбираются все реквизиты. Реквизиты бывают составного типа данных. Это значит, что некоторые реквизиты, например, получатель, может иметь тип, ссылка на справочник физ. лица и ссылка на справочник контрагенты. В этом случае структура данного реквизита будет следующая: следующим подчиненным узлом указывается его тип. Для реквизита получатель существует два ответвления физ. лица и контрагенты, дальше их реквизиты. Если тип реквизита не является составным, то его тип выводится в одной строке с именем реквизита. Так выглядит дерево. При построении дерева используется рекурсия. Обрабатывается каждый реквизит и если он ссылочного типа данных, для него строится поддерево и так далее, до тех пор, пока не дойдёт до окончания этого дерева, т.е. до простых примитивных типов данных, для которых нельзя сделать разузлование. Возможно зацикливание. Например, в номенклатуре есть реквизит последней продажи, тип ДокументСсылка.РеализацияТоваров. Система поймет, что перед ней ссылочный тип и будет пытаться строить поддерево, которое уже начала строить в начале, затем процесс дойдет до номенклатуры, и опять по циклу. Проблема решена так, необходимо запомнить, при каждом рекурсивном вызове, какие реквизиты были обработаны ранее и если реквизит с таким типом данных уже обрабатывался прекращать построение поддерева. 

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2567    dsdred    16    

59

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5915    dsdred    54    

83

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5874    YA_418728146    25    

68

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6976    dsdred    36    

113

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19075    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12778    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9405    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6528    sebekerga    54    

95
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Иной 16.01.13 17:27 Сейчас в теме
А вот вопрос, если в реквизите Сотрудник (ссилка на справочник Сотрудники) документа есть поле, которое содержит ссылку на справочник Сотрудники (вроде как указывается непосредственный начальник). Как тогда при такой рекурсивной структуре будут отображены реквизиты?
2. TMV 14 16.01.13 19:27 Сейчас в теме
(0) где эта вещь может пригодиться?
3. Иной 16.01.13 19:35 Сейчас в теме
Может пригодится для динамического формирования параметров отчетов (отборов, сортировок и т.д.), перечень которых не известен на момент проектирования запроса. Типа универсальных отчётов.

Но это уже "дебри". Как правило 98% отчётов, в той или иной степени специализированны. Ну и в 8-ке итак хороший движок построения запросов =)
4. TMV 14 16.01.13 19:38 Сейчас в теме
(3) механизм СКД все это умеет, а он уже везде..
5. Иной 16.01.13 19:43 Сейчас в теме
Это из разряда очумелих ручек или сделай сам. На ценителей в общем говоря =).

Меня просто интересовало структура создавалась сразу, или же прорисовывалась при разворачивании. Тоесть учитывался ли фактор возможной рекурсии, или нет =).
6. TMV 14 16.01.13 19:55 Сейчас в теме
(5) а по поводу вашего вопроса в (1) нужно текст дочитать до конца)
7. Иной 16.01.13 20:03 Сейчас в теме
Упс... Действительно. Но это не суть важно. Структуру можно "рисовать" при возникновении нужды, то есть при разворачивании. Это и меньше ресурсов займёт.

А подход по решению не совсем правилен. В приведённом мною примере, я бы вот хотел бы сделать, например, отбор по начальнику сотрудника, или даже по управлению начальника отдела сотрудника. таким образом - это не панацея.
8. TMV 14 16.01.13 20:06 Сейчас в теме
(7) про начальника не понял.. здесь же дерево МЕТАданных..
9. Иной 16.01.13 23:50 Сейчас в теме
Это я отвлёкся немного. Фантазия на тему применения...
10. Артано 762 21.03.13 06:49 Сейчас в теме
Вопрос автору: чем не нравится построитель отчета?
11. andpyxa 12.12.13 16:41 Сейчас в теме
Нужно добавить чтобы и справочники разматывало, если есть такие реквизиты ссылочного типа, а не только документы.
12. ZhokhovM 727 23.05.14 17:34 Сейчас в теме
Ни хрена не работает ваша обработка, выбираю документ Авансовый отчет и нажимаю Заполнить, заполнение длилось более 2х часов и результата не было, а точнее закрыл нафиг режим предприятия. Проверял на УТ.
Оставьте свое сообщение