AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 16.07.2008, 11:53   #1  
_scorp_ ist offline
_scorp_
Участник
Benutzerbild von _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Registriert seit: 25.07.2007
Ort: Москва
Документооборот
Добрый день!
Суть проблемы:
Пользователи прикрепляют картинки к журналам, пользуясь стандартным документооборотом. На журналы наложен RLS, поэтому каждый пользователь видит только предназначенные для него журналы (подразумевается что и картинки он должен видеть только свои). При просмотре картинки (нажать кнопку "Открыть") картинка открывается стандартным просмотрщиком и далее кнопочками вправо-влево можно свободно "гулять" по каталогу файлов и смотреть все картинки (и свои и чужие). Собственно в этом и проблема. Как запретить пользователям при открытии просмотрщика картинки "гулять" по каталогу?
Скажу сразу, что файлы бывают больше 5 МБ, поэтому на SQL сервере хранить их не получиться. Или получиться? Запретить просматривать картинки вне аксапты тоже нельзя, т.к. в самой аксапте уж слишком неудобно смотреть.
Я вижу только одно решение - при нажатии кнопки "Открыть" копировать файл в какой-то временный каталог пользователя и открывать его уже там, а при закрытии просмотрщика удалять файл из временного каталога (Хотя как перехватить это событие? Это ведь закрытие окна уже вне аксапты ). Что посоветуете?
Alt 16.07.2008, 13:41   #2  
vallys ist offline
vallys
Developer
 
146 / 108 (0) +++++
Registriert seit: 18.01.2005
У меня была отчасти схожая проблема. Необходимо было открывать в определенных случаях прикрепленные документы (хранимые в базе) так, что бы возможные изменения, производимые с документами, не записывались обратно в базу. Добавил новый пункт в енум DocuCode, добавил его обработку в DocuActionFile.run(), создал MenuItem с новым параметном енума DocuCode и там где было необходимо - кнопку с вызовом созданного MenuItem-а. Обработка нового пункта енума DocuCode такая же как и DocuCode::Open, только предварительно делается копия файла во временную папку.
В вашем случае можно в DocuActionFile.command() по некоторому критерию делать копию файла и изменять переменную filename. Только изменения. сделанные с этой копией все-равно подхватятся Аксаптой (файл скопируется в огигинальное хранилище), но это вас, как я понял, это не волнует.
Alt 16.07.2008, 14:01   #3  
_scorp_ ist offline
_scorp_
Участник
Benutzerbild von _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Registriert seit: 25.07.2007
Ort: Москва
Это понятно... А как потом удалять эту копию?
Alt 16.07.2008, 14:11   #4  
vallys ist offline
vallys
Developer
 
146 / 108 (0) +++++
Registriert seit: 18.01.2005
Zitat:
Zitat von _scorp_ Beitrag anzeigen
Это понятно... А как потом удалять эту копию?
можно использовать типа такого (кстати и обновляться в хранилище файлик не будет):
X++:
DocuFileWatchDog::create();
DocuOpenFile::add(docuRef, fileName,
    false, // не обновлять файл в хранилище при освобождении
    true); // удалить файл при освобождении
DocuFileWatchDog::createDelayed();
Вот только в DocuFileWatchDog багофичи есть помоему вплоть до попыток удаления файла пользователя A созданного на компьютере B при просмотре пользователем C на компьютере D... ну или типа того

P.S. Ax3

