Как получить guid в запросе 1с?

1. chmv 15.06.15 10:25 Сейчас в теме
Как получить guid в запросе 1с?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Скиминок 15.06.15 10:40 Сейчас в теме
Запросом никак - выгружать и получать средствами встроенного языка
3. pavelyar 15.06.15 10:49 Сейчас в теме
Откройте одну из многочисленных обработок по GUID и посмотрите как там ...
4. chmv 15.06.15 11:25 Сейчас в теме
Получается Гуид как ComОбъект. Что делать если надо числом?
Объект1 = РеквизитФормыВЗначение("Объект");
	Объект1.ОбъектПодключения = Объект1.Подключиться(ЭтаФорма);
	
	ЗапросБригады= Объект1.ОбъектПодключения.NewObject("Запрос");
	
	ЗапросБригады.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Смены.Ссылка,Смены.Наименование

	
	|ИЗ
	|	Справочник.Смены как Смены";
	Выборка=ЗапросБригады.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		Спрбригады=Справочники.Бригады.СоздатьЭлемент();
		
		СтрокаGUID=СОКРЛП(Выборка.Ссылка.УникальныйИдентификатор());
		Сообщить(7);
		сообщить(СтрокаGUID);
		УникальныйИдентификатор = Новый УникальныйИдентификатор(СтрокаGUID); 
		Сообщить(8);
		СсылкаБригада = Справочники.Валюты.ПолучитьСсылку(УникальныйИдентификатор); 
		Сообщить(0);
		Если БригадаСуществует(СсылкаБригада)=Ложь Тогда
			сообщить(1);
			СпрБригады.УстановитьСсылкуНового(СсылкаБригада); 
			СпрБригады.Наименование=Выборка.Наименование;
		КонецЕсли;
		СпрБригады.Записать();
	КонецЦикла;
Показать
5. omut 15.06.15 11:30 Сейчас в теме
Вы бы объяснили, чего достигнуть желаете, какого числа и зачем? По первоначальному вопросу вам уже ответили: запросом получить невозможно.
maksa2005; +1 Ответить
6. Скиминок 15.06.15 11:31 Сейчас в теме
Преобразовать в строку - обработать - преобразовать в число
7. chmv 15.06.15 11:37 Сейчас в теме
1-ый вопрос поняла
2-ой вопрос остался отикрытым
8. Boneman 298 15.06.15 11:52 Сейчас в теме
(7) chmv,
гуид не может быть числом,
а вот строкой - без проблем, добавляем Строка(Выборка.Ссылка.УникальныйИдентификатор())
29. evgeny43 32 19.06.18 17:16 Сейчас в теме
(8)если очень хочется , то и числом гуид может быть.
просто надо привести каждое составляющее гуида к примеру к 10 системе счисления.
38. gybson 19.07.22 12:56 Сейчас в теме
9. МихаилМ 15.06.15 12:20 Сейчас в теме
если бы 1с8 честно выполняла бы запрос вида

Выбрать ссылка
Из спрвочник.ххх
где ссылка < 100000000000000000000000

тогда без проблем. но 1с транслирует этот запрос в чушь полную.

те работает только сравнение на равно (не равно)

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

ждем , когда исправят ошибку.
10. user_2010 904 17.02.17 15:20 Сейчас в теме
Через Com соединение запросом тяну данные из другой базы. Вместе с данными нужно вытянуть ГУИДы записей справочников.
Как это сделать? Можно ли это сделать?
Нужно для организации обмена данными по ГУИД.
11. DenisCh 17.02.17 15:22 Сейчас в теме
(10) Это можно сделать постобработкой результата запроса.
12. alex-l19041 8 17.02.17 15:24 Сейчас в теме
(10)
Через Com соединение
- мне кажется, что конвертация данных в этом случае больше подходит
14. user_2010 904 17.02.17 15:34 Сейчас в теме
(12) конвертация???? возможно в будущем... сейчас надо бегом переписать имеющийся обмен, но хочется перевести с кодов на ГУИД.


