Найти документ по гуиду #642254


#0 by alexei366
Народ, есть гуид элемента документа. В базе есть к примеру 3 типа документов, они объедененны в общий журнал. Вопрос такой как зная гуид выцепить ссылку на документ, предварительно не зная что это за документ. Как я понимаю таблица всех документов едина (номер дата и т.д), есть доп тпблицы по типам доков согласно их реквизитов, и соответственно в главной таблице (по которой и строиться журнал) в единой колонке прописаны гуиды всех документов в независимости от типов. Но как запрос на родном языке сделать?
#1 by Aleksey
нет общего журнала в 8-ке
#2 by Kashemir
Если только гуид - то придется перебирать все виды документов
#3 by alexei366
в смысле нет, как тогда реализация журнала происходит (я думал как в 77)
#4 by Maxus43
Журнал в 8-ке - отдельная таблица в БД. Не зная тип - не вытащить имхо
#5 by alexei366
Ну у кого какие идеи?
#6 by sapphire
Так чего куда есть?
#7 by alexei366
?
#8 by sapphire
Выражай свои мысли яснее. Уникальный идентификатор в таблице без типа?
#9 by Kashemir
Для каждого Док из Метаданные.ЖурналыДокументов.ДокументыКонтрагентов.РегистрируемыеДокументы Цикл
#10 by alexei366
Вспомним 77. Таблица 1SJOURN есть колонка IDJOURNAL (на новый лад должна быть УникИд) и колонка DNPREFIX (Тип дока), ну и другие
#11 by sapphire
Перебрать все документы создать ссылку по каждому с нужным UUID и запихать в массив и выбрать {чего надо} из {таблица} где {колонка c ссылками} В (&МассивСсылок)
#12 by alexei366
Я то без цикла хотел
#13 by sapphire
Забудь про клюшки
#14 by sapphire
Не выйдет, хотя можно и без цикла
#15 by alexei366
Вот фигня, а я так надеелся что зная гуид определим и ссылку и тип и т.д не ищя в каждом доке этот гуид.
#16 by Kashemir
Массив ссылок все равно в цикле будет собираться
#17 by Kashemir
В гуиде нет типа. Тип есть в ссылке :)
#18 by s03
а если по данному ГУИДу будет две ссылки на разные типы документов?
#19 by hhhh
а как же оно сортирует по виду документа?
#20 by Kashemir
В ссылке есть тип. По нему и сортирует. Потом уже по гуиду
#21 by alexei366
Я думаю что таблица всех ссылок и других общих реквизитов документов для всех документов одна, и поэтому гуиды там не повторяться
#22 by s03
чтобы не искать этот ГУИД в каждом доке - подцепи таблицу журнала документов как внешний источник данных и ищи уже по этой таблице. найдёшь все ссылки, соответствующие твоему ГУИДу, а там (если их несколько встретиться) уже сам разбирайся, какая именно тебе будет нужна
#23 by Kashemir
Гуиды могут повторяться для разных типов.
#24 by alexei366
Все нафиг щаз залезу в SQLServer и проверю
#26 by Kashemir
В восьмерке все обстоит несколько по другому.
#27 by Mikeware
взялся за снеговика - забывай про клюшки...
#28 by Mikeware
Кстати, можно получить структуру хранения, сгенерить вьюху для "общего журнала", и искать по ней
#29 by Serg_1960
"Нельза лепить снеговика с клюшками в голове"(классика)
#30 by alexei366
В журнале есть колонки _DocumentTRef (тип) и _DocumentRRef (гуид). Так что моя теория была правильной, только в отличии от 77 доки объедененны в общию таблицу не изначально, а при помощи журнала.
#31 by s03
лучший способ получить структуру хранения - непосредственно в SQL, ибо даже встроенная команда не даёт всех полей, которые там есть, да и имена у тех, которые она предоставляет не совсем соответствуют истинным именам, что хранятся в самом SQL
#32 by s03
да, сочетание Тип+ГУИД=Уникальность. А одного ГУИДа для уникальности маловато, потому и определить ссылку только по нему можно если других типов документов с аналогичным ГУИДом не встретишь
#33 by alexei366
В SQL вообще ограничений нет в этой таблице, походу на уровне 1С изначально проверяется.
#34 by Serg_1960
Жду продолжения саморазоблачения :)
#35 by alexei366
Я не так выразился, имелось в виду что гуид и тип лежат в отдельных колонках.
#36 by Мыш
> сочетание Тип+ГУИД=Уникальность Неверное утверждение. ГУИД сам по себе уникален в принципе в неограниченных пределах. )
#37 by Мыш
Тоже неверно. ГУИДы не могут повторяться.
#38 by Kashemir
Да запросто - вопрос не раз уже поднимался. Возьми установи ссылку нового с одним ид разным документам  и убедись.
#39 by Maxus43
Могут. Сделать это самому легко, дождаться пока платформа выкинет такой фокус - сложно
#40 by Kashemir
Все верно. Тип+ГУИД = Ссылка в терминах 1С.
#41 by Мыш
Это можно сделать только преднамеренно. Ну а специально можно сделать что угодно. )
#42 by Мыш
Это только для составных полей. Не надо путать.
#43 by Kashemir
Вероятность такая есть всегда и отбрасывать ее нельзя.
#44 by Kashemir
Что значит путать ? Для простых ссылочных полей тип заранее определен что не противоречит Ссылка = Тип+ГУИД.
#45 by Мыш
Отбрасывать её можно, потому что она крайне низкая.
#46 by Kashemir
Нельзя отбрасывать - ложка дегтя портит бочку меда.
#47 by Мыш
Ссылка есть ссылка. Тип добавлен для определения таблицы поиска. Вы смешиваете сущности.
#48 by Мыш
Вы каску носите? Ведь есть вероятность падения метеорита и он может попасть в голову )
#49 by Kashemir
Что ты мне вообще доказываешь? Что ссылка на уровне платформы не содержит тип ? Или что при хранении в таблицах не содержит тип ?
#50 by Maxus43
по ссылке можно определить ТИП, по ГУИДу нельзя, это же аксиомы, что тут спорить? 1с не отбрасывает никакие даже маловероятные события, из-за чего отказываются от хороших механизмов, например посты 116-117
#51 by Kashemir
Если хожу по стройке - обязательно одену.
#52 by Мыш
Я доказываю, что ГУИД сам по себе уникален. Ссылка в себе не содержит тип. Тип хранится в отдельном поле и только для составных полей.
#53 by Maxus43
Он уникален в пределах одной Таблицы (читай Типа)
#54 by Kashemir
ГУИД ни разу не уникален, он лишь стремится к уникальности. Платформа оптимизирует хранение для простых ссылочных. Не более того. При этом есть четкое понимание о типе.
#55 by Мыш
Да что же вы блин. Это же основы. Рамки уникальности шире всех баз. За это собственно 1С и критиковали при выходе 8-ки.
#56 by Мыш
Статистически уникален. 2 в степени 128.
#57 by alexei366
Так ладно, буду искать другой способ, где входными данными будет являться не только гуид но и тип.
#58 by Kashemir
Удачи тебе с таким подходом. Наступишь на грабли - не говори что был непредупрежден.
#59 by Maxus43
ГУИДу 8-ки далеко до тех же сидов винды. в 1с берётся значение и инкреминируется на 1, что само собой может породить дубли чаще чем кажется
#60 by alexei366
нифига из гуида в 1с можно время записи вычислить
#61 by Мыш
Спасибо за одолжение ) Из-за особенностей реализации получения ГУИДа по его части можно с достаточно высокой долей вероятности определить тип ссылки. Но предварительно надо проанализировать ГУИДы существующих ссылок.
#62 by Maxus43
точность фиговая
#63 by Kashemir
Для какой из распределенных баз, с учетом что они могут находится на разных серверах с разным системным временем ?
#64 by Serg_1960
"Попкорн приготовил"(с)
#65 by Maxus43
кинь свою долю в общий котёл лучше
#66 by alexei366
#67 by Serg_1960
Нет, не буду. Много "вкидывать" придется - к каждому топику этой ветки :)
#68 by Kashemir
Хех, ты так и не понял смысла вопроса в
#69 by Maxus43
на партнёрсом форуме САМ главный 1сник отвечал, что ГУид используется для того, для чего его придумали, и тянуть оттуда время есть моветон и всех отлучат от 1с за такое
#70 by alexei366
Чо не понятного, время высчитывает служба Администратор Сервера 1С, берёт она с компа где находится.
#71 by Bober
см. если не веришь, запусти СообщитьНовый уникль
#74 by Maxus43
1с не одобряет, нет 100% вероятности :)
#75 by Serg_1960
(кинул свою долю) Посмотрите в своей конфе на процедуру ПриНачалеРаботыСистемы и вызов ПроверкаРазницыВремениКлиент.ВыполнитьПроверку... и скажите хором  - "Время - понятие относительно"(с)
#76 by GANR
Пусть идентификаторы делают уникальней ]:->.
#77 by GANR
to
#78 by Kashemir
Метод в будет быстрее, ибо не создается лишний объект. Единственно - привязан к языку :)
#79 by Maxus43
Найти и "Объект не найден" - быдлокод)
#80 by Maxus43
+  у нас так сделали проверку на справочники, и вот веть - были элементы и с таким названием, Объект не найден :)
#81 by Kashemir
Привязка к ИД в любом случае будет быдлокодом. На ней серьезные вещи строит не стоит. А для всякой некритичной ерунды - пусть будет то что быстрее.
#82 by Maxus43
в РИБ базах иногда нужно к ИД привязыватся, не вижу быдлокода, от задачи зависит
#83 by Kashemir
Помимо прочего метод в имеет и другой минус - не все типы имеют метод ПолучитьОбъект. Например перечисления.
#84 by Serginio1
Вообще через УстановитьСсылкуНового можно установить, что угодно, хоть свой вариает Гуида.  Если пользоваться генератором Гуида, то он будет уникальным так как например зависит от сетевой карты, времени. GUID хорош прежде всего при обмене данными без всяких суффиксов префиксов и может объединяться с любыми учетными системами.
#85 by Maxus43
>, гуид 1с это не совсем гуид
#86 by GANR
Если GUID генерируется инкрементом на 1 - это, скорее, недочет разработчиков платформы, а не тех, кто на ней программирует. Уникальный идентификатор, должен быть уникальным и точка.
#87 by Serginio1
То есть ты утверждаешь что гуид для ссылок отличен от Новый уникальныйИдентификатор? Дай ссылку на алгоритм и особенно для распределенных баз.
#88 by Bober
а он и уникален, никто не говорил, как платформа реализует это условие.
#89 by Serginio1
87+ Да проверил действительно увеличивают на единицу. Но здесь есть смысл, в том, если привязка к компьютеру будет уникальной, а значит и будет уникальна на другом компьютере. Надо смотреть алгоритм. С другой стороны смешно экономить на формировании гуида
#90 by Serginio1
Генерация Гуида 1С 531923ce-3d55-11e2-8afe-c86000c70663 531923cf-3d55-11e2-8afe-c86000c70663
#91 by GANR
ГЫЫЫЫ... Инкремент - экскримент.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям