Имя: Пароль:
 
1C
1С v8
Почему 1С не позволят брать GUID в запросе?
0 DeadLine
 
29.05.18
11:06
Собственно вопрос-и есть заголовок темы.
Почему 1С не позволят брать GUID в запросе,почему нельзя было каждому объекту конфигурации добавить автоматическое поле "УникальныйИдентификатор" -тип строка.
1 1Сергей
 
29.05.18
11:07
(0) потому, что не нужно это одинеснику
2 novichok79
 
29.05.18
11:08
(0) зачем вам GUID? что им можно сделать чего нельзя сделать ссылкой? искать битые объекты прямо в запросе?
3 VS-1976
 
29.05.18
11:08
(0) По тому что ссылка в упакованном виде лежит ( 16 байт ), а GUID это текстовое представление этих 16 байт.
Ты можешь сам сделать текстовое поле для GUID и записывать его в текстовом виде
4 1Сергей
 
29.05.18
11:08
(2) скорее всего самопальная синхра с внешним источником/приемником
5 ildary
 
29.05.18
11:11
(0) потому что это появилось только в 8.3.12
6 D3O
 
29.05.18
11:12
(2) есть задачи, в которых в пределах одного объекта (справочник, документ) существуют подчиненные ТЧ. вот тогда очень сильно выручает УИД. Но в языке запросов поддержки полноценной до сих пор нет.
7 1Сергей
 
29.05.18
11:13
(6) >>есть задачи, в которых в пределах одного объекта (справочник, документ) существуют подчиненные ТЧ

Чо? Нахрена гуид табличной части? там есть ссылка
8 VS-1976
 
29.05.18
11:14
(6) Не понимаю зачем вам в текстовом виде GUID? Эта запись только для человека актуальна.
9 Navigator
 
29.05.18
11:17
Может еще и на запись его открыть? )

Есть хорошая статья на эту тему
http://catalog.mista.ru/public/416675/
10 Вася Теркин
 
29.05.18
11:18
По той же причине почему массивы индексировать нельзя
"Одинэсники тупые" (с) БЖ-С
Некультурные вопросы задаешь...
11 impulse9
 
29.05.18
11:18
GUID ИМХО нужен только в задачах обмена, и всяких технических типа дублирования предопределенных, которые решаются без запросов
12 Вася Теркин
 
29.05.18
11:19
(6) У ТЧ нет ГУИД, так задумано.
13 Вася Теркин
 
29.05.18
11:20
+(12) Если надо ГУИД делайте подчиненный справочник или журнал документов. Смотря чего хотите связать.
14 VS-1976
 
29.05.18
11:20
(6) В общем забейте. Ссылка это и есть GUID просто текстовое представление
15 Вася Теркин
 
29.05.18
11:21
(7) У ТЧ нет ссылки отдельно на каждую строку... Он про это
16 Lama12
 
29.05.18
11:22
(0) Тип "GUID" и тип "Строка" это разные типы и хранятся они по разному.
17 VS-1976
 
29.05.18
11:23
(15) Там есть offset = НомерСтроки. А ссылка чтобы найти ввсе подчинённые. Иначе нужно было бы иметь поле GUID + Parent, а это увеличение объёма данных. НомерСтроки это 2 байта ( 65535 )
18 VladZ
 
29.05.18
11:24
(0) Озвучь задачу, для которой нужен сабж.
19 1Сергей
 
29.05.18
11:24
(17) не, по номеру строки нельзя идентифицировать строки в двух ТЧ. Обычно для этого используется отдельное поле
20 Вася Теркин
 
29.05.18
11:24
(14) Да. Одни объекты со ссылкой, их можно сохранять отдельно. Другие (тч) - неотъемлемая часть объекта. Отдельно сослаться на неё нельзя.
Неудобство только когда с другими системами дружишь. Но это для защиты сделано.
А так бы в СКЛ сделал себе фронтсистему, объектам гуиды 1совские записал, зарегистрировал как источник данных - и полная интеграция.
Но нет. К пространству объектов 1С так просто не присосешься. Они так заставляют все решение на платформе 1С делать.
(17) А если поменять строки местами?
21 Вафель
 
