Получение уникального идентификатора объекта из ссылки в запросе
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в версии 8.3.22
По многочисленным просьбам в версии 8.3.22 в язык запросов и в язык выражений СКД добавится функция УникальныйИдентификатор(Ссылка). Параметр Ссылка — выражение, результатом которого является ссылка (кроме ссылок на таблицы внешних источников данных). Функция возвращает уникальный идентификатор переданной ссылки или NULL, если передано значение NULL.
Это нововведение, в частности, упростит задачи интеграции систем на платформе 1С:Предприятие с внешними системами.
Рассмотрим пример. У нас есть интеграция с внешней системой на уровне данных – таблица внешней системы ссылается на справочник Товары в нашей инфобазе.
Структура таблицы внешней системы:
| Идентификатор | Ключ (число) |
| Наименование | Название товара на английском языке (строка) |
| УникальныйИдентификатор | Ссылка на элемент справочника Товары (уникальный идентификатор) |
Нам нужно на стороне 1С вывести содержимое справочника Товары и для каждого товара показать его название на английском языке.
Предположим, мы получили содержимое внешней таблицы в виде таблицы значений (через веб-сервис или внешний источник данных или ещё каким-то образом).
Сейчас связать записи внешней таблицы (лежащие в таблице значений) с элементами справочника Товары можно так:
- Добавить в таблицу значений колонку, которую надо заполнить ссылкой на элементы справочника Товары, обойдя все записи таблицы значений в цикле.
- Полученную таблицу значений с помощью запроса объединить со справочником Товары.
В версии 8.3.22 это можно будет сделать гораздо проще.
Проиллюстрируем это кодом. Содержимое внешней таблицы помещено в таблицу значений ТЗ_ТоварыВнешняя.
Как в 1С по GUID найти ссылку на объект в 1С
В процессе работы с платформой 1С, периодически возникает необходимость найти какой-либо объект. Сделать это можно используя GUID.
GUID – это уникальный идентификатор, с помощью которого возможно создание сервисов и приложений, без опасения конфликтов связанных с совпадением идентификаторов. Совпадение идентификаторов действительно, практически невозможно, так как они формируются специальным генератором случайных чисел. При каждом новом создании очередного объекта, в системе 1С происходит запуск вышеупомянутого генератора, с помощью которого объекту присваивается новый GUID. Записывается он в виде УИД (Уникальный Идентификатор ссылки). Стоит заметить, что теоретически в базе могут существовать два объекта с одним и тем же уникальным идентификатором. Однако, на работоспособность это никак не повлияет, так как эти объекты находятся в разных справочниках и не смогут пересекаться друг с другом. Таким образом, зная идентификатор, можно найти нужные объекты. Процесс поиска будет выглядеть следующим образом.
- Необходимо определить GUID того или иного объекта на платформе 1С. Таковым объектом может быть элемент справочника, документы, журнала документов и т.д. Для определения необходимо перейти к быстрой функции «Поиск ссылки по «GUID» и в появившемся окошечке выбрать тип объекта. Чуть ниже будет расположена кнопка «Показать GUID», после нажатия на которую, мы в специальном окне с надписью GUID, сможем увидеть нужный нам уникальный идентификатор.
- После того как идентификатор введен в соответствующее поле, необходимо нажать расположенную ниже кнопку «Найти ссылку». Если все вышеперечисленное было сделано правильно, в специальном поле «Ссылка» появится найденный объект, находящийся в базе данных, а пользователю станет доступна кнопка, позволяющая открыть карточку объекта.
В процессе поиска, даже в том случае, если все шаги были выполнены верно, на экране может всплыть сообщение «Объект не найден». Возникает эта ошибка по причине того, что нужный пользователю объект был удален из базы данных, однако ссылка на него оставлена.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Guid что это такое в 1с
Собственно 8-ка для идентификации ссылок использует 36 символов в формате: aed6dbea-5fb2-11dc-a529-aadb14561398
Вопрос есть какие то ограничения, или в качестве GUID можно использовать например не 36 символов а 17? И можно ли использовать спецсимовлы, типа _
16-ричную систему счисления знаешь? Там нет цифр типа _<,@
Ну это если 1С гонят ее туда сюда. (из одной системы в другую). А если использовать идентификатор как строка, то как бы все равно _ или < или А
(2) Тут дело даже не в 1С.
http://ru.wikipedia.org/wiki/GUID
Ну т.е. фактически GUID ссылки это просто уникальный номер в 16-ной системе, который может быть любой, главное чтобы «-» стояли на своих метсах
(5) Ну так нигде это не описано. Интуитивно я конечно догадываюсь, но решил все таки спросить, чтобы граблей избежать
GUID — ссылка — это тупо 16 байт.
Формируется по особому алгоритму, гарантирующему уникальность вновь созданных
ПРЕДСТАВЛЯЕТСЯ обычно в виде:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,
где
X — представлем в шестнадцетиричном видею
GUID 1С-а представленный в 1С, например
Сообщить(Строка(Ссылка.УникальныйИдентификатор()));
отличается от фактически хранимого в базе на некоторые перемешанные значения
Например, в 1С он выглядит как
6F9619FF-8B86-D011-B42D-00CF4FC964FF
В базе (фактически) он имеет значение:
6F9619FF-D011-8B86-B42D-00CF4FC964FF
(Это тупо пример, там алгоритм перестановки другой, лень споминать)
GUID 1С формирует не по правилам Microsoft, а инкрементно.
В начале сеанса формируется стартовый GUID, r примеру
6F9619FF-8B86-D011-B42D-00CF4FC964F0
У каждого последующего, созданного в этом сеансе ссылочного объекта GUID будет на 1 больше, к примеру:
6F9619FF-8B86-D011-B42D-00CF4FC964F1
6F9619FF-8B86-D011-B42D-00CF4FC964F2
6F9619FF-8B86-D011-B42D-00CF4FC964F3
Как получить UUID, ГУИД, GUID объекта в 1С?
Для программного получения уникального идентификатора объекта, нужна всего лишь ссылка на объект.
GUID = СсылкаНаОбъект.УникальныйИдентификатор();
Справочники.ПодразделенияОрганизаций.НайтиПоКоду("123").УникальныйИдентификатор();
Система вернет 36 символьный строковый код идентификатора.
Найти по GUID
В данном примере получаем ссылку на объект по строковому значению GUID.
СсылкаНаОбъект = Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(Новый УникальныйИдентификатор(GUID));
Задать свой GUID для объекта
Бывают случаи когда например перепутаны элементы справочниках в разных базах, которые необходимо синхронизировать, в данном случае одним из решений является получить нужный идентификаторы объект в базе источнике и присвоить его соответствующему элементу в базе приемнике.
СсылкаНовыйGUID = Справочники.ПодразделенияОрганизаций.ПолучитьСсылку(Новый УникальныйИдентификатор(НовыйGUID)); ОбъектДляИзменения.УстановитьСсылкуНового(СсылкаНовыйGUID);
В данном примере получаем ссылку по уникальному идентификатору и присваиваем ее нужному объекту.
Как заменить уникальный идентификатор для подразделения
В моем случае была необходимость для созданного подразделения в 1С Бухгалтерии установить уникальный идентификатор в соответствии с идентификатором подразделения в 1С ЗУП.
Пример обработки использования можно скачать.
В обработке можно получить GUID по ссылке, найти подразделение по GUID и заменить GUID для объекта.