(13) да, сделала как вы написали: в Тз, ее обрабатываю.... но не могу получить именно гуид:

ПодразеделенияСтрока.Ссылка = ЗначениеВСтрокуВнутр(СтрокаТЗ.Ссылка);

возвращает для всех записей одно и тоже значение {"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}
17. ResetAtreides 17.02.17 15:49 Сейчас в теме
(14) Скорее всего это он COM объект преобразует, а не уникальный идентификатор ссылки
15. ResetAtreides 17.02.17 15:44 Сейчас в теме
(10) Можно:
GUIDСтрокой = БазаИсточник.String(Выборка.Ссылка.УникальныйИдентификатор());


GUID будет строкой, если нужно, его можно преобразовать в нормальный, через Новый УникальныйИдентификатор(GUIDСтрокой)
База источник - COM объект базы, к которой подключаетесь и в которой запрос создаете
maksa2005; SmArtist; vgrichuk; user640247; shur52; Gang031; Deals; fateev_da; starik-2005; +9 Ответить
13. avart2006 17.02.17 15:29 Сейчас в теме
Можно в Модуле внешнего соединения запросом выгрузить справочник в тз, добавить колонку ГУИД с типом строка, пройтись присвоить ГУИД и вернуть тз в базу приемник.
16. avart2006 17.02.17 15:44 Сейчас в теме
Рез.Ссылка.УникальныйИдентификатор()
18. avart2006 17.02.17 15:53 Сейчас в теме
Да, ГУИД получаем в базе Источнике и только потом уже передаем в базу Приемник.
19. DenisCh 17.02.17 15:55 Сейчас в теме
GUIDСтрокой = БазаИсточник.XMLСтрока(Выборка.Ссылка);
SmArtist; user640247; shur52; Dimkis; Anchoret; SlavaKron; dj_serega; +7 Ответить
20. user_2010 904 17.02.17 17:48 Сейчас в теме
спасибо всем за советы! попробую все варианты - по результатам отпишусь
21. user_2010 904 20.02.17 14:37 Сейчас в теме
ЗУП.String(СтрокаТЗ.РодительСсылка); - выдает представление ссылки
ЗначениеВСтрокуВнутр(СтрокаТЗ.Ссылка); - выдает все одинаковые значения {"#",2319dcf1-f4ee-438d-b16f-6a145d6b9422}

ЗУП.String(СтрокаТЗ.Ссылка.УникальныйИдентификатор()); - вот это выдает то что нужно!!!

Спасибо!
22. DenisCh 20.02.17 14:44 Сейчас в теме
23. sertak 314 20.02.17 15:17 Сейчас в теме
Если объекты требуется сравнивать по УИД, то иногда целесообразно добавить в объект реквизит GUID и в процедуре ПриЗаписи вносить в него УИД (только придется повторно вызывать запись и придумать флаг для защиты от зацикливания) или же в процедуре ПередЗаписью генерить новый GUID и его вносить в УИД.
Тогда можно и в запросе использовать. Но если задача разовая, то не стоит заморачиваться.
24. user_2010 904 20.02.17 16:58 Сейчас в теме
(23) задача не разовая, раз в час регламентное задание в БУХ тянет данные из ЗУП... БУХ нетиповая, обмен тоже нетривиальный....
переходим на ЗУП.3.1 - обмен приходится переписывать - из другой базы и немного другие источники данных...
вот заодно хочется перейти еще на на ГУИДы...
25. sertak 314 20.02.17 17:59 Сейчас в теме
Тогда по-любому переходите. В вашем случае я бы выбрал вариант генерирования GUID'а перед записью объекта, т.е. генерите GUID и вносите его в УИД ссылки и в новый реквизит GUID.
26. sertak 314 20.02.17 18:00 Сейчас в теме
А реквизит GUID в существующих записях заполните обработкой из УИД.
27. user_2010 904 22.02.17 12:56 Сейчас в теме
(26) спасибо! Да, прописываю заполнение соответствий - в случае если такого соответствия еще нет.
Сделала для соответствий РегСведений.

28. olegmedvedev 65 21.09.17 12:50 Сейчас в теме
извиняюсь за некропостинг, но такую задачу можно решить при помощи инструментов разработчика - если необходимо делать выборку, там есть кнопка в консоли запросов - "отображать идентификаторы" и заместо ссылок он будет выводить guid.
matytsin_new; ledidinka; doronin70; user1418308; beznin_fenix; me9asprin9; Tolpinski; +7 Ответить
30. azanas 19.06.18 23:17 Сейчас в теме
Начиная с платформы 8.3.12

В языке запросов расширена поддержка значений следующих типов: УникальныйИдентификатор, ХранилищеЗначений.
Реализована возможность создания временных таблиц на основании таблиц значений, содержащих колонки вышеуказанных типов.

Реализована возможность использовать поля и выражения типа УникальныйИдентификатор в операции множественного В.


Источник: http://downloads.v8.1c.ru/content//Platform/8_3_12_1469/1cv8upd_8_3_12_1469.htm#a41e9a58-9959-11e7-a3f7-0050569f678a
doronin70; Deslime; Skyer; Atrocity; adhocprog; kassbar; +6 Ответить
31. Vodoley 1 10.06.19 17:09 Сейчас в теме
(30)
Реализована возможность использовать поля и выражения типа УникальныйИдентификатор в операции множественного В.

но возможность получить в выборку поле со значением гуида для каждой ссылки по прежнему невозможно, так?
32. doronin70 21.10.21 19:13 Сейчас в теме
(31) Вполне возможно. Ставишь в параметрах консоли запросов галочку "Добавлять УИД" и рядом в выборке рядом с колонкой ссылочного типа появляется колонка с УИД.
33. Vodoley 1 01.12.21 11:31 Сейчас в теме
(32) не думаю что это решение - это ваша консоль пост обработку выборки делает средствами встроенного языка.
34. vadim1011985 100 01.12.21 11:44 Сейчас в теме
35. Vodoley 1 01.12.21 15:58 Сейчас в теме
(34) Супер )) спасибо!
я думал там какие-то принципиальные трудности раз до сих пор не сделали
36. 1v7 235 02.02.22 13:51 Сейчас в теме
В версии платформы 1С 8.3.22 в язык запросов (и в язык выражений СКД) доблена функция УникальныйИдентификатор(Ссылка). Функция возвращает уникальный идентификатор переданной ссылки (или NULL, если передано значение NULL). Параметр Ссылка это выражение, результатом которого является ссылка (за исключением ссылок на таблицы внешних источников данных).
Получение Уникального ИДентификатора от ссылки в запросе в 1С 8.3:

