#0
by alexei366
Народ, есть гуид элемента документа. В базе есть к примеру 3 типа документов, они объедененны в общий журнал. Вопрос такой как зная гуид выцепить ссылку на документ, предварительно не зная что это за документ. Как я понимаю таблица всех документов едина (номер дата и т.д), есть доп тпблицы по типам доков согласно их реквизитов, и соответственно в главной таблице (по которой и строиться журнал) в единой колонке прописаны гуиды всех документов в независимости от типов. Но как запрос на родном языке сделать?
#9
by Kashemir
Для каждого Док из Метаданные.ЖурналыДокументов.ДокументыКонтрагентов.РегистрируемыеДокументы Цикл
#10
by alexei366
Вспомним 77. Таблица 1SJOURN есть колонка IDJOURNAL (на новый лад должна быть УникИд) и колонка DNPREFIX (Тип дока), ну и другие
#11
by sapphire
Перебрать все документы создать ссылку по каждому с нужным UUID и запихать в массив и выбрать {чего надо} из {таблица} где {колонка c ссылками} В (&МассивСсылок)
#15
by alexei366
Вот фигня, а я так надеелся что зная гуид определим и ссылку и тип и т.д не ищя в каждом доке этот гуид.
#21
by alexei366
Я думаю что таблица всех ссылок и других общих реквизитов документов для всех документов одна, и поэтому гуиды там не повторяться
#22
by s03
чтобы не искать этот ГУИД в каждом доке - подцепи таблицу журнала документов как внешний источник данных и ищи уже по этой таблице. найдёшь все ссылки, соответствующие твоему ГУИДу, а там (если их несколько встретиться) уже сам разбирайся, какая именно тебе будет нужна
#28
by Mikeware
Кстати, можно получить структуру хранения, сгенерить вьюху для "общего журнала", и искать по ней
#30
by alexei366
В журнале есть колонки _DocumentTRef (тип) и _DocumentRRef (гуид). Так что моя теория была правильной, только в отличии от 77 доки объедененны в общию таблицу не изначально, а при помощи журнала.
#31
by s03
лучший способ получить структуру хранения - непосредственно в SQL, ибо даже встроенная команда не даёт всех полей, которые там есть, да и имена у тех, которые она предоставляет не совсем соответствуют истинным именам, что хранятся в самом SQL
#32
by s03
да, сочетание Тип+ГУИД=Уникальность. А одного ГУИДа для уникальности маловато, потому и определить ссылку только по нему можно если других типов документов с аналогичным ГУИДом не встретишь
#33
by alexei366
В SQL вообще ограничений нет в этой таблице, походу на уровне 1С изначально проверяется.
#36
by Мыш
> сочетание Тип+ГУИД=Уникальность Неверное утверждение. ГУИД сам по себе уникален в принципе в неограниченных пределах. )
#38
by Kashemir
Да запросто - вопрос не раз уже поднимался. Возьми установи ссылку нового с одним ид разным документам и убедись.
#39
by Maxus43
Могут. Сделать это самому легко, дождаться пока платформа выкинет такой фокус - сложно
#44
by Kashemir
Что значит путать ? Для простых ссылочных полей тип заранее определен что не противоречит Ссылка = Тип+ГУИД.
#49
by Kashemir
Что ты мне вообще доказываешь? Что ссылка на уровне платформы не содержит тип ? Или что при хранении в таблицах не содержит тип ?
#50
by Maxus43
по ссылке можно определить ТИП, по ГУИДу нельзя, это же аксиомы, что тут спорить? 1с не отбрасывает никакие даже маловероятные события, из-за чего отказываются от хороших механизмов, например посты 116-117
#52
by Мыш
Я доказываю, что ГУИД сам по себе уникален. Ссылка в себе не содержит тип. Тип хранится в отдельном поле и только для составных полей.
#54
by Kashemir
ГУИД ни разу не уникален, он лишь стремится к уникальности. Платформа оптимизирует хранение для простых ссылочных. Не более того. При этом есть четкое понимание о типе.
#55
by Мыш
Да что же вы блин. Это же основы. Рамки уникальности шире всех баз. За это собственно 1С и критиковали при выходе 8-ки.
#57
by alexei366
Так ладно, буду искать другой способ, где входными данными будет являться не только гуид но и тип.
#58
by Kashemir
Удачи тебе с таким подходом. Наступишь на грабли - не говори что был непредупрежден.
#59
by Maxus43
ГУИДу 8-ки далеко до тех же сидов винды. в 1с берётся значение и инкреминируется на 1, что само собой может породить дубли чаще чем кажется
#61
by Мыш
Спасибо за одолжение ) Из-за особенностей реализации получения ГУИДа по его части можно с достаточно высокой долей вероятности определить тип ссылки. Но предварительно надо проанализировать ГУИДы существующих ссылок.
#63
by Kashemir
Для какой из распределенных баз, с учетом что они могут находится на разных серверах с разным системным временем ?
#69
by Maxus43
на партнёрсом форуме САМ главный 1сник отвечал, что ГУид используется для того, для чего его придумали, и тянуть оттуда время есть моветон и всех отлучат от 1с за такое
#70
by alexei366
Чо не понятного, время высчитывает служба Администратор Сервера 1С, берёт она с компа где находится.
#75
by Serg_1960
(кинул свою долю) Посмотрите в своей конфе на процедуру ПриНачалеРаботыСистемы и вызов ПроверкаРазницыВремениКлиент.ВыполнитьПроверку... и скажите хором - "Время - понятие относительно"(с)
#78
by Kashemir
Метод в будет быстрее, ибо не создается лишний объект. Единственно - привязан к языку :)
#80
by Maxus43
+ у нас так сделали проверку на справочники, и вот веть - были элементы и с таким названием, Объект не найден :)
#81
by Kashemir
Привязка к ИД в любом случае будет быдлокодом. На ней серьезные вещи строит не стоит. А для всякой некритичной ерунды - пусть будет то что быстрее.
#83
by Kashemir
Помимо прочего метод в имеет и другой минус - не все типы имеют метод ПолучитьОбъект. Например перечисления.
#84
by Serginio1
Вообще через УстановитьСсылкуНового можно установить, что угодно, хоть свой вариает Гуида. Если пользоваться генератором Гуида, то он будет уникальным так как например зависит от сетевой карты, времени. GUID хорош прежде всего при обмене данными без всяких суффиксов префиксов и может объединяться с любыми учетными системами.
#86
by GANR
Если GUID генерируется инкрементом на 1 - это, скорее, недочет разработчиков платформы, а не тех, кто на ней программирует. Уникальный идентификатор, должен быть уникальным и точка.
#87
by Serginio1
То есть ты утверждаешь что гуид для ссылок отличен от Новый уникальныйИдентификатор? Дай ссылку на алгоритм и особенно для распределенных баз.
#89
by Serginio1
87+ Да проверил действительно увеличивают на единицу. Но здесь есть смысл, в том, если привязка к компьютеру будет уникальной, а значит и будет уникальна на другом компьютере. Надо смотреть алгоритм. С другой стороны смешно экономить на формировании гуида
#90
by Serginio1
Генерация Гуида 1С 531923ce-3d55-11e2-8afe-c86000c70663 531923cf-3d55-11e2-8afe-c86000c70663
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- TR9_2_TR11.ERT
- 1C 8.2 пропали иконки с кнопок
- Подписка на событие перед записью справочников.
- Конвертация: как выгружать свойство приемника без свойства источника?
- Поврежден файл базы данных
- ЗУП Свод ЗП по подразделениям
- Как связать период Регистра накопления и Регистра сведений во внутреннем запросе
- Последний адресный классификатор для 1с 8.2 упп на каком диске ИТС есть
- Невозможно определить счет расчетов с комитентом
- Документ расчета с контрагентами (ручной ввод)
- Параметры учёта в УТ11
- Изменение заголовка общей команды
- КД, как один документ разбить на много...
- Чтение иерархического файла Excel
- Как преобразовать цвет 1с в RGB?
- SOAP и 1С
- Удаление картинок в УТ 10.2
- Производственный календарь в УТ 11
- Валовая прибыль в УТ 10.3
- Универсальный отчет: как НЕ выводить итоги в группировках?