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

16.01.13

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

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

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

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

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

См. также

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

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

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

13.03.2024    2525    dsdred    16    

57

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

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

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

11.03.2024    5793    dsdred    53    

82

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

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

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

24.01.2024    5784    YA_418728146    25    

67

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

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

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

11.12.2023    6914    dsdred    36    

113

1С-ная магия

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

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

06.10.2023    18991    SeiOkami    46    

118

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

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

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

14.09.2023    12663    human_new    27    

76

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

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

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

28.08.2023    9327    YA_418728146    6    

143

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

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

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

20.08.2023    6507    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х часов и результата не было, а точнее закрыл нафиг режим предприятия. Проверял на УТ.
+
Внимание! Тема сдана в архив