|
Как из Типов вытащить наименование объекта метаданных | ☑ | ||
---|---|---|---|---|
0
shlyahtich
07.12.12
✎
18:16
|
Как из Типов вытащить наименование объекта метаданных в текстовом например виде, чтоб использовать в динамически формируемомо запросе
http://narod.ru/disk/64335166001.9241f3e857978c3747eee98b90dd86c2/Изображение.jpg.html |
|||
1
Нуф-Нуф
07.12.12
✎
18:18
|
мсье не знаком с радикалом?
|
|||
2
prog0101
07.12.12
✎
18:19
|
(0)соединить с подготовленной таблицей
|
|||
3
Reset
07.12.12
✎
18:19
|
(1) не надо, я открыл тую ссылку... не надо
|
|||
4
Reset
07.12.12
✎
18:20
|
(0)Уконкретьтте вопрос, желательно словами
|
|||
5
shlyahtich
07.12.12
✎
18:24
|
(1) нет
|
|||
6
Reset
07.12.12
✎
18:25
|
Ухожу, кину несколько названий, может помогут
Типы() НайтиПоТипу() СодержитТип() |
|||
7
Нуф-Нуф
07.12.12
✎
18:25
|
ОбъектМетаданныхКонфигурация.НайтиПоТипу (ConfigurationMetadataObject.FindByType)
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject) НайтиПоТипу (FindByType) Синтаксис: НайтиПоТипу(<Тип>) Параметры: <Тип> (обязательный) Тип: Тип. Тип, по которому будет выполнен поиск объекта метаданных. Возвращаемое значение: Тип: ОбъектМетаданных: ВнешнийИсточникДанных, ОбъектМетаданных: Поле, ОбъектМетаданных: Таблица, ОбъектМетаданных: ПланВидовРасчета, ОбъектМетаданных: ПланСчетов, ОбъектМетаданных: БизнесПроцесс, ОбъектМетаданных: Документ, ОбъектМетаданных: ЖурналДокументов, ОбъектМетаданных: Задача, ОбъектМетаданных: ПланВидовХарактеристик, ОбъектМетаданных: ПланОбмена, ОбъектМетаданных: РегистрБухгалтерии, ОбъектМетаданных: РегистрНакопления, ОбъектМетаданных: РегистрРасчета, ОбъектМетаданных: РегистрСведений, ОбъектМетаданных: Справочник, ОбъектМетаданных: ФункциональнаяОпция, ОбъектМетаданных: Команда, ОбъектМетаданных: ГруппаКоманд, ОбъектМетаданных: ХранилищеНастроек, ОбъектМетаданных: ОбщаяКоманда, ОбъектМетаданных: WebСервис, ОбъектМетаданных: WSСсылка, ОбъектМетаданных: Интерфейс, ОбъектМетаданных: Константа, ОбъектМетаданных: КритерийОтбора, ОбъектМетаданных: Нумератор, ОбъектМетаданных: Обработка, ОбъектМетаданных: ОбщаяКартинка, ОбъектМетаданных: Макет, ОбъектМетаданных: ОбщийМодуль, ОбъектМетаданных: Форма , ОбъектМетаданных: Стиль, ОбъектМетаданных: Язык, ОбъектМетаданных: Отчет, ОбъектМетаданных: ПакетXDTO, ОбъектМетаданных: ПараметрСеанса, ОбъектМетаданных: Перечисление, ОбъектМетаданных: ПодпискаНаСобытие, ОбъектМетаданных: Подсистема, ОбъектМетаданных: Последовательность, ОбъектМетаданных: РегламентноеЗадание, ОбъектМетаданных: Роль, ОбъектМетаданных: ЭлементСтиля, ОбъектМетаданных: Графа, ОбъектМетаданных: Измерение, ОбъектМетаданных: ЗначениеПеречисления, ОбъектМетаданных: ОперацияWebСервиса, ОбъектМетаданных: Перерасчет, ОбъектМетаданных: ПараметрWebСервиса, ОбъектМетаданных: ПризнакУчетаПланаСчетов, ОбъектМетаданных: ПризнакУчетаСубконтоПланаСчетов, ОбъектМетаданных: Реквизит, ОбъектМетаданных: ТабличнаяЧасть, ОбъектМетаданных: Ресурс, ОбъектМетаданных: РеквизитАдресации, ОбъектМетаданных: ОбщийРеквизит; Неопределено. Неопределено - объект метаданных не найден. Описание: Осуществляет поиск объекта метаданных, отвечающего за указанный тип. Например, для объекта типа Справочник.Товары позволяет найти объект метаданных Справочник.Товары. Объекты метаданных конфигурации, отвечающие за прикладные объекты, определяют соответствующий набор типов. Например, наличие в конфигурации объекта метаданных Справочник.Валюты определяет наличие в системе нескольких типов (СправочникСсылка.Валюты, СправочникМенеджер.Валюты, СправочникОбъект.Валюты, СправочникВыборка.Валюты, СправочникСписок.Валюты). Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Позволяет по указанному типу найти объект метаданных, который определяет его в конфигурации. Пример: Список = Новый СписокЗначений; Для Ном = 1 по 3 Цикл Если Ном <= Счет.ВидыСубконто.Количество() И ЗначениеЗаполнено(Счет) Тогда ВидСубконто = Счет.ВидыСубконто[Ном-1].ВидСубконто; МетаТип = Метаданные.НайтиПоТипу(ВидСубконто.ТипЗначения.Типы()[0]); Попытка Если МетаТип.Реквизиты.Количество() > 0 Тогда Список.Добавить(Ном-1, ВидСубконто.Наименование,,); КонецЕсли; Исключение КонецПопытки; КонецЕсли; КонецЦикла; |
|||
8
Reset
07.12.12
✎
18:26
|
+ (6)
Содержит() |
|||
9
shlyahtich
07.12.12
✎
18:26
|
(4) в Пождписке на события есть Источник - там перечислены объекты (список ДокументОбъект: Договор, ДокументОбъект: Поступление товаров и услуг ... и т.д) - надо вытащить имя
|
|||
10
Нуф-Нуф
07.12.12
✎
18:27
|
если ты ловишь в подписке, то у источника будет метод Метеданные()
|
|||
11
Reset
07.12.12
✎
18:28
|
(9) Источник - это описание типов. У него есть метод Типы() - это массив.
|
|||
12
Reset
07.12.12
✎
18:29
|
...массив типов.
Типы можно найти напр методом НайтиПоТипу, а там уже и имя будет |
|||
13
Reset
07.12.12
✎
18:31
|
ну вон в (7) пример.
Удачи. |
|||
14
shlyahtich
07.12.12
✎
18:36
|
(9) О! кажется то что надо - ща провею
|
|||
15
shlyahtich
07.12.12
✎
18:43
|
Нда - нет этого метода
|
|||
16
Нуф-Нуф
07.12.12
✎
18:45
|
что за подписка. на каких объектах?
|
|||
17
shlyahtich
07.12.12
✎
18:51
|
Я понял
Метаданные.ПодпискиНаСобытия.ПередЗаписьюДокументаДатаЗапретаРедактирования.Источник.Типы() Это массив В цикле найду для каждого значения элемента массива например ДокуменОбъект: Поступление товаров и услуг ТипЗначения() |
|||
18
ЧашкаЧая
07.12.12
✎
18:53
|
Тебе нужна строка название документа?
Источник.Метаданные().Имя |
|||
19
shlyahtich
07.12.12
✎
18:57
|
(18)
Метаданные.ПодпискиНаСобытия.ПередЗаписьюДокументаДатаЗапретаРедактирования.Источник нет там такого метода .Метаданные() резет и нуф нуф верно сказали |
|||
20
Serginio1
07.12.12
✎
19:07
|
||||
21
shlyahtich
07.12.12
✎
19:12
|
решение такое
СписокДок = Метаданные.ПодпискиНаСобытия.ПередЗаписьюДокументаЗапретНаРеквизитКонтрагентСПометкойУдаления.Источник.Типы(); Для Ном = 1 по СписокДок.Количество() Цикл Метаданные.НайтиПоТипу(СписокДок[Ном]).ПолноеИмя() КонецЦикла; |
|||
22
shlyahtich
07.12.12
✎
19:14
|
Выдает как раз то что надо чтоб сформировать запрос
например один док из примерно 100 "Документ.СведенияОДоходахФизлиц" Далее дело техники сделать запрос и вытащить из док-в то что нужно - спасибо тема закрыта |
|||
23
zak555
07.12.12
✎
19:14
|
(21) чем выше варианты не устраивают ?
|
|||
24
shlyahtich
07.12.12
✎
19:15
|
(23)
СписокДок = Метаданные.ПодпискиНаСобытия.ПередЗаписьюДокументаЗапретНаРеквизитКонтрагентСПометкойУдаления.Источник.Типы(); Для Ном = 1 по СписокДок.Количество() Цикл Метаданные.НайтиПоТипу(СписокДок[Ном]).ПолноеИмя() КонецЦикла; по моему коротко и понятно - или что то не устраивает? |
|||
25
zak555
07.12.12
✎
19:19
|
XMLТип
|
|||
26
shlyahtich
07.12.12
✎
19:19
|
(23)
проверено в отладчике - все Вы напишите полный текст - я не понимаю. Все решение у меня - 3 строки |
|||
27
shlyahtich
07.12.12
✎
22:05
|
Чуть не забыл
Итоговый результат - это обработчики событий //{Проверка нет ли в документе реквизита контрагент с пометкой на удаление // Процедура ПередЗаписьюДокументовПроверкаНаРеквизитКонтрагентСПометкойНаУдаление(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Контрагент",Источник) Тогда #Если Клиент Тогда Если Источник.Контрагент.ПометкаУдаления Тогда Отказ = Истина; Сообщить("Проведение и запись документов с контрагентами, помеченными на удаление запрещено. Изменения не могут быть записаны...", СтатусСообщения.Важное); КонецЕсли; #КонецЕсли КонецЕсли; КонецПроцедуры //} //{нельзя проводить документы с помеченными на удаление контрагентами Процедура ПередПометкойНаУдалениеСправочникаКонтрагентыПередЗаписью(Источник, Отказ) Экспорт Если Источник.ПометкаУдаления Тогда СписокДок = Метаданные.ПодпискиНаСобытия.ПередЗаписьюДокументаЗапретНаРеквизитКонтрагентСПометкойУдаления.Источник.Типы(); ТекстЗапросаРез="ВЫБРАТЬ СУММА(ВложенныйЗапрос.Ссылка) КАК Ссылка ИЗ ("; Для Ном = 0 по СписокДок.Количество()-1 Цикл ДокОбъект=Метаданные.НайтиПоТипу(СписокДок[Ном]).ПолноеИмя(); Если ОбщегоНазначения.ЕстьРеквизитОбъектаМетаданных("Контрагент",ДокОбъект) Тогда ТекстЗапроса= "ВЫБРАТЬ КОЛИЧЕСТВО("+ДокОбъект+".Ссылка) ИЗ "+ДокОбъект+" ГДЕ "+ДокОбъект+".Проведен = ИСТИНА И "+ДокОбъект+".Контрагент = &Контрагент"+Символы.ПС; ТекстЗапросаРез = ТекстЗапросаРез+" "+ТекстЗапроса; ТекстЗапросаРез = ТекстЗапросаРез + " ОБЪЕДИНИТЬ ВСЕ"; КонецЕсли; КонецЦикла; ТекстЗапросаРез = Лев(ТекстЗапросаРез, СтрДлина(ТекстЗапросаРез)-15); ТекстЗапросаРез = ТекстЗапросаРез + ") КАК ВложенныйЗапрос"; Запрос = Новый Запрос(); Запрос.Текст = ТекстЗапросаРез; Запрос.УстановитьПараметр("Контрагент",Источник.Ссылка); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() тогда Отказ = ИСТИНА; Сообщить("Пометка на удаление контрагента запрещена, так как есть проведенные документы с "+Источник,СтатусСообщения.Важное); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
28
shlyahtich
07.12.12
✎
22:06
|
Задача - не позволить помечать на удаление контрагента, если есть док с ним проведенный.
Может кто лучше знает как? |
|||
29
shlyahtich
07.12.12
✎
22:07
|
Ну и функции... для полноты
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт Если Объект.Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции //Объект строка здесь Функция ЕстьРеквизитОбъектаМетаданных(ИмяРеквизита, Объект) Экспорт Если Метаданные.НайтиПоПолномуИмени(Объект).Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции Функция ЕстьРеквизитОсновнойФормы(ИмяРеквизита, Объект) Экспорт Форма = Объект.ПолучитьФорму(); Если Форма.ЭлементыФормы.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |