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

Хранилище

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

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



> Получить текущий объект метаданных          
Gigi Подменю пользователя
сообщение 14.07.17, 13:11
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Привет всем!
Никто не подскажет как получить текущий элемент метаданных.
Рыл везде ... все что нашел .... нечто подобное ...
//Сообщить(Метаданные.Справочники[1]);
Для Каждого Справочник из Метаданные.Справочники Цикл
Сообщить (Справочник.Имя);
КонецЦикла;

А мне нужно не это, а нужно получить текущий элемент метаданных. Не по индексу не по указанию имени, а в зависимости от события.
Например при событии формы списка: СписокПередУдалением()
Тут в самом начале нужна линия кода, которая выдавала бы имя метаданных, к которому относиться текущий список.
Или на пример ФормаЭлемента и реквизиты. Где нужно получить имя объекта метаданных этой ФормаЭлемента.
Вот такой вот вопрос.
Буду признателен!

Vofka Подменю пользователя
сообщение 14.07.17, 13:24
Сообщение #2

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

Из
ЭтаФорма.ИмяФормы

можно узнать объект метаданных.

А вообще, если этот код будет писаться в форме - то и так понятно, что это за форма и к чему относится.

Сообщение отредактировал Vofka - 14.07.17, 13:24

Bernet Подменю пользователя
сообщение 14.07.17, 13:26
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Gigi @ Сегодня, 14:11 * ,
не совсем понятно описали что вам надо: именно имя объекта метаданных или просто тип значения?
если в контексте вашего примера с формой списка, то перед удалением можно получить имя метаданных следующим образом:
&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
    
    ТекущаяСтрока = Элементы.Список.ТекущаяСтрока;
    
    ТекущийОбъектМетаданных = УзнатьОбъектНаСервере(ТекущаяСтрока);
    Сообщить(ТекущийОбъектМетаданных);
    
КонецПроцедуры

&НаСервере
Функция УзнатьОбъектНаСервере(СсылкаНаОбъект)
    
    ТекущийОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    Возврат ТекущийОбъект.Метаданные().Имя;
    
КонецФункции

Одним словом - у вас всегда в форме есть ссылка на Объект. По этой ссылке вы можете или проверить тип значения, или если нужны метаданные взять код который я привел выше и вместо
Цитата
УзнатьОбъектНаСервере(ТекущаяСтрока);
на вход функции дать вашу ссылку


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 14.07.17, 13:48
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Vofka @ Сегодня, 14:24 * ,
Цитата(Vofka @ 14.07.17, 14:24) *
ЭтаФорма.ИмяФормы

Код выдает адрес: Справчники.ИмяЭлемента.Форма.ФормаСписка(Выбора ...)
А нужно только Справчники.ИмяЭлемента и все.
Можно ли это одной командой без парса.

Bernet @ Сегодня, 14:26 * ,
Цитата(Bernet @ 14.07.17, 14:26) *
не совсем понятно описали что вам надо: именно имя объекта метаданных или просто тип значения?
если в контексте вашего примера с формой списка, то перед удалением можно получить имя метаданных следующим образом:

Вопрос решен! Работает .... спасибо! То что и было нужно.
быстро и конкретно.
Спасибо!


Gigi @ Сегодня, 14:38 * ,
Да ... еще хотел продолжить тему ... пожалуйста..
Все нормально только, еще один вопрос.
Как получить объект принадлежности текущего выделенного элемента списка.
Т.е. получить только то к чему имеет отношение выделенный элемент списка.... это Справочник документ, рег сведений и т.д. т.е. в данном случае это помоем у тип значения
Вот еще какой вопрос.
Буду вдвойне признателен!

Bernet Подменю пользователя
сообщение 14.07.17, 14:08
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Gigi @ Сегодня, 14:48 * ,
Ну если у вас есть некий список с кучей разношерстных элементов, если там ссылки, то опять таки так как я писал выше. Например список:
Цитата
1) Вася Пупкин [СправочникСсылка.Контрагент]
2) Петров Петя [СправочникСсылка.ФизЛица]
3) Реализация товаров услуг № 1 от 01.01.2017 [ДокументСсылка.РеализацияТоваровУслуг]
4) Красный [ПланВидовХарактеристикСсылка.СвойстваОбъектов]
и т.д.

