Метаданные в 1СВ этой статье описываются методы работы с метаданными системы "1С:Предприятие 7.7". //функция возвращает тип реквизита объекта метаданных Функция гТипРеквизита(Атрибут) Экспорт Тип=Атрибут.Тип; Если Найти("Справочник,Документ,Перечисление",Тип)=0 Тогда Возврат(Тип); Иначе Возврат(Тип+"."+Атрибут.Вид); КонецЕсли; КонецФункции //функция возвращает список видов документов, на основании которых вводится заданный вид документа Функция гВводящиеНаОсновании(Список,Вид,ФлагСтрока=0,ИсключатьСебя=1) Экспорт Для i=1 По Метаданные.Документ() Цикл Ж=Метаданные.Документ(i); //исключать из списка документ-основание Если (ИсключатьСебя=1) И (Ж.Идентификатор=Вид) Тогда Продолжить; КонецЕсли; //список Для j=1 По Ж.ВводимыеНаОснованииДокументы.Количество() Цикл Если Ж.ВводимыеНаОснованииДокументы.Получить(j).Идентификатор=Вид Тогда Если ФлагСтрока=0 Тогда Список.ДобавитьЗначение(Ж); Иначе Список.ДобавитьЗначение(Ж.Идентификатор); КонецЕсли; Прервать; КонецЕсли; КонецЦикла; КонецЦикла; //проверка Если Список.РазмерСписка()=0 Тогда Возврат(0); ИначеЕсли ФлагСтрока=0 Тогда Возврат(1); Иначе Список=Список.ВСтрокуСРазделителями(); Список=СтрЗаменить(Список,Симв(34),""); Возврат(1); КонецЕсли; КонецФункции //функция возвращает первый подчинённый документ заданного вида Функция гПодчиненныйДокумент(Ко,ВидДок) Экспорт //поиск Если Ко.Выбран()=1 Тогда Д=СоздатьОбъект("Документ"); Если Д.ВыбратьПодчиненныеДокументы(,,Ко.ТекущийДокумент())=1 Тогда Пока Д.ПолучитьДокумент()=1 Цикл Если Д.Вид()=ВидДок Тогда Возврат Д.ТекущийДокумент(); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; //возврат Возврат ПолучитьПустоеЗначение("Документ."+ВидДок); КонецФункции //функция возвращает ссылку на заданный реквизит объекта метаданных Документ Функция гРеквизитДокумента(Документ,Реквизит) Экспорт Если Метаданные.Документ(Документ).РеквизитШапки(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Документ(Документ).РеквизитШапки(Реквизит); ИначеЕсли Метаданные.Документ(Документ).РеквизитТабличнойЧасти(Реквизит).Выбран()=1 Тогда Возврат Метаданные.Документ(Документ).РеквизитТабличнойЧасти(Реквизит); ИначеЕсли Метаданные.ОбщийРеквизитДокумента(Реквизит).Выбран()=1 Тогда Возврат Метаданные.ОбщийРеквизитДокумента(Реквизит); КонецЕсли; КонецФункции //функция создаёт список реквизитов документа Процедура гСписокРеквизитовДокумента(Список,Документ,ФлагПредставление=0) Экспорт //шапка Для i=1 По Метаданные.Документ(Документ).РеквизитШапки() Цикл Ж=Метаданные.Документ(Документ).РеквизитШапки(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Ш: "+Представление); КонецЦикла; //многострочка Для i=1 По Метаданные.Документ(Документ).РеквизитТабличнойЧасти() Цикл Ж=Метаданные.Документ(Документ).РеквизитТабличнойЧасти(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"Т: "+Представление); КонецЦикла; //общий Для i=1 По Метаданные.ОбщийРеквизитДокумента() Цикл Ж=Метаданные.ОбщийРеквизитДокумента(i); Если ФлагПредставление=0 Тогда Представление=Ж.Идентификатор; Иначе Представление=Ж.Представление(); КонецЕсли; Список.ДобавитьЗначение(Ж.Идентификатор,"О: "+Представление); КонецЦикла; КонецПроцедуры РезюмеВ статье описаны методы работы с метаданными системы "1С:Предприятие 7.7". Образцы практического применения описанных методов Вы сможете найти в статьях "Отчёты для 1С" и "Обработки для 1С". - Совет:
- Файл синтаксис-помощника с описанием недокументированных методов работы с метаданными системы "1С:Предприятие", составленный под редакцией Моисеенко, можно скачать здесь.
- Дополнительная информация по теме кодирования в 1С:
-
- Смотрите также:
- Обработки для 1С
- Отчёты для 1С
- Скачать программы для 1С
|