Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как получить уникальный идентификатор интерфейса (http://forums.kuban.ru/f1040/kak_poluchit-_unikal-nyj_identifikator_interfejsa-8020415.html)

war 03.10.2016 05:19

Как получить уникальный идентификатор интерфейса
 
Необходимо получить уникальное представление интерфейса.
В виде ГУИД, или любом другом. Наименование не подходит, т.к. может быть изменено.
ЗначениеВСтрокуВнутр() для любого интерфейса возвращает одинаковое значение.

USSR 03.10.2016 06:50

А зачем менять наименование интерфейса? В чем сакральный смысл ?

war 03.10.2016 06:54

Хм. Ну если так думать, то можно додумать до того, что вообще зачем что-то менять?
Ну а вдруг придётся?
И на самом деле меня интересует возможность получения уникального идентификатора объекта метаданных.
Можете что-нибудь подсказать по теме?

oops! 03.10.2016 07:31

(0) Уверен, что именно "объекта"?
вообще-то, у всех прикладных объектов есть метод УникальныйИдентификатор(), получаемый через ссылку на объект, а вот у интерфейса, а именно у управляемой формы, есть свойство с тем же именем:
[b]УправляемаяФорма (ManagedForm)[/b]
[b]УникальныйИдентификатор (UUID)[/b]

[b]Использование:[/b]
Только чтение.

[b]Описание:[/b]
Тип: УникальныйИдентификатор.
Уникальный идентификатор экземпляра формы.

[b]Доступность:[/b]
Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).

war 03.10.2016 07:40

Определился способ получения внутренних идентификаторов любого объекта конфигурации.
Навела на мысль функция конфигурации "Выгрузить файлы конфигурации...". Вся конфигурация вываливается в XML-файлы.
Проблема в том, что не могу создать нужный тип данных XDTO.

МассивИмен = Новый Массив;
МассивИмен.Добавить("http://v8.1c.ru/8.3/MDClasses");

ПакетыХДТО = ФабрикаXDTO.ЭкспортСхемыXML(МассивИмен);
ФабрикаХДТО = Новый ФабрикаXDTO(ПакетыХДТО);

ЗаписьХМЛ = Новый ЗаписьXML;
ЗаписьХМЛ.ОткрытьФайл("C:\test.xml");

ТипХМЛ = ФабрикаХДТО.Тип("http://v8.1c.ru/8.3/MDClasses","MetaDataObject.Interface");
ТипХДТО = ФабрикаХДТО.Создать(ТипХМЛ);

ТипХМЛ возвращается равным "Неопределено".
При экспорте пакетов XDTO возвращается пустой набор схем.
Есть у кого-нибудь файл с данной схемой?

war 03.10.2016 07:43

[quote=oops!;43000287] (0) Уверен, что именно "объекта"? вообще-то, у всех прикладных объектов есть метод УникальныйИдентификатор(), получаемый через ссылку на объект, а вот у интерфейса, а именно у управляемой формы, есть свойство с тем же именем: УправляемаяФорма (ManagedForm) УникальныйИдентификатор (UUID) Использование: Только чтение. Описание: Тип: УникальныйИдентификатор. Уникальный идентификатор экземпляра формы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). [/quote]

То, про что вы пишете - это уникальный идентификатор самой управляемой формы. Когда управляемая форма создается, ей назначается уникальный идентификатор.

А меня интересует уникальный идентификатор объекта конфигурации "Интерфейс". Он находится в ветке конфигурации "Общие" - "Интерфейсы".

USSR 03.10.2016 07:57

По моему имя интерфейса и есть его уникальный идентификатор ) И не надо его менять ) Может конечно и есть внутри конфиги и UID интерфейса, но хоть убей не вижу в нем прикладного значения для программиста. Вам для чего это надо ?) UID других объектов метаданных тоже как то используете ?

war 03.10.2016 08:06

На моей практике приличное число раз менял имена объектов метаданных (не интерфейсов, правда), чтобы имена соответствовали пользовательскому представлению.
В основном, конечно, отчеты и обработки, но были и документы, и справочники.
Не дам гарантии, что не будут изменены названию интерфейсов. Поэтому завязываться на имя, ну для меня это крайний вариант, который задействовать не хочу. Тем более, что есть возможность получить все-таки идентификатор.

USSR 03.10.2016 08:21

(7)Понятно, что изменить можно что угодно, но по моему Вы неправы, так как имя документа, справочника, интерфейса - это и есть уникальный идентификатор для прикладного разработчика, это не код элемента справочника, и не номер документа. Вы же пишете запрос и не боитесь написать "РеализацияТоваровУслуг" в страхе, что имя этого документаизменится

USSR 03.10.2016 08:25

Вам также может прийти в голову удалить интерфейс и создать его заново, в этом случае его GUID изменится. На мой взгляд Вы затеяли совершенно пустое дело ) Может я и неправ. Поменяете имя интерфейса, поменяете и модули, где на него ссылки. Не так уж и часто приходится ссылаться на интерфейсы. Но сама 1С не стесняется писать именно их имена )

war 03.10.2016 08:33

[quote=USSR;43000451] Вам также может прийти в голову удалить интерфейс и создать его заново, в этом случае его GUID изменится. На мой взгляд Вы затеяли совершенно пустое дело ) Может я и неправ. Поменяете имя интерфейса, поменяете и модули, где на него ссылки. Не так уж и часто приходится ссылаться на интерфейсы. Но сама 1С не стесняется писать именно их имена ) [/quote]
Я с вами согласен, если речь про типовой функционал. Тут что-то менять в именах метаданных себе дороже.
И не согласен, когда речь идет про НЕтиповой функционал.
Здесь как захочет заказчик (или архитектор БД в лице меня). Поэтому я считаю целесообразным завязаться именно на уникальный идентификатор.

oops! 04.10.2016 07:24

(5) Ты некромант? Завязывай програмить "обычное приложение". В управляемом приложении уже нет общего объекта "Интерфейс".

war 04.10.2016 08:44

)))) Не говорите это тем, у кого УПП, знатно переписанная "под себя".

VZ 04.10.2016 11:38

12-WAR > Если "под себя", то откуда пламенная страсть знать ГУИД интерфейса?

war 04.10.2016 12:06

[quote=VZ;43006988] 12-WAR > Если "под себя", то откуда пламенная страсть знать ГУИД интерфейса? [/quote]
Ну хочется мне решить данную задачу данным способом.
Заодно узнать, как узнать внутренний ИД объекта, простите за тавтологию.

USSR 04.10.2016 13:13

дурь это, а не желание решить задачу. Мы и задачу то не услышали, может и не надо ее решать, особенно таким способом. Упертость далеко не всегда полезна. Представляю тексn модуля :
Если UIDИнтерфейса = "a29ef903-a27a-4d34-ae00-0cd5d219c0e7" Тогда ...
Жесть ))) Так хочет архитектор БД )

bma1 04.10.2016 14:50

[quote=USSR;43007719]Если UIDИнтерфейса = "a29ef903-a27a-4d34-ae00-0cd5d219c0e7" Тогда ...[/quote]
И далее перебор всех возможных вариантов? Платят за строки кода?

oops! 04.10.2016 20:34

(15)+100500 :)
(0) По поводу GUID уясни для себя одну простую весчь:
1. Метод "УниверсальныйИдентификатор" доступен только у ссылок на прикладные объекты конфигурации (не у всех), т.е. на те объекты, которые могут быть созданы пользователем изнутри самой БД и представляют собой данные, наполняющие эту БД. Объекты самой конфигурации не могут иметь GUID, т.к. это не имеет смысла, доступ к ним осуществляется по уникальным именам, как они заданы в метаданных. Если ты это имя меняешь, то меняй и код программы.
2. Помимо метода "УниверсальныйИдентификатор" есть ещё общий объект с тем же именем, а также есть свойство у управляемой формы.
Вот, собственно, и всё.

war 05.10.2016 06:57

[quote=USSR;43007719]Мы и задачу то не услышали, может и не надо ее решать, особенно таким способом[/quote]
А я не хочу озвучивать ВСЮ задачу, я считаю это излишним. Я не хочу обсуждать саму задачу, и почему я выбрал именно такой способ для её реализации. Мне нужно получить конкретный ответ на конкретный вопрос от компетентных людей, а не помощь психоаналитика.
Грубо говоря есть вопрос, на который я пока не знаю ответ, я уверен, что он есть. И я его нашёл.

(17) Я, наверное, открою для Вас Америку, но уникальные индетификаторы имеются не только у объектов ссылочных типов (элементы справочников, документы и т.п.), но и у абсолютно всех объектов метаданных. У некоторых их можно вытащить без проблем; у некоторых с проблемами, но возможно; у некоторых пока не знал как, теперь знаю.

USSR 05.10.2016 09:50

(18)Удачи Вам ) Ищите и обрящете. Вытаскивайте, затаскивайте, утаскивайте. Вы глухой человек. Упертый, не приведщий ни одного аргумента в свою пользу, а потом мне лично неинтересный. Ничего личного. Но все таки совет - займитесь реальными задачами

USSR 05.10.2016 09:51

в том то и дело, что Вам нужна помощь психоаналитика. Вы зациклились))

war 05.10.2016 10:35

(19) Как это типично для "специалистов": не понять сути, попытаться перевести разговор в другую плоскость, всё обосрать и сбежать.
Ну и Вам, в таком случае, удачи.

USSR 05.10.2016 11:01

никто ничего не обсирал. Сути проблемы не было, так проблемы ваще не было. Вы же так и не сказали зачем Вам это надо, может можно все иначе разрулить. Ну то что что мы специалисты в кавычках, ну что тут поделать. Главное Вам в кавычки не попасть. Но Вы занимаетесь херней, а не задачи решаете) Не завидую Вашему УПП который весь под себя ) УПП под себя - это уже некоторый диагноз

