|
Нестандартная задача
|
|||
---|---|---|---|
#18+
А может быть и стандартная... Средствами Access (vbscript) при создании записей в таблице "Заказы" создается папка на сетевом диске в подпапке соответствующей статусу заказа. В дальнейшем заказ может изменять свой статус, например с "Ком. предл." на "В работе", при этом папка заказа переносится в соответствующую статусу заказа подпапку на диске (напр. путь к папке при создании записи такой: C:/Ком. предл./ФИО клинета, при изменении статуса - C:/В работе/ФИО клиента). Данная процедура (скрипт) работает без нареканий, но иногда происходит следующее: Если у одного из пользователей открыта папка заказа, или файл из папки заказа (просто открыт, забыли или умышленно не закрывают), скрипт не срабатывает, что логично - папка или файл заняты. В этом случае в БД путь к папке меняется (путь формируется скриптом), а перемещения не происходит. Путь и папка заказа не связаны друг с другом. Я не прошу конкретного решения данной задачи (хотя буду крайне признателен если таковой будет), прошу лишь поделиться мыслями на тему, как можно обойти этот камень преткновения. Сам я уже извелся над этой задачей и ничего путного не приходит в голову. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 12:02 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Я вижу только одно решение....МОжет те кто больше знает меня поправят.... Менять архитектуру проекта. Статус документа определяется не его расположением, а соответствующей записью в БД. Наверное можно дождаться ночи когда все спят и запустить процедуру перемещения когда никто не должен быть подключен к файлу.... но мне и это не нравится.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:00 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
bbc116, перепроверяйте создание папки, файла там где она должна быть (да простое If Dir(pathname)<>"" then... подойдет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:10 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Serg197311Я вижу только одно решение....Менять архитектуру проекта. Логично! bbc116....Путь и папка заказа не связаны друг с другом.... Не логично! ( в таблице поля со статусом заказа не достаточно будет?) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:16 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Serg197311, Я понял что вы имеете ввиду. Уточняю: В таблице заказы есть такие поля как "ФИО клиента", "Адрес", "Статус заказа", "Папка заказа" Менеджер заносит данные в форме ФИО, Адрес, Статус заказа (выбирается из списка доступных значений: Ком. предл., В работе, Архив), сохраняет. Далее процедура формирует ссылку на папку заказа, где склеивает значения "C:/" & Статус заказа & "/" & ФИО & Адрес Полученную строку процедура апдейтом подставляет к записи, получается что-то вроде C:/Ком. предл./ФИО_Адрес/(несколько папок) Далее oFso.CreateFolder создает папки по ранее созданному пути. Далее, когда заказчика устраивает коммерческое предложение, менеджер в форме заказа изменяет статус с Ком. предл. на В работе, аналогичная процедура берет текущую ссылку на папку C:/Ком. предл./ФИО_Адрес/ и заменяет "Ком. предл." на "В работе", после чего апдейтит путь к папке в БД, и oFso.MoveFolder перемещает папку проекта по новому пути - и вот как раз тут иногда, редко, происходит сбой - если в момент изменения статуса заказа у кого-либо из менеджеров, проектировщиков, бухгалтера - не важно - открыта папка заказа или файл из подпапок, ссылка на папку в БД обновляется, а папка не перемещается (Винда не может переместить папку которая уже открыта или содержит файл который открыт кем-либо в сети). Вот в чем дело Прошу прощения что сразу не раскрыл всю суть проблемы, надеюсь это пояснение даст более полное понимание задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:30 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
bbc116, Вам же уже ответили... убирайте все промежуточные движения с папками, достаточно Статуса заказа и новой папки проекта заказа при его создании, делайте со статусом что угодно, папку не трогайте... А вот потом уже, когда менеджер завершит заказ, пусть перемещает эту папку куда захочет или удаляет дабы не плодить мусор в каталоге заказов... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:43 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
vmagbbc116, Вам же уже ответили... убирайте все промежуточные движения с папками, достаточно Статуса заказа и новой папки проекта заказа при его создании, делайте со статусом что угодно, папку не трогайте... А вот потом уже, когда менеджер завершит заказ, пусть перемещает эту папку куда захочет или удаляет дабы не плодить мусор в каталоге заказов...+100500 А как же "национальная забава"-создать искусственные трудности и героически их преодолевать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 13:52 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
vmag, Пожалуй, что я с Вами согласен, не зачем таскать папки при изменении статуса. Но начальство имеет другое мнение по этому поводу. В качестве аргументации нашего с вами мнения я показал начальству скрины данной темы и своё мнение. Начальник попросил найти способ проверять и при необходимости принудительно закрывать открытые папки и/или файлы заказов. Как думаете, возможен ли такой способ решения данной задачи? Умеет ли Windows принудительно закрывать файлы и папки, и если да, то как это реализовать из vbscript? Не прошу решения, прошу лишь совета :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 14:41 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
bbc116Умеет ли Windows принудительно закрывать файлы и папки, и если да, то как это реализовать из vbscript? Не прошу решения, прошу лишь совета :) Возможно это не сюда вопрос (не в этот форум) ... Если диск сетевой, - то как закрыть файл юзером 1, если его открыл юзер 2, причем оба скорее всего не администраторы... Сообщение начальству чтоб разослало циркуляр на закрытие файла ?... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 16:26 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
bbc116Как думаете, возможен ли такой способ решения данной задачи? С определенной степенью корректности общего процесса, можно поэкспериментировать с работой управляемых зеркал (как правило самописных)... Админы работают с основным сетевым ресурсом, все остальные с его зеркалом, тогда по барабану открыт в зеркале файл или нет, админ сможет сделать с папкой на сервере что угодно... ну как-то в эту сторону рыть... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 16:35 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
vmag, Буду экспериментировать, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 17:06 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
bbc116, можно еще так попробовать: - ну, с новым заказом все понятно, как прежде получаем папку и путь в БД... - а вот с изменением статуса делаем по-другому: 1. не перемещаем, а делаем копию с новым именем и получаем новый путь в БД. 2. пробуем удалить старый каталог, если удалось, то это удачная имитация штатного перемещения, если неудачная пишем старый путь (а возможно и новый) в отдельную таблицу протокола. 3. Ну а далее либо сервис, делающий заключительные операции, либо доп. действия по заключительным операциям при очередном новом изменении статуса очередного или этого же заказа... Какие доп действия: - пройтись по всей таблице протокола и сделать повторную попытку удаления старых каталогов, в идеальном состоянии эта таблица должна быть пустой... - возможно перед удалением нужно переписать файлы со старого каталога в новый или еще чего... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 17:49 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Может я чё не понимаю-а зачем вообще эти телодвижения с каталогами? Через какое-то время от формирования заказа,если он не выполнен(не подтвержден)менять ему статус и фсе...(сохранится история и всегда можно быстро найти не исполненные,добавив в тбл. поле "причинаНеисполнения", и выяснить причину этого) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 20:14 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
sdkuМожет я чё не понимаю-а зачем вообще эти телодвижения с каталогами? Скорее всего это уже рабочий процесс, изначально ориентированный на монопольную работу одного менеджера... теперь похоже движуха увеличилась, работают несколько менеджеров и есть желание поменьше переделывать код, а особенно общий алгоритм работы... в этой лабуде есть один плюс - по сути низовому менеджеру почти не нужен интерфейс программы, по названиям папок и так видно что в работе, что завершено, мечта любителей нортон и виндовс командеров... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 20:34 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
В какие то папки у сотрудников может быть доступ, в какие то нет, у части сотрудников доступа к программе нет вообще, достаточно распространенная практика кстати. непонятно, какие проблемы проверить наличие, в случае наличия проблемы сделать копию, поменять статус и закинуть в соответствующую таблицу, предназначенную для хранения удаляемых путей. при открытии базы, срабатывает скрипт на отработку удаления всех папок/файлов по путям в этой папке. снова проверка. неудаляемые повторно снова в таблицу и создать запись или сделать отчет, что такие то записи не удаляются (может это защищенные файлы) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 21:57 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Вход-авторизация,разграничение прав. Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 00:08 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
sdku, проги нет ,есть смарт который может читать эксели из определенной папки, например сборка, доставка, даже розница. Принял, удалил из папки. в работе.отчитался занес данные сохранил в другую папку: сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 00:32 |
|
Нестандартная задача
|
|||
---|---|---|---|
#18+
Может имеет смысл поставить тиражируемую систему документооборота/контроля? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 05:29 |
|
|
start [/forum/topic.php?fid=45&msg=39845404&tid=1610545]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 439ms |
0 / 0 |