Как получить УникальныйИдентификатор (guid) с помощью консоли запросов 1С?
Возможно ли вывести УникальныйИдентификатор (GUID) вместо обычной ссылки с помощью простой консоли запросов в 1С? Как должен выглядеть текст запроса? Например, чтобы получить УникальныйИдентификатор номенклатуры.
- Вопрос задан более двух лет назад
- 6307 просмотров
5 комментариев
Простой 5 комментариев

Цель данного вопроса? Зачем GUID в запросе?
Luna999 @Luna999 Автор вопроса
Sgr_A, цель — получить список УникальныхИдентификаторов тех или иных элементов

Luna999, это пересказ вашего первоначального вопроса. Я вам о другом. Для чего вам этот список GUID и почему именно в консоли нужно? Может вы не по тому пути идете, решения именно вашего вопроса. Возможно вам подойдет другой подход.
Luna999 @Luna999 Автор вопроса
Sgr_A, именно в консоли потому что для меня (пользователя) других вариантов не вижу. Для чего список — чтобы сопоставить элементы с сайтом.

чтобы сопоставить элементы с сайтом
— это уже конкретная цель, исходя из нее можно уже как-то формулировать ответы.
Решения вопроса 1

Могу посоветовать использовать Инструменты разработчика от Tormozit.

После выполнения запроса нажать на кнопку (см. скриншот) и выведется GUID.
P.S. Если основной режим работы у Вас — «Управляемое приложение», просто запустите из под обычного.
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 4

Андрей Шамин @WhiteSsnoww
Программист
На языке запросов — никак.
Однако, есть удобный набор обработок — Инструменты разработчика
В инструментах разработчика можно выводить результаты запроса с отображением гуидов ссылок и вообще в любых списках справочников и документов. Рекомендую.
Как получить гуид объекта в 1с в запросе
Хай пипл.
Есть запрос.
В запросе одно их полей типа ссылка
оно мне бодро возвращает ссылку
типа такого
Заказ 000000034 от 22.10.2018 15:07:25
А я хочу получить ссылку в виде GUID.
Как такое сделать?
(0) постобработкой через XMLСтрока()
(0) Пипл в твоём лице не знает что в запросе GUID не получить :). Если хочешь получать, то делай в базе строковое поле для GUID и записывай GUID туда.
(1) ГУИДСсылки = XMLСтрока(Ссылка)
Так?
(3) Ну да, самый быстрый способ получения GUID
(3) тебе реально быстрее тут спросить, чем проверить?
(5) Да как-то не тот GUID как я хотел получается однако. Думал что не так написал.
Ок, будем дальше форматировать.
(6) Не стоит копать глубже — закопаешься. Если дело дошло до Гуида в запросе — то надо может быть, как говорил Жванецкий, что-то в консерватории подправить?
ТЗ не я писал, написано выгрузить GUID неком формате, значит выгрузить GUID. Нафуй он им в виде строки нужен, хрен его знает.
(6) из этой строки в обратку вполне себе получается Ссылка
(3) Это все-таки строковое представление, а не сам идентификатор.
Переходи на 8.3.12, там это можно
В некоторых конфигурациях видел — гуид подпиской заполняется в отдельный реквизит.
Ну это при реальной необходимости
(8) С таким подходом далеко не уедешь
(13) чорт только что мои знания устарели, сижу блин на 8.3.10(
За ссылку спасибо.
(11)А поподробнее что можно в 8.3.12?
(13) я глянул документацию и не нашел как из ссылки получить GUID, есдинственное упоминание это:
любые поля со значениями следующих типов: ХранилищеЗначения, УникальныйИдентификатор и ссылка внешнего источника данных.
Но ссылка к ним не относится
(17) А УникальныйИдентификатор ни о чем не говорит вам?
(17) УникальныйИдентификатор это оно и есть.
(19) Нет, Уникальный идентификатор — тип такой, Ссылка создается на основании Уникального Идентификатора, но имеет другой тип, а именно ОбъектМетаданных.Ссылка.
В патч нотсах тоже ничего:
В языке запросов расширена поддержка значений следующих типов: УникальныйИдентификатор, ХранилищеЗначений.
Реализована возможность создания временных таблиц на основании таблиц значений, содержащих колонки вышеуказанных типов.
Реализована возможность использовать поля и выражения типа УникальныйИдентификатор в операции множественного В.
(19) Это оно и есть, но в запросе не получить из ссылки УникальныйИдентификатор.
Там написано, что теперь запрос может работать с
типом УникальныйИдентификатор. Но получить УникальныйИдентификатор ссылки в запросе не получится.
(18)(19) Вопрос был в том как запросом из бд получить уникальный идентификатор без обработки.Ответ был что в 8.3.12 это есть, я найти не могу, поэтому прошу подробностей.
(13) Говорит, что у ссылки вместо основного представления можно получить ее УИД, я перерыл документацию, ибо мне бы это сейчас очень пригодилось, но не нашел ни слова, может я чего не понимаю?(
В запросе естесственно
В СКД когда-то я такое делал.
В голом запросе не получится
(25) В скд в вычисляемом поле — не вопрос вообще
(25) Спасибо за ответ
Почему именно запросом нужно? все равно ведь обрабатывать результат
(23) ВЫРАЗИТЬ(Ссылка КАК УникальныйИдентификатор) ? Такое сработает?)
Не, в запросе _из ссылки_ получить УИД нельзя. Я-то отвечал на вопрос из заголовка темы — что в результате запроса теперь может быть и поле с типом УИД, не более того.
«Не шмогли» / не захотели ребятки из 1С чего-то за 15 лет УИД от ссылки давать возможность получать.
(30)В заголовке нет такого вопроса.
(31) О — опыт. Вопроса нет, а ответ, тем не менее, дан. Учись.
Что-то не получается у меня каменный цветок, везде одинаковое значение выходит.
Причем меняется при каждом прогоне кода.
Пока Выборка.Следующий() Цикл
Сообщить(«ИД — » + Выборка.ИД);
Сообщить(«Ссылка — » + Выборка.Ссылка);
Сообщить(«Ссылка ГУИД- » + XMLСтрока(Выборка.Ссылка));
Сообщить(«Номер — » + Выборка.Номер);
ИД — 42
Ссылка — Заказ 000000016 от 23.10.2018 11:37:49
Ссылка ГУИД- 8a342b2e-d696-11e8-8222-000c29cac5e2
Номер — 000000016
Запись добавлена!
ИД — 43
Ссылка — Заказ 000000017 от 23.10.2018 11:37:49
Ссылка ГУИД- 8a342b2f-d696-11e8-8222-000c29cac5e2
Номер — 000000017
Запись добавлена!
ИД — 44
Ссылка — Заказ 000000018 от 23.10.2018 11:37:49
Ссылка ГУИД- 8a342b30-d696-11e8-8222-000c29cac5e2
Номер — 000000018
Не одинаковые, найди различия в буквах, они там есть
8a342b2e-d696-11e8-8222-000c29cac5e2
8a342b2f-d696-11e8-8222-000c29cac5e2
8a342b30-d696-11e8-8222-000c29cac5e2
Различий не видно?
Мозг так устроен, что если видит совпадение в начале и в конце, то не воспринимает отличие где-то в серединке
А толку то.
Вот второй прогон. Тут другие.
ИД — 41
Ссылка — Заказ 000000024 от 23.10.2018 11:49:42
Ссылка ГУИД- 32e3438a-d698-11e8-8222-000c29cac5e2
Номер — 000000024
Запись добавлена!
ИД — 42
Ссылка — Заказ 000000025 от 23.10.2018 11:49:42
Ссылка ГУИД- 32e3438b-d698-11e8-8222-000c29cac5e2
Номер — 000000025
Запись добавлена!
ИД — 43
Ссылка — Заказ 000000026 от 23.10.2018 11:49:42
Ссылка ГУИД- 32e3438c-d698-11e8-8222-000c29cac5e2
Номер — 000000026
Запись добавлена!
ИД — 44
Ссылка — Заказ 000000027 от 23.10.2018 11:49:42
Ссылка ГУИД- 32e3438d-d698-11e8-8222-000c29cac5e2
Номер — 000000027
Запись добавлена!
Сообщить(«Ссылка ГУИД- » + XMLСтрока(Выборка.Ссылка.УникальныйИдентификтор()))
Получение уникального идентификатора объекта из ссылки в запросе
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в версии 8.3.22
По многочисленным просьбам в версии 8.3.22 в язык запросов и в язык выражений СКД добавится функция УникальныйИдентификатор(Ссылка). Параметр Ссылка — выражение, результатом которого является ссылка (кроме ссылок на таблицы внешних источников данных). Функция возвращает уникальный идентификатор переданной ссылки или NULL, если передано значение NULL.
Это нововведение, в частности, упростит задачи интеграции систем на платформе 1С:Предприятие с внешними системами.
Рассмотрим пример. У нас есть интеграция с внешней системой на уровне данных – таблица внешней системы ссылается на справочник Товары в нашей инфобазе.
Структура таблицы внешней системы:
| Идентификатор | Ключ (число) |
| Наименование | Название товара на английском языке (строка) |
| УникальныйИдентификатор | Ссылка на элемент справочника Товары (уникальный идентификатор) |
Нам нужно на стороне 1С вывести содержимое справочника Товары и для каждого товара показать его название на английском языке.
Предположим, мы получили содержимое внешней таблицы в виде таблицы значений (через веб-сервис или внешний источник данных или ещё каким-то образом).
Сейчас связать записи внешней таблицы (лежащие в таблице значений) с элементами справочника Товары можно так:
- Добавить в таблицу значений колонку, которую надо заполнить ссылкой на элементы справочника Товары, обойдя все записи таблицы значений в цикле.
- Полученную таблицу значений с помощью запроса объединить со справочником Товары.
В версии 8.3.22 это можно будет сделать гораздо проще.
Проиллюстрируем это кодом. Содержимое внешней таблицы помещено в таблицу значений ТЗ_ТоварыВнешняя.
1С 8.3 Получить УИД в запросе — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:

В версии платформы 1С 8.3.22 в язык запросов (и в язык выражений СКД) доблена функция УникальныйИдентификатор(Ссылка). Функция возвращает уникальный идентификатор переданной ссылки (или NULL, если передано значение NULL). П араметр Ссылка это выражение, результатом которого является ссылка (за исключением ссылок на таблицы внешних источников данных).
Получение Уникального ИДентификатора от ссылки в запросе в 1С 8.3:
&НаСервере
Процедура УИДвЗапросе ( ТЗ_МатериалыНаСкладе ) // Таблица значений
// Создание выборки
Запрос = Новый Запрос ( «ВЫБРАТЬ
| ТЗ_МатериалыНаСкладе.Наименование КАК НаименованиеEn,
| ТЗ_МатериалыНаСкладе.УникальныйИдентификатор КАК УникальныйИдентификатор
|ПОМЕСТИТЬ ВТ_МатериалыНаСкладе
|ИЗ
| &ТЗ_МатериалыНаСкладе КАК ТЗ_МатериалыНаСкладе
|;
|
|ВЫБРАТЬ
| Материалы.Код КАК Код,
| Материалы.Наименование КАК Наименование,
| ВТ_МатериалыНаСкладе.НаименованиеEn КАК НаименованиеEn
|ИЗ
| Справочник.Материалы КАК Материалы
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_МатериалыНаСкладе КАК ВТ_МатериалыНаСкладе
| ПО УникальныйИдентификатор(Материалы.Ссылка) = ВТ_МатериалыНаСкладе.УникальныйИдентификатор» );
Запрос . УстановитьПараметр ( «ТЗ_МатериалыНаСкладе » , ТЗ_МатериалыНаСкладе );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
Получение Уникального ИДентификатора от битой ссылки в 1С 8.3:
&НаСервереБезКонтекста
Функция ПолучитьГУИДБитойССылкиНаСервере ( СсылкаНаОбъект ) // Вариант 1
Возврат XMLСтрока ( СсылкаНаОбъект );
&НаСервереБезКонтекста
Функция ПолучитьГУИДБитойССылкиЗапросомНаСервере ( СсылкаНаОбъект ) // Вариант 2 (запросом)
Запрос = Новый Запрос ;
Запрос . Текст = «ВЫБРАТЬ
| УНИКАЛЬНЫЙИДЕНТИФИКАТОР(&СсылкаНаОбъект) КАК ГУИД» ;
Запрос . УстановитьПараметр ( «СсылкаНаОбъект» , СсылкаНаОбъект );
РезультатЗапроса = Запрос . Выполнить ();
Записи = РезультатЗапроса . Выбрать ();
Если Записи . Следующий () Тогда
УИ = Записи . ГУИД ;
Иначе
УИ = XMLСтрока ( Справочники . Материалы . ПустаяСсылка ());
КонецЕсли;
Возврат XMLСтрока ( СсылкаНаОбъект );
&НаСервереБезКонтекста
Функция ПолучитьГУИДБитойССылки ( ГУИДОбъекта ) // Вариант 3 (самопис)
ГУИДСтр = СтрЗаменить ( ГУИДОбъекта , » (» , «» );
ГУИДСтр = СтрЗаменить ( ГУИДСтр , «)» , «» );
ГУИДСтр = СтрЗаменить ( ГУИДСтр , «0x» , «» );
ГУИДСтр = Сред ( ГУИДСтр , Найти ( ГУИДСтр , «:» )+ 1 , СтрДлина ( ГУИДСтр ));
// Преобразуем GUID
ГУИД = Сред ( ГУИДСтр , 25 , 8 )+ «-» + Сред ( ГУИДСтр , 21 , 4 )+ «-» + Сред ( ГУИДСтр , 17 , 4 )+ «-» + Сред ( ГУИДСтр , 1 , 4 )+ «-» + Сред ( ГУИДСтр , 5 , 12 );