Тема: Как ссылаться на конкретную версию документа?

Добрый день. В ТДМС требуется ссылаться на конкретную версию объекта.
Проблема в том, что GUID последней версии меняется при создании новой версии.
Каким образом можно сделать жесткую ссылку на конкретную версию объекта ТДМС?

Re: Как ссылаться на конкретную версию документа?

В ТДМС нет атрибута типа "ссылка на версию". Обрисуйте задачу поконкретнее, возможно найдутся варианты решения без ссылок на версию.

Re: Как ссылаться на конкретную версию документа?

Задача следующая.
Есть объект "рабочий чертеж", содержащий некоторое количество изменений (версий). Часть из них утвержденные и подисанные, часть - не подписанные.
Есть объект "накладная на отправку документации", который содержит в составе несколько рабочих чертежей, причем в накладной указываются определенные версии измов. Требуется четко связать накладную с определенной версией рабочего чертежа, сформировать печатную форму и  выгружать на жесткий диск файлы тех измов рабочих чертежей, которые содержатся в составе накладной.

Кроме того, требуется выгружать актуальные версии документов (с подписями, приложенным pdf-файлом, находящиеся в определенном статусе) на определенную дату.

Re: Как ссылаться на конкретную версию документа?

ias_admin пишет:

Задача следующая.
Есть объект "рабочий чертеж", содержащий некоторое количество изменений (версий). Часть из них утвержденные и подисанные, часть - не подписанные.
Есть объект "накладная на отправку документации", который содержит в составе несколько рабочих чертежей, причем в накладной указываются определенные версии измов. Требуется четко связать накладную с определенной версией рабочего чертежа, сформировать печатную форму и  выгружать на жесткий диск файлы тех измов рабочих чертежей, которые содержатся в составе накладной.

Кроме того, требуется выгружать актуальные версии документов (с подписями, приложенным pdf-файлом, находящиеся в определенном статусе) на определенную дату.

:) То, о чем вы говорите, у нас называется "версионностью состава". Не вдаваясь в технические подробности, задачка решаемая. Скорее даже сказать решенная. Остается только решить с визуализацией. Предложите инструменты показа различных версий объекта с составами, и это на самом деле простимулирует нас дополнить систему этим функционалом

Re: Как ссылаться на конкретную версию документа?

ИМХО, это не называется версионностью состава. Версионность состава - это механизм учёта версий связанных объектов, а тут, судя по описанию, объект один.
В данной ситуации можно использовать GUID версии - либо скрытый атрибут, либо таблицу на накладной - 1-й столбец - наименование чертежа, 2-й - номер изменения (версии) - а при выгрузке скриптом вытаскивать нужную версию.

(изменено: MAG, 16 апреля 2009г. 12:46:32)

Re: Как ссылаться на конкретную версию документа?

McZag пишет:

...Предложите инструменты показа различных версий объекта с составами, и это на самом деле простимулирует нас дополнить систему этим функционалом

Вы имеете в виду как визуально это должно быть? В дереве отображается текущая версия с текущим составом, а если открыли свойства "версии" то на её закладке "Состав" соответственно "старый" состав, т.е. с этой закладки открываются именно те версии которые были в момент фиксирования версии. Или я чего-то не понял?
В любом случае данная задача это действительно не "версионность состава", т.к. накладная по-хорошему имеет только одну версию. Речь я так понимаю о том, чтобы иметь некий уникальный и неизменный идентификатор версии объекта еще когда эта версия является текущей.

Anatoly пишет:

В данной ситуации можно использовать GUID версии

В данной ситуации это никак невозможно, т.к. GUID или Handle текущей версии объекта всегда впредь будет принадлежать самой последней текущей версии, а та версия что была текущей в момент формирования накладной (тогда она тоже имела этот идентификатор) получает новый GUID намного позже, когда накладная уже закрыта и забыта.

Anatoly пишет:

скрытый атрибут, либо таблицу

...или атрибут состава у накладной (как мы делаем). Проблема в завязке на некое "Название версии" объекта, которое строго говоря не является уникальным и неизменным. Скрытый атрибут - хорошо, в него можно писать даже некий генерируемый "руками" GUID, но как гарантированно отловить создание версии чтобы его присвоить?

В общем всем станет легче если будет введен идентификатор версии независимый от идентификатора самого объекта.

Re: Как ссылаться на конкретную версию документа?

MAG пишет:

.....
но как гарантированно отловить создание версии чтобы его присвоить?
...

существует возможность 100% отлова, если создание версии происходит только по команде - в ней и надо искать все накладные по ReferencedBy, или по Uplinks (у кого что), проверять, заменять.

