Регистрация

FileID из VersionedFileCard::Versions [Решено]

Вопросы, связанные с разработкой дополнительных справочников, карточек и т.п. на базе DocsVision

Модератор: Модераторы форума

Новичок
Сообщения: 9
Зарегистрирован: 06 апр 2018, 16:00

FileID из VersionedFileCard::Versions [Решено]

Сообщение Ramzes » 18 июл 2018, 16:35

Здравствуйте.
Задача следующая: получить значение поля FileID из секции "Версии" карточки файла с версиями, имея карточку файла.
Долго не мог понять как работают файлы в DV (да и сейчас не могу врубился), в каком виде в DV существует карточка версий файла? и как она связывается с карточкой файла?

По каким полям они связаны в БД разобрался:
1) Из CardFile::MainInfo берём FileID
2) По FileID=>InstanceID в VersionedFileCard::MainInfo берём CurrentID
3) По CurrentID=>RowID в VersionedFileCard::Versions наконец берём, необходимый нам FileID.

И вот как это в скрипте БП сделать не представляю.
Последний раз редактировалось Ramzes 20 июл 2018, 10:24, всего редактировалось 1 раз.

Новичок
Сообщения: 9
Зарегистрирован: 06 апр 2018, 16:00

Re: FileID из VersionedFileCard::Versions

Сообщение Ramzes » 19 июл 2018, 10:10

Забыл сказать - DV 4.5.

Новичок
Сообщения: 9
Зарегистрирован: 06 апр 2018, 16:00

Re: FileID из VersionedFileCard::Versions

Сообщение Ramzes » 19 июл 2018, 14:56

Нашел такой код, вроде для 4.1.
Код: Выделить всё
// получаем основную секцию карточки файла
SectionData oSection = Card.Sections[Card.Type.Sections["MainInfo"].Id];
// строка (в этой секции она всегда одна)
RowData oRow = oSection.FirstRow;
// получаем идентификатор карточки файла с версиями (VersionedFileCard)
string sVFCardID = oRow.GetGuid("FileID").ToString();
// получаем системный объект - карточку файла с версиями
VersionedFileCard oVFCard = (VersionedFileCard)userSession.CardManager.GetCardData(new Guid(sVFCardID));

На строке:
Код: Выделить всё
VersionedFileCard oVFCard = (VersionedFileCard)userSession.CardManager.GetCardData(new Guid(sVFCardID));

БП выпадает с ошибкой, что преобразование типа CardData в VersionedFileCard невозможно.
Что-то не так в коде? или в 4.5 в принципе нельзя подобным образом преобразовывать типы?

Любитель
Сообщения: 29
Зарегистрирован: 28 дек 2012, 06:20

Re: FileID из VersionedFileCard::Versions

Сообщение chudkko » 20 июл 2018, 04:24

Для преобразования в VersionedFileCard, надо юзать GetCard:

VersionedFileCard oVFCard = (VersionedFileCard)userSession.CardManager.GetCard(new Guid(sVFCardID));

Новичок
Сообщения: 9
Зарегистрирован: 06 апр 2018, 16:00

Re: FileID из VersionedFileCard::Versions

Сообщение Ramzes » 20 июл 2018, 10:23

chudkko, спасибо, всё получилось.

Вернуться в Разработка на платформе Docsvision

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1