1С 8.x Управляемое приложение 1С 7.7. Бухучет Статьи Ссылки
1С 8.x arrow 1С 8.x arrow Узелки на память arrow Метаданные
Метаданные Печать

Как получить метаданные документа?

МетаданныеДокумента = ДокументСсылка.Метаданные(); 

Очистка всех ТЧ документа

ТабличныеЧасти = ОбъектДокументСПустойТЧ.Метаданные().ТабличныеЧасти;
Для Каждого ТабличнаяЧасть из ТабличныеЧасти Цикл
ОбъектДокументСПустойТЧ[ТабличнаяЧасть.Имя].Очистить();
КонецЦикла;

Формирование структуры шапки документа 

СтруктураШапкиДокумента = Ноовый Структура; 

 Для каждого Реквизит из МетаданныеДокумента.Реквизиты Цикл
СтруктураШапкиДокумента.Вставить(Реквизит.Имя, ДокументОбъект[Реквизит.Имя]);
КонецЦикла;

Формирование структуры табличной части документа

СтруктураТабличнойЧастиДокумента = Новый Структура;
Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл

СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя);

КонецЦикла;

Список видов документа


СписокВидовДокументов = Новый СписокЗначений;

Для Каждого ДокументКонфигурации из Метаданные.Документы Цикл
СписокВидовДокументов.Добавить(ДокументКонфигурации.Имя);
КонецЦикла;

ЭлементыФормы.ПодборДанных.Колонки.ВидДокумента.ЭлементУправления.СписокВыбора = СписокВидовДокументов;

Имеется ли в шапке документа заданный реквизит

Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт
Возврат НЕ (МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецФункции // ЕстьРеквизитДокумента()


МетаданныеДокумента = ДокументСсылка.Метаданные();
Если ОбщегоНазначения.ЕстьРеквизитДокумента("ФизЛицо", МетаданныеДокумента) Тогда
...
КонецЕсли

 Есть ли реквизит табличной части документа? 

Функция ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТабЧасти) Экспорт
ТабЧасть = МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТабЧасти);
Если ТабЧасть = Неопределено Тогда // Нет такой таб. части в документе
Возврат Ложь;
Иначе
Возврат НЕ (ТабЧасть.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецЕсли;
КонецФункции // ЕстьРеквизитТабЧастиДокумента()

Есть ли табличная часть документа?

Функция ЕстьТабЧастьДокумента(ИмяТабЧасти, МетаданныеДокумента) Экспорт

Если МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТабЧасти) = Неопределено Тогда

Возврат Ложь;
Иначе

Возврат Истина;

КонецЕсли;
КонецФункции // ЕстьТабЧастьДокумента()