Можно ли получить идентификатор объекта в запросе?

1. pilotfitz 12.07.12 15:38 Сейчас в теме
Можно ли получить идентификатор объекта в запросе?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
45. mrGREYka 5 04.08.21 15:35 Сейчас в теме
(1)Можно в запросе, в sql запросе.
50. user1773463 22.03.23 09:39 Сейчас в теме
(1) Я сделал так:

 Запрос = Новый Запрос; 
 Запрос.Текст = "ВЫБРАТЬ
 | Номенклатура.НаименованиеПолное,
 | Номенклатура.Ссылка
 | ИЗ
 | Справочник.Номенклатура КАК Номенклатура"; 
 РезультатЗапроса = Запрос.Выполнить();
 СпрОбъект = РезультатЗапроса.Выбрать(); 
 Пока СпрОбъект.Следующий() Цикл
 СтрокаУИ = XMLСтрока(СпрОбъект.Ссылка); 
 КонецЦикла;
Показать


СтрокаУИ имеет тип строка
51. пользователь 22.03.23 17:55
Сообщение было скрыто модератором.
...
52. user1863362 22.03.23 19:48 Сейчас в теме
(51) Чувак год соображал, что ты так него сразу-то...

Ну тормоз он, что ж теперь?
53. RustamZz 22.03.23 20:18 Сейчас в теме
(50) Не благодари
ВЫБРАТЬ
	УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Номенклатура.Ссылка) КАК УИД
ИЗ
	Справочник.Номенклатура КАК Номенклатура
NicolasCage; +1 Ответить
54. user1773463 23.03.23 09:37 Сейчас в теме
(53) так можно только с 22ой платформе
55. RustamZz 23.03.23 09:40 Сейчас в теме
(54) У меня уже 23 стоит, а 22.1750 у 90% клиентов
56. user1773463 23.03.23 09:42 Сейчас в теме
(55) очень рад за вас. У крупного клиента стоит 20я и просто так он ее не обновит
57. RustamZz 23.03.23 09:53 Сейчас в теме
(56) Надо уметь убеждать, что бы обновили.
2. vlasin 12.07.12 16:04 Сейчас в теме
3. pilotfitz 12.07.12 20:24 Сейчас в теме
4. andrewks 1368 12.07.12 22:19 Сейчас в теме
8. pilotfitz 13.07.12 10:58 Сейчас в теме
(4) andrewks, хотел использовать идентификатор в качестве ключа для организации обмена с другой системой
10. andrewks 1368 13.07.12 11:29 Сейчас в теме
(8) ну, всё равно же запрос потом будешь обрабатывать в 1С. там и вытащишь идентификатор. по сути, Идентификатор лежит в ссылке, но 1С не позволяет достучаться до него напрямую.
11. pilotfitz 13.07.12 11:41 Сейчас в теме
(10) andrewks, в данном случае будет односторонний обмен, мне нужно просто отдавать в стороннюю систему данные. Получается, буду формировать пакет в два этапа 1) запрос 2) заполнение идентификатора при обходе результата, по сути очередной запрос в цикле, который так не любят экзаменаторы. тупняк, как ни крути, было бы лучше получить идентификатор запросом
12. andrewks 1368 13.07.12 13:13 Сейчас в теме
(11) э-э-э... а кто заставляет делать запрос в цикле? заполнение идентификатора при обходе не требует делать запрос в цикле
14. pilotfitz 13.07.12 15:02 Сейчас в теме
(12) andrewks, а метод УникальныйИдентификатор()- это разве не запрос к БД?
18. andrewks 1368 13.07.12 15:20 Сейчас в теме
(14) не факт. хотя от 1С, конечно, всего можно ожидать. если переживаешь за этот момент - проверь. напиши простейший код и считай вызовы сервера
43. Wo0dV0rd258 09.07.21 15:12 Сейчас в теме
(14) Нет. Ссылка, полученная в результате запроса - это сущность, которая уже содержит в себе уникальный идентификатор, возвращенный из БД. Метод УникальныйИдентификатор() просто получает из ссылки на стороне сервера 1С уникальный идентификатор. Запрос к БД не выполняется при этом.
44. FatPanzer 09.07.21 15:35 Сейчас в теме
5. red80 12.07.12 22:34 Сейчас в теме
Нормально. Видимо человек хочет сделать универсальный запрос, анализирующий объекты конфигурации. Угадал?
7. pilotfitz 13.07.12 10:57 Сейчас в теме
(5) red80, не угадал, все проще. 1С является источником данных для другой системы, идентификаторы идеально подходят в качестве ключей
milov.aleksey; +1 Ответить
37. milov.aleksey 398 13.09.19 12:54 Сейчас в теме
(7) Есть проще решение: в СКД--> ОсновнаяСхемаКомпоновкиДанных --> на вкладке "Вычисляемые выражения" добавить:

