Метаданные и их идентификаторы

Публикация № 1168375

Разработка - БСП (Библиотека стандартных подсистем)

метаданные идентификаторы adhoc-solution интересное разработка

Идентификаторы (GUID'ы) метаданных конфигурации. Немного о том, как их получить.

Есть ли проблема

Каждый объект метаданных конфигурации имеет собственный уникальный идентификатор, который невозможно получить простым способом. Платформа 1С не предоставляет методов работы с этими внутренними свойствами, которые иногда все же нужны. Из штатных механизмов платформы для работы с метаданными мы имеем только метод "ПолноеИмя()", который вернет нам почти удобочитаемый идентификатор объекта.

ПолноеИмя = Метаданные.Документы.ЗаказКлиента.ПолноеИмя()
Сообщить(ПолноеИмя); // Выведет "Документ.ЗаказКлиента"

Нужно ли еще что-то? Иногда могут встать такие задачи, хоть и нестандартные:

  • Нужно отследить фактическую замену объекта метаданных. Например, если удалили справочник из конфигурации, но при этом добавили новый с таким же именем.
  • При возникновении ошибок, связанных с кэшем, в них может фигурировать идентификатор метаданных. Для расследования нужно распознать что это за объект.это ужас это просто ужас, Мем Кот который видел ужасные вещи - Рисовач .Ру
  • Для собственного решения по хранению информации о метаданных в конфигурации. Аналог справочника "ИдентификаторыОбъектовМетаданных" из БСП, в котором каждому объекту конфигурации (ну, почти каждому - только верхнеуровневым) соответствует элемент этого справочника по полному имени. По тому самому значению, полученному с помощью "ПолноеИмя()".
  • Или Вам просто интересно узнать, как подобную информацию получить.
  • Другие причины.

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

Путь БСП

Как уже упоминалось выше, в БСП есть справочник "Идентификаторы объектов метаданных", который содержит информацию об объектах метаданных конфигурации.

Обновляется автоматически в процедурах обновления БСП. Также обновление может быть запущено вручную.

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

Сопоставление элемента этого справочника с объектом метаданных конфигурации выполняется с помощью поля "ПолноеИмя", в которое записывается результат вызова функции "ПолноеИмя()" для объекта метаданных (см. начало статьи). Вот пример заполнения элемента из демобазы БСП для документа "Заказ клиента".

Кроме этого поля также есть "ЗначениеПустойСсылки", "НоваяСсылка", "ИмяПредопределенныхДанных" и "КлючОбъектаХранилища", но в их назначение погружаться сейчас не будем. Отмечу лишь, что они помогают провести "умное" обновление справочника с учетом переименований и других особенностей:

// Порядок обновления:
// 1. Переименование объектов метаданных (с учетом нижестоящих подсистем).
// 2. Обновление предопределенных идентификаторов (коллекций объектов метаданных).
// 3. Обновление идентификаторов объектов метаданных, которые    имеют ключ  объекта метаданных.
// 4. Обновление идентификаторов объектов метаданных, которые не имеют ключа объекта метаданных.
// 5. В процессе 3 и 4 пометка удаления дублей идентификаторов (по полным именам).
// 6. Добавление новых идентификаторов объектов метаданных.
// 7. Обновление родителей идентификаторов объектов метаданных и запись обновленных.

Подробнее Вы можете посмотреть самостоятельно в процедуре "ОбновитьДанныеСправочника", о которой мы уже говорили ранее.

Главное, что стоит сказать - это отсутствие необходимости сохранять уникальный идентификатор объекта метаданных для этого справочника и механизмов его обновления. Разработчики БСП нашли альтернативный путь и используют его.

Ручная работа

Но представим, что для нашей задачи все-таки нужен уникальный идентификатор объекта метаданных. Как его получить?

Самый простой способ - сделать вручную выгрузку конфигурации в файлы и посмотреть идентификатор самостоятельно. Для платформы 8.3 есть возможность выгружать конфигурацию в XML.

Файлы выгружаются в каталог, там мы и сможем найти нужную для нас информацию. Например, в демобазе БСП есть документ "_ДемоЗаказПокупателя". Идем в каталог с файлами конфигурации, переходим во вложенный каталог "Documents" и находим файл "_ДемоЗаказПокупателя.xml". Вот его содержимое (не все, только самая важная для нас часть):

<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject> <!-- Убрал пространства имен и некоторые другие атрибуты -->
	<Document uuid="4eee25b1-2da6-459b-953b-4c8d519c9bce">
		<InternalInfo>
			<xr:GeneratedType name="DocumentObject._ДемоЗаказПокупателя" category="Object">
				<xr:TypeId>eb4c3baa-9f3f-4988-b1cc-ebb9a21105ca</xr:TypeId>
				<xr:ValueId>bf5eaf96-437c-417c-96bd-5b4e968ab66b</xr:ValueId>
			</xr:GeneratedType>
			<xr:GeneratedType name="DocumentRef._ДемоЗаказПокупателя" category="Ref">
				<xr:TypeId>6e094677-52bb-4e65-8322-5fbd75bbdd8e</xr:TypeId>
				<xr:ValueId>ac0e6277-d79a-4c3d-aa88-9edcdaaeff3a</xr:ValueId>
			</xr:GeneratedType>
			<xr:GeneratedType name="DocumentSelection._ДемоЗаказПокупателя" category="Selection">
				<xr:TypeId>26d4fa62-e00f-4fb9-acaf-44033d6cf1d8</xr:TypeId>
				<xr:ValueId>7a336f96-3af1-4177-923a-579783b96811</xr:ValueId>
			</xr:GeneratedType>
			<xr:GeneratedType name="DocumentList._ДемоЗаказПокупателя" category="List">
				<xr:TypeId>11c10634-2427-4654-8c12-f68386be6e27</xr:TypeId>
				<xr:ValueId>b18e5dd3-3e87-4698-90b5-b79eae1ad923</xr:ValueId>
			</xr:GeneratedType>
			<xr:GeneratedType name="DocumentManager._ДемоЗаказПокупателя" category="Manager">
				<xr:TypeId>dca0d409-e137-46a7-8ca8-6408b204142e</xr:TypeId>
				<xr:ValueId>08f7715a-0036-463e-b649-22a98fb140e0</xr:ValueId>
			</xr:GeneratedType>
		</InternalInfo>	
		<!-- Тут еще много много информации об объекте метаданных -->
	</Document>
</MetaDataObject>

В первом узле, подчиненном "MetaDataObject", мы видим имя вида объекта (в нашем случае "Document", т.е. документ), а также его уникальный идентификатор. Да, в нашей конфигурации у документа "_ДемоЗаказПокупателя" идентификатор объекта метаданных - "4eee25b1-2da6-459b-953b-4c8d519c9bce". На самом деле тут можно узнать не только GUID объекта метаданных, но и другую служебную информацию:

  • Идентификатор различных связанных типов данных (объекта, ссылки, менеджера и др.).
  • Состав объекта (поля, типы и т.д.)
  • И кое-что другое.

Фактически это полная информация об объекте.

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

Извлекаем из журнала регистрации

Есть еще один необычный способ получения идентификаторов метаданных - это использование файлов журнала регистрации. Да, именно файлов, т.к. штатными средствами прочитать GUID объекта метаданных из них платформа 1С не позволяет.

Есть два формата журнала регистрации:

Например, для SQLite-формата идентификатор объекта метаданных хранится в таблице "MetadataCodes".

В текстовом формате идентификатор метаданных хранится в файле "1Cv8.lgf", который содержит информацию о ссылочных данных журнала. Записи с идентификатором "5" как раз и содержат информацию о метаданных. Вот пример такой записи.

Как именно читать данные из этих источников подробно останавливаться не будем. Но кратко перечислю основные варианты:

  • Для SQLite формата делать запросы через ODBC-драйвер к файлу журнала.
  • Для текстового формата - парсить файл "1Cv8.lgf".

В публикации "Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)" как раз есть информация о парсинге обоих форматов журнала регистрации и открытый исходный код. Также там есть пример конфигурации с внешним источником данных для получения данных журнала регистрации, но уже из внешнего хранилища.

Программные маневры

Предыдущие способы рабочие, но очень неудобные, да и не всегда подходят.

Минусы ручного анализа очевидны:

  • Большие трудозатраты для анализа, не говоря уже о случаях, когда нужно получить идентификаторы всех объектов метаданных.
  • Задача сама по себе требует автоматизации
  • Нет возможности программной работы

Для получения данных из журнала регистрации также есть недостатки:

  • Не все метаданные могли участвовать в событиях журнала, а значит их и не будет в исходных файлах
  • Необходимость парсинга / подключения к файлам журнала, что не всегда возможно для файлов с рабочего окружения

Но есть и третий способ - это программное получение GUID'ов метаданных с помощью программного кода. Для этого нужно выполнить следующую последовательность действий:

  1. Выгружаем конфигурацию в файлы
  2. Парсим основные файлы описания метаданных
  3. Обрабатываем результат
  4. Получаем таблицу метаданных с полями "Полное имя" и "GUID".

Рассмотрим кратко реализацию каждого шага.

Выгружаем и парсим

Для выгрузки конфигурации в файлы из кода встроенного языка платформы 1С запустим конфигуратор в пакетном режиме с указанием параметра "DumpConfigToFiles", который как раз и сделает то, что нам нужно. Вот простейший пример процедуры для этого.

Процедура ВыгрузитьКонфигурациюВКаталог(ИмяСервера, ИмяБазы, ИмяПользователь, ПарольПользователя, КаталогВыгрузи)
	
	КаталогСерверногоПриложения = КаталогПрограммы();
	ПриложениеТолстыйКлиент = КаталогСерверногоПриложения + "1cv8.exe";
	
	КомандаКонфигуратора = """" + ПриложениеТолстыйКлиент + """"
		+ " DESIGNER"
		+ " /S""" + ИмяСервера + "\" + ИмяБазы + """"
		+ " /N""" + ИмяПользователь + """"
		+ " /P""" + ПарольПользователя + """"
		+ " /DumpConfigToFiles """ + КаталогВыгрузи + """"
		+ " ";
		
	РезультатВыполнения = ВыполнитьПриложение(КомандаКонфигуратора);
	Если ЗначениеЗаполнено(РезультатВыполнения.Ошибки) Тогда
		ВызватьИсключение "Не удалось выгрузить конфигурацию в файлы.
			|Подробно:
			|" + РезультатВыполнения.Ошибки;
	КонецЕсли;
	
КонецПроцедуры

Мы формируем команду для запуска конфигуратора в пакетном режиме с указанием адреса информационной базы, а также данных для входа пользователя. Для параметра "DumpConfigToFiles" указывается каталог выгрузки. Вызвать процедуру очень просто, главное не забыть подставить в нее свои корректные параметры.

ИмяСервера = "localhost";
ИмяБазы = "bal_demo";
ИмяПользователь = "Администратор";
ПарольПользователя = "";	
КаталогВыгрузкиКонфигурации = "C:\cfg";
	
ВыгрузитьКонфигурациюВКаталог(
	ИмяСервера,
	ИмяБазы,
	ИмяПользователь,
	ПарольПользователя,
	КаталогВыгрузкиКонфигурации);

Функция "ВыполнитьПриложение" - это еще одна добавленная процедура, которая запускает указанную команду с таймаутом выполнения. Это особенно важно, т.к. при выполнении подобного кода на сервере может произойти зависание сеанса, если с приложением что-то пошло не так.

Подробнее о безопасном запуске приложений из 1С для Windows и Linux шел разговор в публикации "Вы запускаете приложения, но делаете это без уважения". Ниже под спойлером приведу исходный код этой процедуры и всех вспомогательных ее частей.

 
 Код для безопасного запуска приложений

После этого нам нужно выполнить парсинг выгруженных файлов, чтобы сформировать такую таблицу значений.

ТаблицаСИнформациеОМетаданных = Новый ТаблицаЗначений;
ТаблицаСИнформациеОМетаданных.Колонки.Добавить("ПолноеИмяМетаданных");
ТаблицаСИнформациеОМетаданных.Колонки.Добавить("ИдентификаторОбъектаМетаданных");

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

 
 Процедура "ТаблицаИдентификаторовОбъектовМетаданных"

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

// Та самая задача, ради которой стоит все это делать
Для Каждого Запись ИЗ ТаблицаСИнформациеОМетаданных Цикл
	Сообщить(Запись.ПолноеИмяМетаданных);
	Сообщить(Запись.ИдентификаторОбъектаМетаданных);
КонецЦикла;

Конечно, у этого подхода есть большой минус - мы зависим от запуска конфигуратора, а также не малое время выгрузки конфигурации. А если конфигуратор будет занят в этот момент, то мы получим ошибку. С Мем: "продолжаем разговор" - Все шаблоны - Meme-arsenal.comдругой стороны, операции можно выполнять раз в сутки, а результат сохранять в базе (например, в регистр сведений) и обращаться к нему когда необходимо.

Представленные алгоритмы не идеальны, но для базового варианта реализации могут подойти. Никто не мешает Вам доработать их под свои нужды.

Стоит ли того

Все зависит от поставленной задачи и интереса к работе платформы 1С. Но если сомневаетесь, то скорее всего все вышеописанное Вам и не нужно.

Однако, выгрузка конфигурации в файлы может использоваться для широкого спектра задач, а не только получения идентификаторов объектов метаданных:

  • Сохранение в системы контроля версий (внезапно!), таких как GIT.
  • Чтение информации о метаданных сторонними приложениями.
  • Задачи кодогенерации.
  • И многое другое.

А Вы используете выгрузку конфигурации в файлы?

Удачи и успехов в делах!

 
 Будьте в курсе!

Для Вас интересны темы по разработке на платформе 1С и связанные темы по разработке, администрированию? Присоединяйтесь в Telegram-канал, где будет появляться информация о моих новых статьях и разработках на Инфостарт, выходу обновлений, а также некоторые материалы по не1Сной тематике (СУБД, мониторинг, C# и кое-что другое).

Часть материалов, не подходящих сюда по темам, будут выходить на сайте. Там же можно ознакомиться с полным списком разработок для 1С. Думаю, что будет интересно.

Другие ссылки

Авторские разработки (все разработки на одной странице)

 
 Другие разработки (бесплатные и за $m)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3214 05.12.20 21:15 Сейчас в теме
Есть гораздо лучше способ, и без парсинга, просто напишите
СтрокаСГУИД = ЗначениеВСтрокуВнутр(Метаданные.Справочники.ВашиМетаданные)

Проверил, возвращает все-таки не тот гуид.
YPermitin; +1 Ответить
4. YPermitin 10459 06.12.20 10:36 Сейчас в теме
(1) да я пытался тоже этим способом. К большому сожалению не получилось (:
2. user1503726 05.12.20 21:38 Сейчас в теме
Спасибо. Правильно ли я понимаю, что конвертациях 2-3 гуиды элементов справочника метаданных не обязательно полностью совпадают с гуидами метаданных загруженной конфигурации?
Просто потому что в КД это никак не используется?
6. YPermitin 10459 06.12.20 10:38 Сейчас в теме
(2) в КД в XML вроде бы выгружаются идентификаторы типов, а не метаданных.
Но я могу ошибаться, давно уже не работал с ней, года 3.
user1503726; +1 Ответить
3. BackinSoda 06.12.20 00:30 Сейчас в теме
На скриншоте "сохранить конфигурацию в файл", а подразумевалось "выгрузить в файлы"
YPermitin; +1 Ответить
5. YPermitin 10459 06.12.20 10:37 Сейчас в теме
(3) верно.

Рука не то подчеркнула) Поправлю.
7. BlizD 828 06.12.20 10:38 Сейчас в теме
Добрый день, Юрий.

Возможно есть еще 1 вариант получения GUID, это с помощью Tool_1CD в файле OBJECTS.xml поле OBJID



Пример вызова Tool_1CD можно посмотреть вот тут Хранилище 1С. Просмотр истории хранилища обработкой (или тут https://github.com/BlizD/HistoryStorage)
artbear; sapervodichka; user1503726; YPermitin; +4 Ответить
8. BlizD 828 06.12.20 10:39 Сейчас в теме
(7) Правда не сверял совпадают ли УИДы с тем, что выгружаются по команде "Выгрузить конфигурацию в файлы"
YPermitin; +1 Ответить
9. YPermitin 10459 06.12.20 10:43 Сейчас в теме
(8) интересная идея

Не пробовал и не проверял, но на будущее возьму на вооружение.
18. nvv1970 08.01.21 15:57 Сейчас в теме
(9) Вроде так и есть: можно tool_1CD, если конечно файловая база есть))

А еще можно было не обходить все xml и получать uuid, а получить их все из ConfigDumpInfo.xml регуляркой
Вот ПРИМЕР использования гуидов для анализа ИсторииДанных
10. user1503726 06.12.20 12:02 Сейчас в теме
Интересно, получается что в качестве конвертации 4 предлагается ЕДТ. Одновременно открытые конфигурации для настройки обмена данными. А виндоус потянет или как в 98, дескрипторов не хватит?
11. Brawler 481 06.12.20 20:53 Сейчас в теме
За 10 лет практики работы с 1С, ещё ни разу не потребовалось знать точные уникальные идентификаторы объектов метаданных.
Хотя и базы ломались, и чинить их приходилось, и на уровне SQL восстанавливал конфигурацию порушенную при динамических обновлениях.
Была и практика объединения десятка баз данных, вернее подключения оных к одному хранилищу конфигураций, а во всех базах исторически сложилось так, что как хотели так и добавляли реквизиты, документы, справочники, где сравнением и объединением, где копипастом...
Было ещё то веселье по созданию гибридных конфигураций содержащих допустим один и тот же документ с разными идентификаторами, перегонял данные со всех как бы некорректных документов в новые, попутно конвертировал и справочники бедовые, где-то из реквизита в реквизит одного объекта данные переносились, регистры, значения перечислений..., в общем к каждой базе нужен был свой подход, но метод был один и тот же, создание гибридной конфы, перенос данных (самописная обработка), подключение к хранилищу и подтягивание оттуда нормальной конфы, все лишние объекты и реквизиты при этом ликвидировались и данные уничтожались самой же платформой. Получилось так все базы к единому знаменателю привести, единой кодовой базе. Трудозатраты на поддержку этого зоопарка баз на порядок уменьшились после этого.

Придуманные выше примеры зачем они могут быть нужны немного натянуты.
Но как просветительская функция у статьи думаю на пользу многим пойдёт.
Ведь действительно уникальные идентификаторы есть не только у непосредственно документов хранящихся в базе, но и у метаданных описывающих их тоже есть уникальные идентификаторы помимо человекочитаемых "ПриходнаяНакладная, ЗаказКлиента...".
SlavaKron; Daynestro07; triviumfan; Drivingblind; Merkalov; t278; +6 Ответить
20. Darklight 27 19.01.21 10:20 Сейчас в теме
(11)Вот, столкнулся как раз с такой проблемой. В разных конфигурациях одни и те же метаданные получили разные UUID - и пришла пора сделать из разных конфигураций ИБ одну. Но при сравнении объединении - проблемы не видно - а после - идёт замещение метаданных одноимёнными но с другим UUID и данные в БД очищаются.

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

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

Вот, для поиска - как раз и приходится заморачиваться с UUID метаданных - нужно сравнить две конфигурации - и определить у каких одноимённых метаданных разошлись UUID. А далее - произвести, например, когенерацию скрипта - который сделает гибридную конфигурацию и перенесёт данные из одной базы в другую (или из неё же в неё же), причём нужно не только неправильные объекты перенести, а ещё и ссылки на них выправить (на новые) - мне, кажется, это, всё-таки удобнее делать в одной базе (с гибридной конфигурацией, из которой потом удалить некорректные метаданные).

Вот такую универсальную обработку я сейчас хочу сделать для решения такого рода проблем (как раз возникших у меня).
И я буду именно анализировать UUID метаданных - чтобы найти расхождения (а потом ещё и автоматизировано) создавать гибридную конфигурацию.

Замечу - что проблемы в неправильных UUID могут быть не только в корневых метаданных самих объектов (например у вида Документа или Справочника, или Регистра). Они могут быть и у вложенных членов - реквизиты, табличные части (при совпадении UUID у владельцев) - и такие ситуации тоже нужно находить и выправлять - иначе данные могут быть очищены при сравнении объединении (не говоря уже о загрузке) конфигурации - и это даже не будет там показано - лично я не вижу у себя при сравнении, что у меня у метаданных двух конфигураций разные UUID - из всех изменений мне конфигуратор показывает только "Разный порядок" - и проблема выясняется только потом....
22. Brawler 481 19.01.21 12:33 Сейчас в теме
(20) Я выявлял отличия самим же конфигуратором, он позволяет сравнивать конфигурации как по именам так и по внутренним идентификаторам, вот последнее и помогает найти косяки.

Делал сначала на тестовой базе гибридную конфигурацию руками + вроде если нужно то что-то добавлял сравнением объединением, тестил на тестовой базе переносы все, конфу потом натягивал на живую базу, применял изменения.
Потом обработкой делал прям в ней перенос данных из полей в поля, из документов в документы...

Когда все данные перенес, удалял лишние виды объекты, реквизиты у нормальных объектов, применял (тут важно уже что может длительная реструктуризация идти, лучше заранее версии объектов например в базе почистить, а то когда их миллионы, то реструктуризация затягивается))) а вот после применения этих изменений база уже готова к работе

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

Во вложении кинул обработку, которой перенос делал, может что-то пригодится, прошу не судить строго, это не коммерческий продукт, он свою цель выполнил и мирно валяется в папке с хламом
Прикрепленные файлы:
ПереносДанныхМеждуСтарымиИНовымиРеквизитами.epf
23. Darklight 27 19.01.21 17:18 Сейчас в теме
(22)Спасибо за пояснения. Про сопоставление по идентификаторам при сравнении в конфигураторе я и забыл. За обработку тоже спасибо - как раз так и хотел делать
12. dracoola 07.12.20 07:00 Сейчас в теме
Возможно, такое и пригодится в работе. Полезная статья. Бывает ошибка при кривом обновлении. Например,накатывают сразу кучу версий за раз, а регистр один был переименован в ***Удалить и на его место пришёл регистр с таким же названием, но другой структурой. Для расследования подобного (если вдруг когда-то понадобится) думаю пригодится.
13. Andrefan 07.12.20 09:51 Сейчас в теме
Спасибо за информацию.
Вопрос на засыпку. Есть ли возможность поменять GUID объекта метаданных (Кроме ручной правки в выгруженных файлах конфигурации)?
Кейс: копи-пастом добавили объект БСП в систему. Ставлю БСП в этой системе на поддержку, объекты сопоставились по имени, встали на поддержку, но GUID объекта в рабочей конфигурации остался старый.
14. ellavs 807 07.12.20 10:06 Сейчас в теме
А Вы используете выгрузку конфигурации в файлы?

Использую постоянно для отслеживания изменений (GIT) на тех проектах, где нет хранилища, и даже если на проекте только один программист в виде меня, самоконтроль тоже нужен :) ну и очень помогает, если нужно восстановить какой-то код, который раньше работал, а после правок перестал ))
Fox-trot; +1 Ответить
15. oleg-x 17 08.12.20 11:30 Сейчас в теме
Насколько я знаю в EDT можно смотреть гуиды без всяких танцев с бубном, но это при условие что конфигурация соответствует условиям работы в EDT.
16. fomix 29 06.01.21 12:55 Сейчас в теме
Может я что-то путаю, но получить ГУИД любого ссылочного объекта в 1Сы, делается так: Объект.СсылкаНаОбъект.УникальныйИдентификатор(). По крайней мере, я именно так его и получаю, когда нужно вставить в хардкорд.
17. oleg-x 17 06.01.21 21:38 Сейчас в теме
(16) Тут речь про гуиды самих метаданных, а не объектов.
19. fomix 29 13.01.21 09:55 Сейчас в теме
(17) А что по вашему мнению такое Метаданные, если не объекты?
21. Darklight 27 19.01.21 10:22 Сейчас в теме
(19)Под объектами в (17) имелись в виду объекты элементов данных. А под метаданными - объекты элементов конфигурации
А код
Объект.СсылкаНаОбъект.УникальныйИдентификатор()

Получает UUID ссылки на объект - и формально не является идентификатором ни каких объектов вовсе - это часть (подчёркиваю часть) ключа поиска данных в базе данных (сам фактический ключ несколько длиннее) - формально - это данные скрытого поля из которого формируется встроенный реквизит "Ссылка".

А вот такой функции, увы, не существует
Объект.СсылкаНаОбъект.ПолучитьОбъект().Метаданные().УникальныйИдентификатор()


Как и такой
Справочники.Номенклатура.Метаданные().УникальныйИдентификатор()


или такой

Метаданные.НайтиПоПолномуИмени("Справочник.Номенклатура").УникальныйИдентификатор()


В последних двух вариантах данные (и ссылка на данные) даже не фигурируют!
24. TimurD 5 10.03.21 17:42 Сейчас в теме
Как то один раз спорил с одним Экспертом (обсуждали план счетов в БП, как чего делать и пр.), говорю, что у каждого объекта метаданных есть свой внутренний GUID. Он говорит: нет, гуиды только у ссылок. На вопрос, как конфигуратор понимает, при обновлении типового релиза, что именно этот объект переименовали - ушел от ответа. Типа чЕ я такие вопросы задаю. А они вот они, GUID'ы... ска
25. oleg-x 17 10.03.21 17:49 Сейчас в теме
(24) Значит такой эксперт :-) Иначе как минимум бы задумался и возможно бы почитал, если лень, отправил бы изучать этот вопрос самого вопрошающего.
26. TimurD 5 10.03.21 17:51 Сейчас в теме
(25) Тому за 45 было. А тут молодой чего лишнее болтает, в неудобное положение перед начальниками ставить. Вот так политика закрывает путь к улучшениям.
Оставьте свое сообщение

См. также

Библиотека стандартных подсистем (Механизм БСП) Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    74496    V.Stavinsky    22    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021    10026    rayastar    45    

Печать макета MS Word в любом документе с помощью БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.

23.02.2021    3985    quazare    2    

Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье рассмотрим базовое применение методов вывода на печать макетов печатных форм с помощью БСП любых типовых или собственных документов.

17.02.2021    3267    quazare    17    

Просмотр и анализ журнала регистрации (отчет на СКД) Промо

Журнал регистрации v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации. В отчете можно использовать возможности СКД для вывода отчета в различных вариантах (список, таблица, диаграмма). Поддерживаются все возможности журнала регистрации (фильтры, получаемые колонки, максимальное количество записей).

5 стартмани

25.07.2013    69616    1039    YPermitin    53    

Чтение метаданных 1С в SQL Server

Структура метаданных v8 Бесплатно (free)

Описание файла DBNames таблицы Params и файлов объектов метаданных таблицы Config.

16.02.2021    2451    zhichkin    34    

Перенос/копирование и установка отбора/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Пользователи ругаются - не хотят заново заполнять период, отборы при смене варианта отчета - в публикации с открытым кодом решим эту боль.

18.01.2021    604    SizovE    4    

Генерация штрихкодов с помощью БСП для программистов

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия УУ Бесплатно (free)

В данной публикации рассмотрим базовый функционал библиотеки стандартных подсистем (БСП) формирования штрихкодов для вывода на печать.

09.01.2021    6078    quazare    15    

Асинхронное выполнение длительных операций

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Демонстрация использования функционала БСП для выполнения длительных операций. Механизм может быть полезен, например, при загрузке/выгрузке больших объемов данных.

28.12.2020    1705    prog_mayskiyse    7    

Сохранение настроек

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

22.11.2020    2890    the1    8    

Дополнительные реквизиты формы (простой вариант взаимодействия)

Практика программирования БСП (Библиотека стандартных подсистем) Работа с интерфейсом v8 Россия Бесплатно (free)

Упрощаем взаимодействия с дополнительными реквизитами на форме с помощью фиксированного соответствия.

14.11.2020    1469    samvani    0    

Запуск почти любых процедур и функции конфигураций в асинхронном режиме - БСП - Длительные операции [Часть 2]

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье я привожу описание рекомендуемых 1С функций к использованию в работе с длительными операциями в рамках БСП.

30.10.2020    6160    quazare    5    

Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1]

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье я предлагаю вам гарантированно действующий пример работы с длительными операциями в рамках Библиотеки стандартных подсистем. Так же рассмотрим некоторые новые функции последней версии БСП для работы с длительными операциями.

29.10.2020    5539    quazare    27    

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3

БСП (Библиотека стандартных подсистем) Перенос данных из 1C8 в 1C8 v8 1cv8.cf УПП1 КД ERP2 Россия Бесплатно (free)

Данный вариант подойдет тем, кто хочет настроить "свой" регулярный обмен с добавлением "своих" планов обмена с использованием правил обмена на КД 2.1.

27.10.2020    4407    байт    10    

Вычислить РАЗНОСТЬДАТ в рабочих днях

Практика программирования БСП (Библиотека стандартных подсистем) v8::Запросы v8::СКД ERP2 БП3.0 УТ11 ЗУП3.x Бесплатно (free)

Вычисление количества рабочих днях между двумя датами в запросе.

20.10.2020    3093    antonivan    17    

Разработка функционала обмена с несколькими внешними точками

Обмен данными 1С БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В статье приводятся несколько практических советов по организации обмена с несколькими точками, прежде всего «не 1С». Рассматривается создание плана обмена, использование параметров, программирование и настройка регламентных заданий. Доработка системы проводится без изменения конфигурации с использованием расширения и внешней обработки.

21.09.2020    1018    Sergey1CSpb    2    

Работаем с контактной информацией в конфигурациях на БСП

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В статье приведены базовые работы с контактной информацией в конфигурациях, включающих в себя БСП.

14.09.2020    8554    quazare    9    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    12304    quazare    34    

Мастер создания копии информационной базы для отчетности

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Прототип инструмента для подготовки реплики в режиме только для чтения к использованию. Позволяет использовать "read-only" реплики как обычные информационные базы 1С.

10 стартмани

28.08.2020    6669    5    YPermitin    12    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    5183    RPGrigorev    0    

RLS добавление ограничения доступа к данным по произвольному справочнику через штатные механизмы

БСП (Библиотека стандартных подсистем) Информационная безопасность Роли и права v8 КА2 Россия УУ Бесплатно (free)

Решал задачу ограничения доступ к объектам по справочнику "Банковские счета" штатными средствами БСП. Конфигурация КА 2.2. В остальных на БСП должно работать так же. Хотел сделать инструкцию для себя на будущее, решил поделиться.

05.08.2020    2291    ER34    2    

Диагностика контекста выполнения (внешняя компонента)

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Небольшая экспериментальная внешняя компонента для получения дополнительной информации о контексте выполнения.

1 стартмани

24.07.2020    6248    2    YPermitin    14    

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Практика программирования БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Переходим на следующий уровень работы со строками, уходим от типовых возможностей платформы. Узнаем, как применить функционал БСП конфигурации.

05.07.2020    10694    quazare    37    

Мастер-класс "Ведение проектов в типовых конфигурациях 1С"

Управление проектом CI/CD БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

При адаптации типовой конфигурации под особенности учета в компании важно обеспечить возможность легкого обновления поставки. Как организовать архитектуру решения и продумать процесс быстрой и эффективной разработки без ущерба типовой функциональности, на конференции Infostart Event 2019 Inception рассказал ведущий программист компании BIA-Teсhnologies Алексей Князьков.

05.06.2020    4599    AKnyazkov    4    

Способ хранения данных расширения или дополнительной обработки

БСП (Библиотека стандартных подсистем) Практика программирования v8 Бесплатно (free)

Описание способа хранения данных расширения или дополнительной обработки в информационной базе с использованием функционала Библиотеки стандартных подсистем.

01.06.2020    4221    Sedaiko    17    

Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)

Прочие инструменты разработчика Журнал регистрации Абонемент ($m)

Набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux (SQL Server, PostgreSQL, MySQL). Готовые приложения и исходный код.

10 стартмани

26.05.2020    7260    46    YPermitin    0    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

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

24.05.2020    9177    DataReducer    22    

Переопределение настроек отчета на СКД. 1С: БСП

БСП (Библиотека стандартных подсистем) v8::СКД ERP2 Россия Бесплатно (free)

Изменение настроек СКД отчета без доработки модулей БСП

24.04.2020    3502    klimsrv    6    

Картинка в форме списка номенклатуры для УТ 11.4

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В публикации приведу код, позволяющий выводить картинку номенклатуры в форме списка.

23.03.2020    2029    malikov_pro    1    

История работы пользователей (отчет на СКД)

Администрирование СУБД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра истории работы пользователей (СКД, просмотр для любого пользователя).

2 стартмани

14.03.2020    7832    75    YPermitin    27    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    15676    user5300    19    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    5663    partizand    6    

Информация о пользователях информационной базы (отчет на СКД)

Администрирование данных 1С Роли и права v8 v8::Права v8::СКД 1cv8.cf Абонемент ($m)

Два простых отчета по пользователям информационной базы и информации по ним.

1 стартмани

02.03.2020    7540    24    YPermitin    8    

Технические проверки данных регистров бухгалтерии (отчет на СКД)

Администрирование данных 1С Бухгалтерский учет Механизмы бухгалтерского учета v8::БУ 1cv8.cf БУ Абонемент ($m)

Отчет для технических проверок данных бухгалтерских регистров.

5 стартмани

25.02.2020    7127    26    YPermitin    2    

Мастер полнотекстового поиска

Поиск данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Набор инструментов для работы с полнотекстовым индексом платформы 1С. Стандартные и расширенные возможности.

2 стартмани

07.02.2020    11569    107    YPermitin    28    

Помощник работы с идентификаторами объектов

Прочие инструменты разработчика Поиск данных v8 1cv8.cf Абонемент ($m)

Инструмент для расширенного анализа идентификаторов объектов.

2 стартмани

24.01.2020    13284    51    YPermitin    32    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 v8::Запросы 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    19527    162    YPermitin    89    

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

Печатные формы документов БСП (Библиотека стандартных подсистем) v8 КА2 Бесплатно (free)

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

19.12.2019    12007    John_d    9    

Командный интерпретатор для 1С

Сервисные утилиты v8 1cv8.cf Абонемент ($m)

Инструмент для выполнения команд CMD / PowerShell из 1С.

2 стартмани

15.11.2019    14216    28    YPermitin    41