Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Методы работы с метаданными системы "1С:Предприятие 7.7"          
Vofka Подменю пользователя
сообщение 08.12.11, 17:44
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

В этой статье описываются методы работы с метаданными системы "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 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!