Регистр вы в список не запихнете, там не ссылка, там записи регистров, грубо говоря целые строки.
Но если у вас такой список как я привел, то моя функция вам вернет имя метаданных.
Цитата
&НаСервере
Функция УзнатьОбъектНаСервере(СсылкаНаОбъект)

ТекущийОбъект = СсылкаНаОбъект.ПолучитьОбъект();
Возврат ТекущийОбъект.Метаданные().Имя;

КонецФункции

В качестве ссылки на объект передавайте элемент вашего списка

а кажись допер что вы хотите: вы хотите получить корневой элемент, типа это Справочник или Документ или Регистр?
Тогда типа так:
&НаСервере
Функция УзнатьОбъектНаСервере(СсылкаНаОбъект)
    
    ТекущийОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    
    ПолноеИмя = ТекущийОбъект.Метаданные().ПолноеИмя();
    
    ПозицияТочки = СтрНайти(ПолноеИмя, ".");
    
    Возврат Лев(ПолноеИмя, ПозицияТочки-1);
    
КонецФункции
Если у вас например была ссылка на справочник Контрагенты, то вызвав эту функцию получите слово "Справочник"


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 14.07.17, 14:15
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Bernet @ Сегодня, 14:56 * ,
Цитата(Bernet @ 14.07.17, 14:56) *
В качестве ссылки на объект передавайте элемент вашего списка

Ну да передал как было указано...
 ТекущаяСтрока = Элементы.Список.ТекущаяСтрока;
ТекущийОбъектМетаданных = УзнатьОбъектНаСервере(ТекущаяСтрока);

Насколько понимаю элемент списка так и передается в функцию.
Но функция УзнатьОбъектНаСервере(СсылкаНаОбъект) передает имя. Нужна другая функция, которая передаст тип ... это справочник или документ. Ладно забудем о регистре ... фиг с ним.
Вот то, что нужно еще

Bernet Подменю пользователя
сообщение 14.07.17, 14:22
Сообщение #7

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Gigi @ Сегодня, 15:15 * ,
если нужен тип в функции уберите имя
Цитата
ТекущийОбъект.Метаданные()

вернет вам непосредственно Метаданные, "Контрагенты", или полное имя "Справочник.Контрагенты"


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 14.07.17, 14:48
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(Bernet @ 14.07.17, 15:08) *
Если у вас например была ссылка на справочник Контрагенты, то вызвав эту функцию получите слово "Справочник"

Ну ладно! Я думал без парса можно.
Но в остальном попробую и думаю буду доволен.

Bernet Подменю пользователя
сообщение 14.07.17, 14:51
Сообщение #9

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Gigi @ Сегодня, 15:48 * ,
так пробовали? все равно не то?
Цитата
&НаСервере
Функция УзнатьОбъектНаСервере(СсылкаНаОбъект)

ТекущийОбъект = СсылкаНаОбъект.ПолучитьОбъект();

ПолноеИмя = ТекущийОбъект.Метаданные().ПолноеИмя();

ПозицияТочки = СтрНайти(ПолноеИмя, ".");

Возврат Лев(ПолноеИмя, ПозицияТочки-1);

КонецФункции


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gigi,

Brutok Подменю пользователя
сообщение 14.07.17, 20:47
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 24
Спасибо сказали: 0 раз
Рейтинг: 0

попробуйте это
имяМетаданных = Объект.Ссылка.Метаданные().Имя;
Метаданные.Документы.Найти(имяМетаданных);
или
ТипЗнч(Объект.Ссылка)

Не пойму для чего вам это нужно. Более конкретней изложите тз?




vasya_nepupkin Подменю пользователя
сообщение 15.07.17, 1:19
Сообщение #11

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Brutok @ Вчера, 20:47 * ,

Скорее всего это нужно для написания какого-то универсального кода?! Объект.Ссылка.Метаданные() отлично сработает для хранимых объектов типа Справочник, Документ, Задача и т. д., но не для обработок и отчетов..

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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