|
19.10.2022, 06:23 | #1 |
Участник
|
Хранение документов в D365 + временная папка. Где хранится?
Привет.
Знаю что в AX09 есть одноименная форма/таблица DocuType - Вид документов / Тип документа в которой создавались типы документов для прикладывания файлов пользователями. Т.е. это запись с сетевым путем для хранения. Пользователь прикладывает файл и он переименовывается по своему алгоритму аксаптовскому и помещается в эту сетефую папку. Все понятно. Но вот где в D365 данный функционал хранится? Где указываются сетевые пути? 2. При выгрузке данных формы в Excel D365 выгружает временный файл в сетевую папку. Подскажите тоже где данная настройка в самой D365. |
|
19.10.2022, 08:28 | #2 |
Участник
|
Цитата:
Т.е. это запись с сетевым путем для хранения. Пользователь прикладывает файл и он переименовывается по своему алгоритму аксаптовскому и помещается в эту сетефую папку.
Подозреваю, что в D365, с учетом её инфраструктуры, переход на хранение в БД полный. |
|
19.10.2022, 10:15 | #3 |
Banned
|
Цитата:
The database is not a supported storage location for files. Use a different location. К слову, при миграции с Ax2012 надо сначала засосать файлы в базу данных, потом мигрировать ее, потом нажать на кнопку Migrate files и выгрузить их опять, на этот раз в Blob Storage. https://learn.microsoft.com/en-us/dy...hments-ax-2012 Работает примерно так: X++: class DocuFileMigrateDBtoAzure { public static void main(Args _args) { DocuValue docuValue; DocuRef docuRef; DocuType docType; System.IO.Stream fileStream; Microsoft.Dynamics.AX.Framework.FileManagement.DocumentLocation location; Microsoft.Dynamics.AX.Framework.FileManagement.IDocumentStorageProvider storageProvider; DataArea dataArea; ; while select dataArea { changecompany(dataArea.id) { docType = null; docType.skipTTSCheck(true); while select forupdate docType where docType.TypeGroup == DocuTypeGroup::File { if (docType.FilePlace == DocuFilePlace::Database) { docType.FilePlace = DocuFilePlace::Archive; docType.update(); } storageProvider = Docu::GetStorageProvider(docType, false, curUserId()); if (storageProvider == null) continue; while select forupdate docuValue where docuValue.StorageProviderId == 0 && docuValue.Type == DocuValueType::Others join docuRef where docuRef.ValueRecId == docuValue.RecId && docuRef.ActualCompanyId == docType.DataAreaId && docuRef.TypeId == docType.TypeId { fileStream = Binary::constructFromContainer(docuValue.File).getMemoryStream(); if (fileStream.Length == 0) continue; docuValue.FileId = newGuid(); location = storageProvider.SaveFile( docuValue.FileId, storageProvider.GenerateUniqueName(docuValue.OriginalFileName), System.Web.MimeMapping::GetMimeMapping(docuValue.OriginalFileName), fileStream); fileStream.Close(); if (location == null) continue; if (location.NavigationUri) { docuValue.Path = location.get_NavigationUri().ToString(); } if (location.AccessUri) { docuValue.AccessInformation = location.get_AccessUri().ToString(); } docuValue.StorageProviderId = storageProvider.ProviderId; docuValue.update(); } } } } } } Последний раз редактировалось EVGL; 19.10.2022 в 10:20. |
|
|
За это сообщение автора поблагодарили: Pandasama (2). |
19.10.2022, 09:34 | #4 |
Участник
|
Обычно они хранятся в Azure storage. БД тоже доступна как опция но место в БД не бесплатное, так что смысл?
|
|
19.10.2022, 09:56 | #5 |
Administrator
|
Цитата:
Ключевое отличие от предыдущих версий произошло в том, что теперь заведомо не может быть сетевых папок в локальной сети, а может быть только либо база данных, либо ссылка на какой-нибудь сайт (Azure Storage / Sharepoint online). Ну т.е. сайт может подключаться либо к своей БД, либо к другому сайту. К локальной структуре он не имеет доступа
__________________
Возможно сделать все. Вопрос времени |
|
19.10.2022, 10:12 | #6 |
NavAx
|
В d365 нет опции хранить в БД, по крайней мере в настройках я ее не вижу.
|
|
19.10.2022, 13:56 | #7 |
Administrator
|
__________________
Возможно сделать все. Вопрос времени |
|
19.10.2022, 14:04 | #8 |
Banned
|
|
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
19.10.2022, 14:28 | #9 |
Administrator
|
__________________
Возможно сделать все. Вопрос времени |
|
|
|