XMLСтрока(Ссылка)
huzden; jif; GV.; eeeio; fedor40; machneff; vladnet; romankoav; Yan_Malyakov; user1464234; luchik.lipetsk; nagaitseff; user658191_e.churakin; Оберон; UJF; Megaiff; +16 Ответить
6. winapi 60 13.07.12 08:23 Сейчас в теме
Да просто выгружайте результат запроса в ТЗ, там где надо получать идентификаторы, добавляйте колонку идентификатор, обрабатывайте для каждой строки и потом эту ТЗ снова в запрос загружайте и продолжайте работу.
9. pilotfitz 13.07.12 10:59 Сейчас в теме
(6) winapi, спасибо, видимо так и поступлю
13. Alex353 6 13.07.12 14:21 Сейчас в теме
Сделайте отдельный текстовый реквизит и туда сохраняйте значение UUID, потом сможете его вытащить в запросе.
16. pilotfitz 13.07.12 15:07 Сейчас в теме
(13) Alex353, чтобы заполнить значения идентификаторов, мне ведь нужно в цикле перебрать строки? есть предположение, что метод УникальныйИдентификатор() есть ничто иное, как запрос к БД. Ровно как запрос есть обращение к свойствами любого объекта типа Ссылка. Сейчас посмотрю в профайлере, может быть идентификатор существует вместе со ссылкой, ведь по сути ссылка это и есть идентификатор
17. Alex353 6 13.07.12 15:15 Сейчас в теме
(16) pilotfitz, Например если вы синхронизируете справочники, то в модуль объекта в процедуру ПриСохранении() добавьте код, получающий значение UUID и записывающего его в текстовый реквизит этого же элемента и потом уже сможете его из запроса получить напрямую.
19. pilotfitz 13.07.12 15:54 Сейчас в теме
(17) Alex353, теперь понял вашу идею, спасибо. Единственное хотелось бы обойтись без изменения конфы
20. Alex353 6 13.07.12 20:03 Сейчас в теме
(19) pilotfitz, Изменения будут минимальные. Заполнение и сохранение реквизита можно оформить через подписку на события и создать свой общий модуль. Сможете обновляться автоматически, т.к. типовую конфу вы не трогаете, а ваши изменения будут лежать сбоку от нее.
21. pilotfitz 14.07.12 09:47 Сейчас в теме
22. Alien_RS_Forever 432 14.07.12 12:16 Сейчас в теме
(20), (21) лучше создать регистр сведений и в него через подписку на события писать пару ссылка - id. т.о. можно использовать для любых объектов метаданных и не плодить реквизиты. с блокировками там порядок будет: ссылка - измерение, id - ресурс.
gelmoriel; 1cprogr_nsk; METAL; sommid; CaSH_2004; +5 Ответить
23. Alex353 6 14.07.12 13:53 Сейчас в теме
(22) srv7, Не думаю что это правильный вариант в данном случае. UUID постоянная величина и не будет меняться со временем, нет смысла делать еще 1 регистр и потом цеплять его к таблице с объектами.
25. Alien_RS_Forever 432 16.07.12 09:42 Сейчас в теме
(23), (24) здесь фишка не в хранении (повторном) id объекта, а в том, что можно запросами получать таблицы объектов будучи уверенным в их уникальности, например при обменах данными между разными конфигурациями, когда приходит пачка объектов и необходимо определить, в какой объект базы-приемника что загружать. Для примера - такой регистр уже существует в типовых конфигурациях - СоответствиеОбъектовИнформационныхБаз.
26. sergb1979 14.12.12 13:18 Сейчас в теме
(25) srv7, все верно написал. как раз сталкнулся с такой задачей, где номера документов неуникальные в течение дня и стыковать несколько баз тяжело
29. Allexe8.1 03.10.13 17:46 Сейчас в теме
(26) sergb1979, В РИБ используется как раз передача ссылок (уидов) в качестве значений. Предполагается, что уиды уникальны в пределах всех распределенных баз). Выгоднее тем, что для получения реквита объекта, вам не нужно получать его ссылку из базы, из регистра соответствий - эту ссылку можно запихать в объект напрямую.
15. pilotfitz 13.07.12 15:03 Сейчас в теме
хотя может и нет.... ссылка ведь и есть сам идентификатор
28. Allexe8.1 03.10.13 17:41 Сейчас в теме
(15) pilotfitz, Точно нет - любая ссылка содержит тип и идентификатор. Посмотрите ЗначениеВСтрокуВнутр(Ссылка).
Если было бы иначе, то, например, в УФ ссылки нельзя было бы использовать в контексте клиента.
30. Alien_RS_Forever 432 04.10.13 01:40 Сейчас в теме
(28) (29) ну только если тема не безнадежно устарела ))
(15) вот тут (если интересно) в моей публикации можете посмотреть, как из ID получить тип объекта..
Allexe8.1; +1 Ответить
31. Allexe8.1 04.10.13 02:01 Сейчас в теме
(30) srv7, Писал что то подобное, когда начинал с обменами заморачиваться). ИЗ ид можно получить ссылку - только зная тип. Собственно, любая ссылка - это тип (в контексте данной конфигурации) + ИД. Точнее идентификатор типа + идентификатор объекта.
32. Alien_RS_Forever 432 04.10.13 02:18 Сейчас в теме
(31) посмотрите обработку ;) я точно не помню код, но там именно по куску идентификатора можно определить тип таблицы, а по типу таблицы - тип объекта
33. Alien_RS_Forever 432 04.10.13 02:19 Сейчас в теме
(31) типа у нас есть некий ID и только, приехавший из другой базы и нам нужно только по нему понять, что это за объект и создать ссылку с этим ID.. посмотрите вобщем
24. TsMGeorg 16.07.12 09:16 Сейчас в теме
Да вариант с хранением ID объектов представляется мне несколько абсурдным
27. CaSH_2004 372 03.10.13 17:32 Сейчас в теме
(24) Как раз наоборот. 1С это плотно использует как указанов (25). А для многих крупных фирм где запрещено пользоватся конфигуратором как прикажеш получать ID если только консоль запросов доступна?
34. ARL 313 05.06.14 10:12 Сейчас в теме
Столкнулся с подобной задачей.
При формировании выгрузки просто пишем строку на подобии:
Item.ID = XMLСтрока(СтрокаДерева.Номенклатура);
т.к это для ссылки даст " XML представление уникального идентификатора ссылки "(Синтакс-помощник)
SmArtist; Alien_job; TeMochkiN; dger2002; bzmax; BoryaMbi; mymyka; khadjit2003; +8 Ответить
35. makarovy 18.09.18 13:35 Сейчас в теме
С версии 8_3_12 можно.

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

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

