|
Как получить менеджер из строки - типа значения | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
31.10.13
✎
18:32
|
Здравствуйте всем. Есть переменная. Тип - Строка. Значение - Тип строкой. Пример значения этой переменной: "СправочникСсылка.Номенклатура" .
Требуется с помощью этой переменной получить менеджер объекта конфигурации для использования его метода ПолучитьСсылку(<УникальныйИдентификатор>) . То есть если значение переменной "СправочникСсылка.Номенклатура", должно получить Справочники.Номенклатура Если значение переменной "ДокументСсылка.ВводОстатков", должно получить Документы.ВводОстатков Чувствую, есть какой-то простой способ без привлечения функций работы со значениями типа Строка. Никто не подскажет? Заранее спасибо. |
|||
1
Управляемые Формы
31.10.13
✎
18:34
|
(0) Подвела тебя чуйка. Только через СтрЗаменить
|
|||
2
PiotrLoginov
31.10.13
✎
18:41
|
блин. ну не беда. спасибо, добрый человек
|
|||
3
Fragster
модератор
31.10.13
✎
18:41
|
я бы автору рекомендовал почитать про сериализацию XML и назначение типа. а то чувствую типа обмен такой мутит странный
|
|||
4
PiotrLoginov
31.10.13
✎
19:23
|
костыли мутю. в таких случаях часто встречается странное и неестественное
|
|||
5
smaharbA
31.10.13
✎
19:32
|
Вычислить("Новый СправочникСсылка.Номенклатура").Метаданные().ПолноеИмя()
|
|||
6
smaharbA
31.10.13
✎
19:32
|
Об=Новый("СправочникСсылка.Номенклатура");
Сообщить(Об.Метаданные().ПолноеИмя()); |
|||
7
smaharbA
31.10.13
✎
19:33
|
(3) абсолютно пох на сериализацию
|
|||
8
smaharbA
31.10.13
✎
19:35
|
думается автору поможет строка, если вкурит
Новый(Тип("СправочникСсылка.Номенклатура")) |
|||
9
Fragster
модератор
31.10.13
✎
19:49
|
(7) а теперь в вариантах (5)(6)(8) - получи именно с нужным УИДом ссылку. Добавляется еще немного строк :)
если уж делать все - то делать все можно прямее. Хотя ты, конечно, любитель /оригинальных/ решений, да |
|||
10
Fragster
модератор
31.10.13
✎
19:51
|
просто прямее можно начать делать несколько раньше, тогда не надо будет искать /оригинальных/ и /остроумных/ решений, хотя порой и некоторые полезности при этом пути открываются.
|
|||
11
mrDSide
31.10.13
✎
19:53
|
// Проверяет есть ли реквизит в метаданных документа
// Параметры: // МД - метаданные документа; // ИмяРеквизита - имя реквизита; // Функция ЕстьРеквизитДокумента(МД, ИмяРеквизита) Экспорт Возврат НЕ МД.Реквизиты.Найти(ИмяРеквизита)=Неопределено КонецФункции // Проверяет является ли объект метаданных регистром накопления // Параметры: // ОбъектМД - объект метаданных; // Функция ЭтоРегистрНакопления(ОбъектМД) Экспорт ПолноеИмя = ОбъектМД.ПолноеИмя(); Если Найти(ПолноеИмя, "РегистрНакопления") Тогда Возврат Истина КонецЕсли; Возврат Ложь КонецФункции // Проверяет является ли объект метаданных регистром сведений // Параметры: // ОбъектМД - объект метаданных; // Функция ЭтоРегистрСведений(ОбъектМД) Экспорт ПолноеИмя = ОбъектМД.ПолноеИмя(); Если Найти(ПолноеИмя, "РегистрСведений") Тогда Возврат Истина КонецЕсли; Возврат Ложь КонецФункции // Проверяет является ли объект метаданных регистром сведений // Параметры: // ОбъектМД - объект метаданных; // Функция ЭтоРегистрРасчета(ОбъектМД) Экспорт ПолноеИмя = ОбъектМД.ПолноеИмя(); Если Найти(ПолноеИмя, "РегистрРасчета") Тогда Возврат Истина КонецЕсли; Возврат Ложь КонецФункции // Проверяет является ли объект метаданных регистром сведений // Параметры: // ОбъектМД - объект метаданных; // Функция ЭтоРегистрБухгалтерии(ОбъектМД) Экспорт ПолноеИмя = ОбъектМД.ПолноеИмя(); Если Найти(ПолноеИмя, "РегистрБухгалтерии") Тогда Возврат Истина КонецЕсли; Возврат Ложь КонецФункции // Получаем нужные данные из метаданных регистра // Параметры: // Объект - объект метаданных; // ЧтоВернуть - 1-измерения, 2-ресурсы, 3-реквизиты; // Функция ПолучитьИзМетаданныхРегистра(Объект, ЧтоВернуть=Неопределено) Экспорт Массив = Новый Массив; Если ЧтоВернуть=Неопределено ИЛИ ЧтоВернуть=1 Тогда Для каждого эл Из Объект.Измерения Цикл Массив.Добавить(Новый Структура("Имя, Тип", эл.Имя, эл.Тип)) КонецЦикла; КонецЕсли; Если ЧтоВернуть=Неопределено ИЛИ ЧтоВернуть=2 Тогда Для каждого эл Из Объект.Ресурсы Цикл Массив.Добавить(Новый Структура("Имя, Тип", эл.Имя, эл.Тип)) КонецЦикла; КонецЕсли; Если ЧтоВернуть=Неопределено ИЛИ ЧтоВернуть=3 Тогда Для каждого эл Из Объект.Реквизиты Цикл Массив.Добавить(Новый Структура("Имя, Тип", эл.Имя, эл.Тип)) КонецЦикла; КонецЕсли; Возврат Массив КонецФункции // ПолучитьИзМетаданныхРегистра // Возвращает ссылку на менеджер регистра по переданному объекту метаданных // Параметры: // Объект - объект метаданных; // Функция ВернутьОбъектДоступаКДаннымРегистр(Объект) Экспорт ИмяРегистра = РазложитьИмяРегистра(Объект).Имя; Если ЭтоРегистрБухгалтерии(Объект) Тогда Возврат РегистрыБухгалтерии[ИмяРегистра] ИначеЕсли ЭтоРегистрНакопления(Объект) Тогда Возврат РегистрыНакопления[ИмяРегистра] ИначеЕсли ЭтоРегистрРасчета(Объект) Тогда Возврат РегистрыРасчета[ИмяРегистра] ИначеЕсли ЭтоРегистрСведений(Объект) Тогда Возврат РегистрыСведений[ИмяРегистра] КонецЕсли КонецФункции // ВернутьОбъектДоступаКДаннымРегистр // Возвращает структуру с именем вида, именем регистра // Параметры: // Объект - объект метаданных; // Функция РазложитьИмяРегистра(Объект) Экспорт ПолноеИмя = Объект.ПолноеИмя(); Тчк = Найти(ПолноеИмя, "."); ИмяВида = Лев(ПолноеИмя, Тчк-1); ИмяРегистра = Прав(ПолноеИмя, СтрДлина(ПолноеИмя)-Тчк); Возврат Новый Структура("Вид, Имя", ИмяВида, ИмяРегистра) КонецФункции |
|||
12
mrDSide
31.10.13
✎
19:54
|
Это работает у меня на УФ. С документами, справочниками - доработать (дописать).
|
|||
13
smaharbA
31.10.13
✎
20:07
|
(9) см (8) внимательно
|
|||
14
smaharbA
31.10.13
✎
20:10
|
лучше скажи(те)
когда указываешь
пункты в меню добавляются - это багофича или это фича ? |
|||
15
smaharbA
31.10.13
✎
20:11
|
восьмерку осваиваю только
|
|||
16
Fragster
модератор
31.10.13
✎
20:11
|
(15) фича
|
|||
17
smaharbA
31.10.13
✎
20:12
|
(16) спасибо !
значит можно смело применять ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |