Сообщество программистов Autodesk в СНГ

ADN Club => Vault API => Тема начата: Bazinga от 16-11-2018, 11:54:16

Название: Дата выдачи файла
Отправлено: Bazinga от 16-11-2018, 11:54:16
Как можно добраться до свойства файла "выдан"?
(https://i.postimg.cc/Cd29xWGx/image.png) (https://postimg.cc/Cd29xWGx)
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 16-11-2018, 16:00:44
Могу предположить (но не могу проверить), что это одно из свойств Autodesk.Connectivity.WebServices.File
Или CkInDate, или CreateDate, или ModDate
Название: Re: Дата выдачи файла
Отправлено: Bazinga от 19-11-2018, 08:40:56
Александр Ривилис, CkInDate (CheckOut = true) возвращает дефолтное значение. CreateDate - дата создания версии предыдущей, ModDate - возвращает дату последнего редактирования.

(https://i.postimg.cc/VJfbftPM/image.png) (https://postimg.cc/VJfbftPM)
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 19-11-2018, 13:53:18
Александр Ривилис, CkInDate (CheckOut = true) возвращает дефолтное значение. CreateDate - дата создания версии предыдущей, ModDate - возвращает дату последнего редактирования.

(https://i.postimg.cc/VJfbftPM/image.png) (https://postimg.cc/VJfbftPM)

Задам вопрос в ADN DevHelp. Конечно было бы неплохо иметь картинку с английской версией Vault, а то они не поймут о чем речь.
И не одну строчку, а полноценную картинку, в котором видно где находится это поле.
Название: Re: Дата выдачи файла
Отправлено: Bazinga от 20-11-2018, 08:33:27
Александр Ривилис, данное поле сидит в свойствах файла
(https://i.postimg.cc/HcnTndBp/image.png) (https://postimg.cc/HcnTndBp)
Я надеюсь такая информация поможет. Был бы метод, который принимает файл/Id файла + propertyDefinition

connection.PropertyManager.GetPropertyValue(IEntity entity, PropertyDefinition propDef, PrppertyValueSetting setting)
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 20-11-2018, 10:23:29
Был бы метод, который принимает файл/Id файла + propertyDefinition

connection.PropertyManager.GetPropertyValue(IEntity entity, PropertyDefinition propDef, PrppertyValueSetting setting)
FileIteration имеет интерфейс IEntity. В свою очередь есть конструктор FileIteration:
Код - C# [Выбрать]
  1. public FileIteration(
  2.    Connection vltConn,
  3.    File webServiceFile
  4. )
Так что по логике должно сработать. Запрос в ADN DevHelp я уже отправил, но это будет не быстро...
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 20-11-2018, 14:47:22
Как ни странно, но первый ответ из ADN DevHelp я уже оперативно получил. Но он такой же как и я предложил в первый раз - CreateDate. Я передал картинки и показал, что дата/время не то и что конкретно нужно. Надеюсь, что смогут помочь.
Название: Re: Дата выдачи файла
Отправлено: Bazinga от 20-11-2018, 14:51:00
Александр Ривилис, все-таки покопавшись нашла решение и один подводный камушек.

получить нужное свойство файла можно 2 способами:
Код - C# [Выбрать]
  1. VDF.Vault.Currency.Properties.PropertyDefinitionDictionary dfg = connection.PropertyManager.GetPropertyDefinitions(VDF.Vault.Currency.Entities.EntityClassIds.Files, null, VDF.Vault.Currency.Properties.PropertyDefinitionFilter.IncludeAll);
  2.                 var res = dfg.Where(prop => prop.Value.SystemName == "CheckoutDate").First();
либо
Код - C# [Выбрать]
  1. var propDefInfos = connection.WebServiceManager.PropertyService.GetPropertyDefinitionInfosByEntityClassId("FILE", null);
  2.                 var result = propDefInfos.Where(prof => prof.PropDef.SysName == "CheckoutDate").First();

Дальше вызывается метод
Код - C# [Выбрать]
  1. connection.WebServiceManager.PropertyService.GetProperties("FILE", new long[] { qw.Id }, new long[] { result.PropDef.Id });

Если в метод передавать File.MasterId, а не File.Id, метод вернет null

Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 20-11-2018, 14:55:58
Bazinga,
Так что можно сказать что совместными усилиями вопрос решился? Или еще какие-то вопросы остались?
Название: Re: Дата выдачи файла
Отправлено: Bazinga от 20-11-2018, 15:07:41
Александр Ривилис, в принципе решился вопрос. Одно уточнение только по CreateDate

(https://i.postimg.cc/F7Mfh5J6/image.png) (https://postimg.cc/F7Mfh5J6)
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 20-11-2018, 15:10:15
Александр Ривилис, в принципе решился вопрос. Одно уточнение только по CreateDate

(https://i.postimg.cc/F7Mfh5J6/image.png) (https://postimg.cc/F7Mfh5J6)

А можно фрагмент кода, который выдаёт это окошко? Отправлю его в ADN DevHelp, но немного подожду - возможно они предложат другое решение.
Название: Re: Дата выдачи файла
Отправлено: Bazinga от 20-11-2018, 15:12:09
Код - C# [Выбрать]
  1. var propDefInfos =
  2.       connection.WebServiceManager.PropertyService.GetPropertyDefinitionInfosByEntityClassId("FILE", null);
  3. var result =
  4.       propDefInfos.Where(prof => prof.PropDef.SysName == "CheckoutDate").First();
  5.  
  6. File[] files =
  7.       connection.WebServiceManager.DocumentService.GetLatestFilesByFolderId(selection.Id, false);
  8.  
  9. foreach (File qw in files)
  10. {
  11.     if (qw.CheckedOut)
  12.     {
  13.         var value = connection.WebServiceManager.PropertyService.GetProperties("FILE",
  14.                                new long[] { qw.Id }, new long[] { result.PropDef.Id }).First();
  15.         System.Windows.Forms.MessageBox.Show(qw.CkInDate + " CkInDate\n " +
  16.                                qw.CreateDate + " CreateDate\n " +
  17.                                qw.ModDate + " ModDate\n " +
  18.                                value.Val + " CheckoutDate");
  19.     }
  20. }
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 20-11-2018, 15:14:37
Bazinga,
Отлично! Спасибо!
Название: Re: Дата выдачи файла
Отправлено: Александр Ривилис от 21-11-2018, 18:32:07
Bazinga,
В ADN DevHelp подтвердили, что это правильный и единственный способ.
Код - C# [Выбрать]
  1. PropDef filePropdef = connection.WebServiceManager.PropertyService
  2.   .GetPropertyDefinitionsByEntityClassId("FILE").First(n => n.SysName == "CheckoutDate");
  3.  
  4. PropInst Properties = connection.WebServiceManager.PropertyService
  5.   .GetPropertiesByEntityIds("FILE", new long[] { selectedFile.Id }).First(n=>n.PropDefId == fileProps.Id);