Источник:
Vitaly1C8; dr2c; andreich_ru; EMelihoff; +4 Ответить
36. Serj1C 483 08.08.19 09:37 Сейчас в теме
(35)
основании таблиц значений, со

Но из ссылки то также нельзя получить уникальный идентификатор в запросе?
42. Xershi 1474 22.10.20 16:57 Сейчас в теме
(36) да передать гуид можно, но ссылку в него преобразовать в запросе нельзя. В СКД можно используя пост обработкой или в спец консолях тоже самое делается после получения данных.
38. Running 06.07.20 21:06 Сейчас в теме
Можно. В настройках запроса, обычно по кнопке ЕЩЕ выбираете из списка Дополнительно (Синий бочонок с шестеренкой) устанавливаете настройки отображать ссылки. После настройки подождать минуты 2 и пробовать свой запрос. Ссылки должны отображаться ссылками.
39. radik_gre 27.08.20 19:58 Сейчас в теме
(38) Можно подробнее про это? Что за кнопка "Еще"?
40. gelmoriel 22.10.20 16:20 Сейчас в теме
(39) Это кнопка в консоли запросов.
Прикрепленные файлы:
41. Xershi 1474 22.10.20 16:55 Сейчас в теме
(39) это пост обработка в консолях.
46. 1v7 235 24.11.21 11:09 Сейчас в теме
//Уже можно:
&НаСервере
Процедура УИДвЗапросе(ТЗ_МатериалыНаСкладе) // Таблица значений

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

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

КонецПроцедуры
Показать
user1406450; +1 1 Ответить
47. CaSH_2004 372 29.06.22 22:25 Сейчас в теме
(46) Если уж начитался чего то на ночь то пиши источник, вот он кстати:
Получение уникального идентификатора объекта из ссылки в запросе
Там хоть подробности описаны что и как, а у тебя какие-то обрывки мыслей.
Вся это лепота доступна только на платформе версии 8.3.22, причем эта версия ознакомительная! Чтобы убедится в этом идем сюда:
Технологическая платформа 8.3
где читаем внизу:
14.06.22 опубликована версия 8.3.22.1368, предназначена для тестирования

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

А вот интересно зачем вы приведенный в статье текст запроса выложили дословно немного поменяв переменные и чуток оформив его? Тестировали? А зачем такое полное следование примеру с указанием ненужных полей? Спрашиваю потому что если бы не это то я бы и не заметил откуда этот плагиат. А так пока что это единственная статья которую я нашел по данной теме и явно не вы ее автор.
Забавно что статья написана 18.11.2021, а коммент ваш 24.11.21, а сама то версия 8.3.22 до сих пор в разработке - уже более полугода.
Кстати было как то что выкладывали в релизы ссылку на 8.4, повисела несколько лет и ее убрали - решили что рано нам такие продвинутые технологии иметь ))
48. sondarium 177 05.07.22 23:56 Сейчас в теме
в 8.3.22 добавили такую возможность:
УникальныйИдентификатор(Спр.Ссылка) - вернёт uuid
ПРЕДСТАВЛЕНИЕ(УникальныйИдентификатор(Спр.Ссылка)) - вернёт строкой uuid

соряныч, выше уже писали)
Vitaly1C8; +1 Ответить
49. Vitaly1C8 06.07.22 00:48 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)