В общем всем станет легче если будет введен идентификатор версии независимый от идентификатора самого объекта.

+1

Re: Как ссылаться на конкретную версию документа?

ias_admin пишет:

Требуется четко связать накладную с определенной версией рабочего чертежа, сформировать печатную форму и  выгружать на жесткий диск файлы тех измов рабочих чертежей, которые содержатся в составе накладной.

Здесь все более-менее понятно, постараюсь предложить рабочее решение, не выскакивая из штанов и не меняя номера версии TDMS.

ias_admin пишет:

Кроме того, требуется выгружать актуальные версии документов (с подписями, приложенным pdf-файлом, находящиеся в определенном статусе) на определенную дату.

Здесь давайте подробнее. Т.е. вы хотите выбирать документы по дате, на которую состояние базы данных (набор документов с файлами и другой атрибутики) актуально?

Я вас правильно понял? Если правильно, то расскажите о задаче в целом. (Пояснение в виде "хотелось бы" здесь не годится. Это довольно тяжеловесная примочка. Должна быть "производственная необходимость".  ;))

Re: Как ссылаться на конкретную версию документа?

McZag пишет:

Требуется четко связать накладную с определенной версией рабочего чертежа, сформировать печатную форму и выгружать на жесткий диск файлы тех измов рабочих чертежей, которые содержатся в составе накладной.

Здесь все более-менее понятно, постараюсь предложить рабочее решение, не выскакивая из штанов и не меняя номера версии TDMS.

Сейчас думаю о том, чтобы делать отдельный объект для каждого изма, и держать табличный атрибут с перечнем предыдущих измов.
Если есть более красивое решение - интересно.

McZag пишет:

Кроме того, требуется выгружать актуальные версии документов (с подписями, приложенным pdf-файлом, находящиеся в определенном статусе) на определенную дату.

Здесь давайте подробнее. Т.е. вы хотите выбирать документы по дате, на которую состояние базы данных (набор документов с файлами и другой атрибутики) актуально?


Я вас правильно понял? Если правильно, то расскажите о задаче в целом. (Пояснение в виде "хотелось бы" здесь не годится. Это довольно тяжеловесная примочка. Должна быть "производственная необходимость".  ;))

Задача такая - выгружать срез актуальных документов проекта на дату. При этом выгружать только те документы, которые по состоянию на эту дату находились в статусе "в архиве". Дополнительно требуется формировать отчетность о состоянии проекта.

(изменено: McZag, 29 апреля 2009г. 11:07:05)

Re: Как ссылаться на конкретную версию документа?

ias_admin пишет:

Задача такая - выгружать срез актуальных документов проекта на дату. При этом выгружать только те документы, которые по состоянию на эту дату находились в статусе "в архиве". Дополнительно требуется формировать отчетность о состоянии проекта.

Актуальный документ это кто? Кто находится в бумажном обороте или тот который послужил электронным исходником для него? Соедините две ветки обсуждения. Мне кажется у вас есть шанс построить правильную систему. Многие игнорируют это, считают излишним. А мне кажется, что разделение электронных и бумажных документов единственно правильный путь.

Скажу вам честно, версии TDMS не задумывались как самостоятельные объекты. История изменений - да, но они не самостоятельны. Хотя у версии объекта есть необходимые вам даты и статус, я бы не стал делать на это ставку.

По идее ваш срез - это выборка, которая должна искать данные в версиях объектов. Чтобы искать в версиях включите любое доступное свойство версии в запрос. Результатом запроса будут именно версии объектов, включая неактивные.

Сможем ли мы сейчас построить такой запрос? Без дополнительных усилий не сможем. Дело в том, что в редакторе запросов нет возможности отдельно указывать какой идентификатор нам нужен - версии или объекта. Перейдя к поиску по версиям, мы в автоматически начинаем группировать хэндлы версий, а нужна группировка по объектам для того чтобы выполнить запрос типа HAVING (MAX). Так что без шаманства тут никак. Я попросил коллегу выполнить этот трюк (сам я боюсь). Как только ему удастся это сделать, отпишет.

Re: Как ссылаться на конкретную версию документа?

ias_admin пишет:

Задача такая - выгружать срез актуальных документов проекта на дату. При этом выгружать только те документы, которые по состоянию на эту дату находились в статусе "в архиве". Дополнительно требуется формировать отчетность о состоянии проекта.

Сделайте дополнительный атрибут "Дата регистрации актуального документа в архиве". - при создании новой версии обнулять, до помещения в архив.
Потом простейшей выборкой можно выцепить все версии с нужной датой.
Далее, простейший скрипт по выгрузке.

ИМХО, решиение этой задачи 5-минутное дело.