Geändert von vallys (16.07.2008 um 14:56 Uhr)
This post has been rated by: _scorp_ (1).
Alt 16.07.2008, 14:29   #5  
_scorp_ ist offline
_scorp_
Участник
Benutzerbild von _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Registriert seit: 25.07.2007
Ort: Москва
Спасибо за идею, сейчас попробую. Тут еще самому идея пришла. Может допилить вставку файла так, чтобы при сохранении файл сохранялся не просто в каталог, укакзанный в настройках, а в
X++:
docuType.ArchivePath\DocuValue.FileName\strfmt("%1.%2", DocuValue.FileName, DocuValue.FileType)
Т.е. будет получаться, что каждый файл лежит в отдельной папке. Ну и при открытии проделывать те же манипуляции.
Alt 16.07.2008, 14:47   #6  
_scorp_ ist offline
_scorp_
Участник
Benutzerbild von _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Registriert seit: 25.07.2007
Ort: Москва
Но проблему это решит только отчасти, т.к. через просмотрщик картинок пользователь используя кнопки вправо-влево не сможет "гулять" по каталогу, а вот через эксплорер сможет. Насколько я понимаю Аксапта создает файл в каталоге от имени пользователя, запустившего аксапту. Значит у пользователя должны быть права как на запись, так и на чтение этого каталога. Получается, что если пользователь захочет, то он зайдет в этот каталог обычным проводником и посмотрит все что нужно. Тупик?
Alt 16.07.2008, 14:50   #7  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von _scorp_ Beitrag anzeigen
Тупик?
Для начала стоит определить версию аксапты, для которой ищем решение
Решения я не знаю.

Может стоит посмотреть в этом направлении: как-то надо заставить писать и читать файл от имени пользователя, который запустил AOS.
__________________
полезное на axForum, github, vk, coub.
This post has been rated by: _scorp_ (1).
Alt 16.07.2008, 14:52   #8  
_scorp_ ist offline
_scorp_
Участник
Benutzerbild von _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Registriert seit: 25.07.2007
Ort: Москва
Спасибо, совсем забыл, Ax4 SP2.
Alt 16.07.2008, 15:11   #9  
vallys ist offline
vallys
Developer
 
146 / 108 (0) +++++
Registriert seit: 18.01.2005
Zitat:
Zitat von mazzy Beitrag anzeigen
Может стоит посмотреть в этом направлении: как-то надо заставить писать и читать файл от имени пользователя, который запустил AOS.
создать server method() {чтение/запись чего-либо}

Zitat:
Zitat von _scorp_ Beitrag anzeigen
Но проблему это решит только отчасти, т.к. через просмотрщик картинок пользователь используя кнопки вправо-влево не сможет "гулять" по каталогу, а вот через эксплорер сможет. Насколько я понимаю Аксапта создает файл в каталоге от имени пользователя, запустившего аксапту. Значит у пользователя должны быть права как на запись, так и на чтение этого каталога. Получается, что если пользователь захочет, то он зайдет в этот каталог обычным проводником и посмотрит все что нужно. Тупик?
Ну тогда понеслась:
1. Дать доступ к сетевой папке только пользователю, под которым запускается AOS
2. Открывать файлы (т.е. подправить код открытия файлов в DocuActionFile.command()) с docuType.filePlace == DocuFilePlace:: Archive так же как и файлы с docuType.filePlace == DocuFilePlace:: Database, только создавать/копировать временный файл на стороне сервера (т.е. использовать приставку server).
3. Открывать файлы в режиме "ридонли" (см. выше), иначе DocuFileWatchDog потом попробует записать файлик в сетевую папку от имени локального пользователя. Ну или переделать DocuFileWatchDog
Вроде все.

P.S. Это я про тройку. Не знаю на сколько другой документооборот в четверке...
Stichworte
ax3.0, ax4.0

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Поменяли сервер, перестал работать документооборот. wef2000 DAX: Функционал 3 18.09.2008 15:14
Word в PDF из Х++ через документооборот custtable DAX: Программирование 4 22.07.2008 18:37
Про документооборот andreynikolai DAX: Программирование 30 06.10.2006 09:34
Документооборот. Создание файла по шаблону. NJD DAX: Программирование 4 11.05.2005 10:52
Кто нибудь пытался релизовать ДОКУМЕНТООБОРОТ в Аксапта? edd DAX: Функционал 10 21.07.2003 15:48

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 02:32 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.