29.05.18
11:27
ГУИД в запросе нужен, только не строка, а тип ГУИД.
Да что там говорить. тип ГУИД даже во временную нельзя выбрать
22 Вася Теркин
 
29.05.18
11:28
(19) Справочник отдельный со своими оригинальными гуидами и каждая строка ТЧ гуидом нумеруется.
23 1Сергей
 
29.05.18
11:28
(21) аргументируй
24 VS-1976
 
29.05.18
11:28
(20) Сделано так ( НомерСтроки ) чтобы уменьшить объём индексов и табличной части. Если поменять местами то ничего страшного в этом нет. Если ты будешь передавать объект полностью, а в приёмнике замещать то всё будет хорошо.
25 Вася Теркин
 
29.05.18
11:28
(21)Нельзя, конкуренты в 6 сек понапишут 1С:Несовместимо...
26 Lama12
 
29.05.18
11:29
А где ТС?
27 Вафель
 
29.05.18
11:30
(25) почему нельзя? Что сложного реализовать
Выбрать Ссылка.УникальныйИдентификатор()
28 Вася Теркин
 
29.05.18
11:30
(24) Речь о ссылках на строку.
Ничего не надо помещать. Ты ТС сабж видел?
Он хочет ссылки на каждую строку иметь. в (6) все написано...
29 VS-1976
 
29.05.18
11:30
(21) Зачем тебе это нужно?
30 Вафель
 
29.05.18
11:31
Для обменов всяких очень нужно
31 Cool_Profi
 
29.05.18
11:32
(18) "Озвучь задачу, для которой нужен сабж."
У меня, например, в стороннюю программу данные выгружаются, а потом обратно загружаются. И там нужен уникальный ИД. Сделали отдельным реквизитом
32 Вася Теркин
 
29.05.18
11:32
(27) В запросах нельзя обращаться к ГУИД напрямую. Если перед выполнением запроса получать Внешний источник данных и перебирать его строки и по присланому ГУИДУ искать объект 1С. то тормоза будут смертельные.
33 Вафель
 
29.05.18
11:32
да если загуглить: как получить гуид сразу становится понятно - нужно
34 Вася Теркин
 
29.05.18
11:33
Так защищаются от врагов
35 Вафель
 
29.05.18
11:33
например задача сравнения данных 2х копий баз. с гуидами бы решалась без обработки
36 1Сергей
 
29.05.18
11:33
(30) (31) ну, вот. как я и говорил, самописные обмены. постобработкой запроса легко получаются гуиды
37 Вася Теркин
 
29.05.18
11:33
при поиске по каждому гуиду будет отдельный и весьма тяжелый запрос.
38 VS-1976
 
29.05.18
11:34
(28) Да какая проблема. Добавляешь в табличную часть поле с типом УникальныйИдентификатор и вот тебе GUID на каждой строке. При записи можно генерировать GUID, если он не сформирован ранее. В этом поле включаешь индекс для быстрого поиска и всё.
39 Вася Теркин
 
29.05.18
11:34
(38) Так и есть, но это же "обман" платформы.
40 Вафель
 
29.05.18
11:34
(38) собственно 1с так и делает. взять ту же ерп
41 VS-1976
 
29.05.18
11:35
(39) зато объём базы меньше. Там где нужно прикрутил и хорошо
42 Вася Теркин
 
29.05.18
11:36
(41) Тогда надо на чистом СКЛ писать. Прикрутил - и хорошо...
43 Вася Теркин
 
29.05.18
11:36
И объем меньше, и овцы сыты.
44 1Сергей
 
29.05.18
11:37
(42) чтобы продавец на кассе в скульной консольке чеки вбивала?
45 1Сергей
 
29.05.18
11:37
запросами
46 МихаилМ
 
29.05.18
11:38
более того 1с8:  не позволяет в запросе ссылку сравнивать с другими типами.

программ не ругается просто в зависимости знака сравнения
выдает истину или ложь.
47 timurhv
 
29.05.18
11:44
(2) Битые ссылки можно запросом получить :)
48 VS-1976
 
29.05.18
11:44
(46) ТипЗначения в запросе вроде как работает для ссылок
49 VS-1976
 
29.05.18
11:44
(47) Левым соединением не вопрос получить битые ссылки
50 zva
 
29.05.18
11:49
Кто-нить это ковырял?
8.3.12  http://downloads.v8.1c.ru/content/Platform/8_3_12_1440/1cv8upd.htm#e4150059-9163-11e7-a3f7-0050569f678a

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

Реализована возможность использовать поля и выражения типа УникальныйИдентификатор в операции множественного В.
51 Гипервизор
 
29.05.18
11:56
(50) Наверное он (5)
52 Вася Теркин
 
29.05.18
12:02
1С:Предприятие 8.3 (8.3.10.2252)
Это край земли. Дальше не ходили. Упадешь, наверное...
53 igorPetrov
 
29.05.18
12:03
ТС все тот же старый тролль, и все повелись на него ))
54 Вася Теркин
 
29.05.18
12:07
Всем было весело. Но тут пришел ты...
55 StanLee
 
29.05.18
12:42
Недавно понадобился GUID в запросе чтобы на сайт (самописный у клиента) отправлять уникальный ид-шник номенклатуры. Можно конечно после запроса отдельно его получать функцией и пихать уже на сайт, или наколхозить чтото другое уникальное (не лень, но зачем, когда есть GUID), но в запросе было бы изящнее, сразу получил все данные и спихнул. Да и побыстрее мальца.
56 craxx
 
29.05.18
12:44
(55) ГУИД это строка. 36 символов.
57 Гипервизор
 
29.05.18
12:45
(55) Так вам для сайта требуется именно УникальныйИдентификатор или его строковое представление?
58 craxx
 
29.05.18
12:52
(57) вот и я об том же
59 Ботаник Гарден Меран
 
29.05.18
12:53
О, забыл что релиз с гуидами в запросах уже не тестовый. Пора допиливать сравнивалку.
60 StanLee
 
29.05.18
13:09
(57) строковое
61 Cool_Profi
 
29.05.18
13:12
(56) гуид это не строка. Это бинарное значение в 26 байт
62 Cool_Profi
 
29.05.18
13:12
*36
63 novichok79
 
29.05.18
13:45
ну и что что уникальныйидентификатор можно в запросе. его ведь из ссылки получить надо, а он получается через функцию в языке 1С. так что смысла 0 от нововведения, разве что теперь изъ*бываться не нужно если таблица значений содержит колонки таких типов.
64 ERWINS
 
29.05.18
13:48
в 8.3.13 это сделали
65 VS-1976
 
29.05.18
14:32
(63) Да на уровне пост обработки можно сделать, когда с базы втаскивается ссылка. Всё равно ИТОГИ так же рассчитываются в пост обработке запроса.
66 DeadLine
 
29.05.18
14:50
Прочитал комменты,это поле бы например очень упростило бы некоторые процедуры в Конвертации,когда нужна постобработка,если бы могли бы создать для ПКО -ПКС, УИД-УИД(лично я с этим столкнулся).Самое главное я не понимаю в чём такая уж сложность для разработчиков платформы.
67 Вафель
 
29.05.18
14:52
(63) там наоборот, ссылку получают из гуида
68 Вафель
 
29.05.18
14:53
(62) 16 байт или 36 символов строки
69 Tateossian
 
29.05.18
15:00
(66) Ты путаешь суть объектных и необъектных данных. Табличная часть - необъектные данные. Но уникальность у нее имеется. В SQL вообще нет понятия объекта.
70 Tateossian
 
29.05.18
15:01
(68) Пересчитай-ка

0x800500505686329811E525D34F7D1280
71 Eiffil123
 