USSR 05.10.2016 11:04

и еще раз для непонятливых - имя интерфейса - это и есть его уникальный идентификатор. Также как и вида справочника, документа, регистра сведений, накоплений и тд. Продолжайте упираться рогом )

war 05.10.2016 11:11

Уважаемый USSR, если для вас суть проблемы "получить внутренний идентификатор объекта метаданных, конкретно: интерфейса" это не суть проблемы, то сочинения писать я не собираюсь. Как и не хочу объяснять зачем мне это надо.
Если бы было не надо, поверьте, я бы не стал дурью маяться, и спрашивать совета просто ради того, чтобы спросить.
Есть конкретный вопрос - нужен конкретный ответ.
Знаете ответ - напишите. Не знаете ответа - не пытайтесь начать срач. Как и не пытайтесь играть в Кашпировского и ставить диагнозы на расстоянии.

war 05.10.2016 11:13

[quote=USSR;43013141]и еще раз для непонятливых - имя интерфейса - это и есть его уникальный идентификатор[/quote]
Вы выгрузите конфигурацию в XML. Тогда увидите, что такое уникальный идентификатор.

USSR 05.10.2016 11:16

(25)я ж не говорю что его нет ) Просто он никому даром не нужен с точки зрения его практической пользы. Вы немножко ...встряхнитесь...Может и Вам не нужен ?)

war 05.10.2016 11:31

(26) - Видишь суслика?
- Нет.
- А он есть.
Это по поводу практической пользы. Если Вы не видите её, это не значит что она отсутствует.

Мне на практике несколько раз приходилось несколько раз копаться в истории изменения конфигураций с анализом древних cf-шников (опять спросите - зачем?). Опять же сталкивался с изменением названий нетиповых объектов метаданных (документы, справочники и регистры).
Если опираться только на название - как вы узнаете как раньше назывался тот или иной объект?

Шухер 05.10.2016 11:43

[quote=WAR;43013344]как вы узнаете как раньше назывался тот или иной объект? [/quote]
Действительно, забавная история :)
Забавная, когда надо узнавать как эту нетиповую бобоську называл предыдущий архитектор.

[quote=WAR;43011919]У некоторых их можно вытащить без проблем; у некоторых с проблемами, но возможно; у некоторых пока не знал как, теперь знаю. [/quote]
Вообще раньше считалось хорошим тоном озвучивать найденное решение.

bma1 05.10.2016 11:48

Мне кажется автору хочется разбирать конфигурацию 1с как контейнер. Тут нужны внешние инструменты. На инфостарте было несколько штук с описаниями, что откуда выковыривается.

war 05.10.2016 11:55

(28) Пока всё на уровне идеи, но практически на 100% уверен, что сработает. Сделать свою XSD схему, по ней выгрузить интересующий объект метаданных. Полученный результат открываем через DOM-модель, получаем некий абстрактный объект с набором свойств. Забираем значений свойства UUID.
Попробовал на основе данных выгрузки конфигурации в файлы создать XSD схему = не взлетело. Ругается на неверное описание схемы. Времени нет сейчас с этим поплотнее повозиться, на выходных думаю заняться.
Решение (если получится) опубликую здесь.

(29) Вы в общем правы. Один внешний инструмент точно есть - выгрузка конфы в файлы. Потом хоть заанализироваться можно. ))) Но гораздо интереснее все получать из кода.

Helen1986 05.10.2016 12:30

[quote=WAR;43011919]А я не хочу озвучивать ВСЮ задачу, я считаю это излишним.[/quote]

считаю излишним озвучивать ответ на вопрос ТС

war 05.10.2016 12:32

[quote=Helen1986;43013668]считаю излишним озвучивать ответ на вопрос ТС [/quote]
Ну вот и тролли, наконец, подтянулись.

Helen1986 05.10.2016 12:36

[img]http://mafii.net/uploads/avatars/full/10May2015_09-59-43warinsoul.jpg[/img]

bma1 05.10.2016 12:52

[quote=Helen1986;43013668]считаю излишним озвучивать ответ на вопрос ТС [/quote]
я угадаю этот ответ с 7 букв...

war 05.10.2016 12:58

[quote=bma1;43013854] Цитата: Сообщение от Helen1986 считаю излишним озвучивать ответ на вопрос ТС я угадаю этот ответ с 7 букв... [/quote]

Ответ: "Я не знаю" - 7 букв ))))

Helen1986 05.10.2016 13:12

(35) ответ неверный - не учтены пробелы. Они тоже знаки

USSR 05.10.2016 14:32

Теперь мне по ночам будет снится огромный суслик с 36 разрядным, уникальным именем его вида ))

bma1 05.10.2016 14:55

[quote=USSR;43014539]огромный суслик с 36 разрядным, уникальным именем его вида [/quote]
megalonoctarodentis existencialae U.


Текущее время: 02:53. Часовой пояс GMT +3.