&НаСервере
Процедура УИДвЗапросе(ТЗ_МатериалыНаСкладе) // Таблица значений

   // Создание выборки
   Запрос = Новый Запрос("ВЫБРАТЬ
   | ТЗ_МатериалыНаСкладе.Наименование КАК НаименованиеEn,
   | ТЗ_МатериалыНаСкладе.УникальныйИдентификатор КАК УникальныйИдентификатор
   |ПОМЕСТИТЬ ВТ_МатериалыНаСкладе
   |ИЗ
   | &ТЗ_МатериалыНаСкладе КАК ТЗ_МатериалыНаСкладе
   |;
   |
   |ВЫБРАТЬ
   | Материалы.Код КАК Код,
   | Материалы.Наименование КАК Наименование,
   | ВТ_МатериалыНаСкладе.НаименованиеEn КАК НаименованиеEn
   |ИЗ
   | Справочник.Материалы КАК Материалы
   | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_МатериалыНаСкладе КАК ВТ_МатериалыНаСкладе
   | ПО УникальныйИдентификатор(Материалы.Ссылка) = ВТ_МатериалыНаСкладе.УникальныйИдентификатор");

   Запрос.УстановитьПараметр("ТЗ_МатериалыНаСкладе ", ТЗ_МатериалыНаСкладе);
   РезультатЗапроса = Запрос.Выполнить();
   Если Не РезультатЗапроса.Пустой() Тогда // Такая проверка рекомендуется фирмой 1С
       Записи = РезультатЗапроса.Выбрать();
       Пока Записи.Следующий() Цикл
           // Обход результата запроса по каждой записи в полученной выборке
       КонецЦикла;
   Иначе // Сообщить("Данные отсутствуют!");
   КонецЕсли;

КонецПроцедуры
Показать
ducks01; ILNIK; SmArtist; +3 Ответить
37. zastep 19.07.22 12:41 Сейчас в теме
(36) Пример запроса не однозначный. в Качестве параметра в запрос передаётся таблица значений. А что в ней? Колонки "Наименование" и "УникальныйИдентификатор"? т.е. ТЗ подготовлена и содержит UID? В каком виде, "Строка"?
Какой тип значения возвращает УникальныйИдентификатор(Материалы.Ссылка) ?
39. nikolasx 59 19.07.22 13:09 Сейчас в теме
(36) Недавно тоже посмотрел последнее обновление 22 платформы, и действительно там есть такая функция в запросе, которая как раз возвращает УникальныйИдентификатор(Объект.Ссылка). Это ни много сократит написание кода. По факту в теле запроса с помощью этой функции, на стороне 1С происходит преобразование ссылки в УникальныйИдентификатор и обратно. 1С идет вперед - это радует, облегчает жизнь :)
user1442246; +1 Ответить
40. skl 22.07.22 11:44 Сейчас в теме
Через СКД добавить в "Вычисляемые выражения" :

XMLСтрока(Ссылка)
41. an4uss85 21.09.22 09:25 Сейчас в теме
Мне нужно было из базы на платформе 8.3 получить GUID Сотрудника в базе на 8.2. Скинула с кодом для общего понимания и примера:

Попытка

V82COMConnector = Новый COMОбъект("V82.COMConnector");
V82 = V82COMConnector.Connect("Srvr="""+ПараметрыПодключения.Сервер+""";Ref="""+
ПараметрыПодключения.База+""";Usr ="""+ПараметрыПодключения.Пользователь+""";
Pwd ="""+ПараметрыПодключения.Пароль+""";");

ПодключениеУспешно = Истина;

Исключение

ПодключениеУспешно = Ложь;

КонецПопытки;


Если ПодключениеУспешно Тогда

ЗапросСОМ = V82.NewObject("Запрос");

СправочникСотрудники = V82.Справочники.СотрудникиОрганизаций;

ЗапросСОМ.Текст = "ВЫБРАТЬ
| Сотрудники.Код КАК ТабНом,
| Сотрудники.Ссылка КАК СотрудникиСсылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК Сотрудники
|ГДЕ Не Сотрудники.ЭтоГруппа";
Результат = ЗапросСОМ.Выполнить().Выгрузить();

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("СотрудникиФИО",Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("ТабНом",Новый ОписаниеТипов("Строка"));
ТЗ.Колонки.Добавить("УИДСотр", Новый ОписаниеТипов("Строка"));

Для каждого СтрокаРез Из Результат Цикл
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.СотрудникиФИО = СтрокаРез.СотрудникиСсылка.Наименование;
СтрокаТЗ.ТабНом = СокрЛП(СтрокаРез.ТабНом);

//вот ключевой момент
СтрокаТЗ.УИДСотр = V82.XMLString(СтрокаРез.СотрудникиСсылка.УникальныйИдентификатор());

КонецЦикла;

КонецЕсли;
42. minarenko 21.09.22 09:29 Сейчас в теме
(41)
СтрокаТЗ.УИДСотр = V82.XMLString(СтрокаРез.СотрудникиСсылка.УникальныйИдентификатор());

СтрокаТЗ.УИДСотр = V82.XMLСтрока(СтрокаРез.СотрудникиСсылка);
43. SlavaKron 21.09.22 09:29 Сейчас в теме
(41)
СтрокаТЗ.УИДСотр = V82.XMLString(СтрокаРез.СотрудникиСсылка.УникальныйИдентификатор());
Достаточно
СтрокаТЗ.УИДСотр = V82.XMLString(СтрокаРез.СотрудникиСсылка)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот