AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.06.2024, 20:46   #1  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
RunAs для клиентского класса
Добрый день
Есть класс , что выполняется на клиенте. Класс обрабатывает файлы. Для этого используется папка, к которой имеет доступ определенный пользователь. Мне нужно сделать корректирующий данные job, что испольует внутри этот класс. RunAs не работает на клиенте. Можно это как-то программно обойти?
Спасибо
Ax2009
Старый 25.06.2024, 11:05   #2  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
297 / 866 (29) +++++++
Регистрация: 23.10.2012
Добрый день.
Вы, будучи админом, доступом к папке обладаете?
Если нет:
А. Запустите Аксапту из под учетной записи пользователя.
Б. Или получите доступ к папке и перейдите к следующему алгоритму.
Если да:
1. Не пускайте пользователя в систему;
2. В UserInfo замените SID целевого пользователя на свой, а у своего затрите;
3. Запустите джоб;
4. Верните как было.

Последний раз редактировалось Товарищ ♂uatr; 25.06.2024 в 11:12.
Старый 25.06.2024, 11:50   #3  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
А Нет пароля для прямого доступа
Б Доступ к папаке только у сервера либо юзеров, у кот доспут дан.
Старый 25.06.2024, 12:27   #4  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
А возможно ли textBuffer передать между клиентом и сервером?
Старый 25.06.2024, 14:55   #5  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
297 / 866 (29) +++++++
Регистрация: 23.10.2012
Как байтовый поток можете трафик "гонять". Обычно для таких целей контейнеры используют (RunBase.dialog и его pack/unpack ярый тому пример).
Можете в БД вставить записи считанные сервером из целевого каталога и клиентом считать.

Последний раз редактировалось Товарищ ♂uatr; 25.06.2024 в 15:03.
За это сообщение автора поблагодарили: Lankey (1).
Старый 25.06.2024, 18:26   #6  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
Спасибо! интересный вариант
1) Какое ограничение на размер контейнера в таком случае?
2) TextBuffer почему нельзя использовать?
3) Можно через binData? Или его надо в контейнер упаковывать, а так просто не передать?

Вариант с БД,наверное, самый надежный, но немного тяжеловесно получится. Хотелось бы только job-ом обойтись для этой задачи

Последний раз редактировалось Lankey; 25.06.2024 в 18:32.
Старый 25.06.2024, 20:22   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,690 / 1192 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если доступ у сервера, то в чем проблема выполнить запуск на стороне сервера?

Не сам джоб, разумеется, а класс, который он использует?

1. Не в курсе, в dax2009 уже был статический метод ClassFactory::makeObjectOnServer()? Т.е. просто создать экземпляр класса на стороне сервера
2. Создать класс-посредник с единственным статическим методом с опцией Server внутри которого и запускать нужный класс. И из джоба запускать этот статический метод
3. Если возможно, такой статический метод с опцией Server можно создать на самом целевом классе
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Товарищ ♂uatr (4).
Старый 25.06.2024, 20:33   #8  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
297 / 866 (29) +++++++
Регистрация: 23.10.2012
1. На ум не приходят какие-либо ограничения при передаче контейнеров между клиентом и сервером, в отличии от строк - их лимит установлен конфигурацией приложения (как клиента, так и сервера по отдельности).
2. Это класс, он создаётся либо на клиенте, либо на сервере, ну будете через RPC на клиенте "дёргать" экземпляр серверного объекта, результат его работы всё равно будет (value) строка, а при больших объемах данных она упирается в п.1.
3. BinData как раз и работает с типом данных "контейнер" и это класс, тоже самое, что и п.2. Только результат его работы - контейнер. https://learn.microsoft.com/en-us/do...ass-and-struct

Ощущение, что не теми средствами решаете проблему.
Логично просто написать джоб который скопирует целевые файлы от имени сервера в промежуточную папку к которому обладаете доступом. А далее просто запустите корректирующий джоб aka целевой пользователь.
Старый 28.06.2024, 20:40   #9  
Lankey is offline
Lankey
Участник
 
127 / 28 (1) +++
Регистрация: 19.05.2020
Прошу прощения за глупый, наверное, вопрос, но какая разница между "гонять байтовый поток" и "передавать строку", если все - байты. Т.е, почему есть лимит в конфигурации только на размер передаваемой строки?

Спасибо за ссылку на передачу по значению и по ссылке. Что я не очень понимаю : в чем сложность передать даже класс между клиентом и сервером по значению (если его члены -простые типы). Можно же ,мне кажется, SysPackable сделать(то есть , статус запаковать в контейнер и передать). заимплементировать. И если это так, то почему в тот же textBuffer не добавили pack/unpack для удобства? Наверное, вопрос риторический, но вдргу есть объяснение тому, что не стараются все делать упаковываемым и передаваемым для оптимизации перформанса (=чтобы не дергать объект на другом tier)
Старый 01.07.2024, 10:37   #10  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
297 / 866 (29) +++++++
Регистрация: 23.10.2012
В том и дело, что строка не простой тип данных в отличии от контейнера. Почитайте чем достигается идемпотентность строки.
Старый 01.07.2024, 12:51   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Lankey Посмотреть сообщение
Что я не очень понимаю : в чем сложность передать даже класс между клиентом и сервером по значению (если его члены -простые типы). Можно же ,мне кажется, SysPackable сделать(то есть , статус запаковать в контейнер и передать). заимплементировать. И если это так, то почему в тот же textBuffer не добавили pack/unpack для удобства? Наверное, вопрос риторический, но вдргу есть объяснение тому, что не стараются все делать упаковываемым и передаваемым для оптимизации перформанса (=чтобы не дергать объект на другом tier)
1. На уровне ядра в АХ нет возможности сериализовывать (упаковывать) и десереализовывать (распаковывать) объекты. Т.е. (условно) по умолчанию методы pack / unpack не присутствуют на каждом объекте системы. Т.о. для каждого объекта нужно вручную их писать. Так-то Вы правы - делается класс implements SysPackable и создаются вручную методы pack / unpack - и "всего делов".
2. Однако есть ограничение на размер передаваемого буфера между клиентом и сервером. И классы, которые работают с большими массивами данных (тот же TextBuffer) не имеет методы pack / unpack, потому что там может оказаться неконтролируемый размер буфера. Конечно также можно сказать и про Set / Map / List, однако... вот у меня есть пример из жизни, когда слишком большой курсор я сохранял в классе RecordSortedList и ... АОС падал.

В общем - в любом случае - нужно принять как данность - невозможность передавать огромные размеры данных между клиентом и сервером АХ + невозможность создавать копию объекта на другом tier на уровне ядра (т.е. только вручную на Х++)
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Прошу помощи с runas smailik DAX: Программирование 3 05.06.2017 17:25
setTimeOut() не работает в классе, если экземпляр класса создан через вызов MenuFunction AR® DAX: Программирование 10 22.05.2013 16:53
lcash: Using RunAs on the Demo VMs Blog bot DAX Blogs 0 14.11.2010 21:11
передача курсора в два класса kitty DAX: Программирование 3 09.08.2006 13:21
Запустить метод класса loka DAX: Программирование 2 13.03.2006 15:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:41.