29.05.18
15:05
Гуиды часто требуются, когда нужно правила поиска настроить сложные в конвертации: например, сначала ищем по инн-кпп, потом по инн и пустому КПП, потом по ГУИД. Без постобработки можно было вы в ПВД поместить только запрос. А так придется этот запрос выгрузить в ТЗ, там к нему добавить колонку с ГУИДами и ее заполнить. Или уже в ПКС получать соответствующее значение ГУИДа.
72 Tateossian
 
29.05.18
15:13
(71) Можно немножко проще и оптимальнее. Берем соответствие. Вставить(GUID, Ссылка). Вставить(ссылка, GUID). Поиск будет работать идеально по любому полю. Но есть нюанс - соответствие нужно привести к неопределено явно, иначе есть риск получить циклические ссылки.
73 D3O
 
29.05.18
15:54
(7) ссылка в табличной части - это ссылка на таблицу "шапки". представь ситуацию, когда к одной строке мастер таблицы может быть привязано N строк в подчиненной ТЧ.
платформа такой механизм также не поддерживает сама по себе.
74 DrZombi
 
29.05.18
16:02
(0) Потому, как и то, что 1С и в 8.ххх написала свой язык запросов, который на SQL криво оптимизируется :)
75 Вафель
 
29.05.18
16:03
(70) sql умеет CAST
76 DrZombi
 
29.05.18
16:04
+(70) SQL умеет работать с функциями пользователя....
Там хоть саму 1С напиши, будет работать быстрее ;)
77 Tateossian
 
29.05.18
16:06
(75) Простым cast'om не конвертнешь в ГУИД 1C-ный, ибо ГУИД в 1С сделан по своему (не соответствует rfc4122)
78 Tateossian
 
29.05.18
16:09
(74) Вот не надо хаить просто так - я когда смотрю иногда тексты в профайлере, там такие роскошные hint'ы SELECT * WITH (FAST TOP 1) или WITH (NOLOCK) - и все по делу и к месту. Мне лично далеко до некоторых конструкций. И это SQL 2008/12. Я уж не представляю, что там они в 2016 делают, если на уровне SQL WITH TABLOCK работает асинхронно. А уж конструкции RLS - это вообще песня)
79 d4rkmesa
 
29.05.18
16:24
(0) Не знаю насчет автоматических ГУИД, но неавтоматические добавленные реквизиты типа "Уникальный идентификатор" нормально заработали этак с 8.3.11 в запросе. Консоль запросов выдает представления в виде строки, джойнятся хорошо.
80 Вафель
 
29.05.18
16:32
(77) да ну прям. все гуиды одинаковые. бывают просто разные записи их
81 DeadLine
 
29.05.18
16:32
(78) У каждого же объекта конфигурации в структуре изначально создано поле "Наименование" ,которое присваивается при записи объекта,так почему бы не добавить поле GUID -строка,в которое бы записывалось бы такое же значение ,Как у получаемой функцией УникальныйИдентификатор()?
82 Вафель
 
29.05.18
16:33
(81) в такой постановке задача точно не нужна
83 d4rkmesa
 
29.05.18
16:42
(81) "Защита от дурака", т.к. появятся желающие активно использовать guid ссылки не по назначению.
84 Вафель
 
29.05.18
16:46
(83) да никакая это не защита. просто не сделали, а теперь и не хотят
85 Tateossian
 
29.05.18
17:22
(81) У меня есть база на 1С, некий журнал версионирования. там все реквизиты строками хранятся. Так вот, эта база в три раза больше рабочей. Ибо строк очень много. Хотя там всего три справочника. P.S. Уже нет, переделана на третью нормальную форму.

Системные архитекторы 1С не один пуд лиха съели, потому им виднее, как правильно. Я думаю, с ними стоит согласиться.
86 Сияющий в темноте
 
29.05.18
19:28
А ничего,что ссылка это два гуида типа и элемента,и 1с не поддерживает уникальность гуида во всей базе.
Программист всегда исправляет последнюю ошибку.