Повторное открытие формы. #524130


#0 by Игорь Сергеевич
Народ подскажите пожалуста. Надо сделать так что бы обработку можно было одновременно запускать 1 раз. Щас реализовано так. Ну если все коротко. При запуске создается файлик определенного вида с одной строчкой. А после завершения работы обработки этот файлик удаляется. Но если обработка завершенна аварийно то соответственно этот файлик не удаляется. есть у кого нить светлые мысли по этому поводу?
#1 by mikecool
смотрим на # в описании ОткрытьФорму
#2 by Игорь Сергеевич
если ты про СП то я не чего там не нашел.
#3 by Ёпрст
самое простое - блокировать лбой объект бд методом Блокировка, в обработке в ПриОткрытии проверять, если заблокирован - не запущаем, свободен - устанавливаем блокировку, запущаем. При любом вылете (аварийном или еще как), блокировка снимется сама автоматом.
#4 by mikecool
помню , что там было типа ОткрытьФорму("Документ.Реализация#") открывает новую форму
#5 by Игорь Сергеевич
мне новую форму открывать не надо. Просто там обработка выгрузки ХМЛ в кассу и если она запустится на 2 машинах сразу будет в кассе белеберда.
#6 by KishMish
в обработке создавать этот файик каждые 5 секунд и записывать туда время изменения Удалять файлик через ОбработкаОжидания если прошло много времени
#7 by 3nt
вы как всегда даете супер советы))))
#8 by andrewks
Попытка/КонецПопытки отменили?
#9 by andrewks
+ и с файлом, мне кажется, не самая удачная идея. Константа получше будет
#10 by YHVVH
а смысл ?
#11 by KishMish
файл доступен для разных баз
#12 by andrewks
тут вроде про одну базу речь идёт, просто чтобы 2-3 юзера одновременно не запустили
#13 by Игорь Сергеевич
Тяжело в 8.2 на 7.7 перейти :(
#14 by Игорь Сергеевич
обработка может запускаться не только пользователем но и автоматом.
#15 by KishMish
дадада, ну а вдруг... )
#16 by KishMish
если варант работает, думаю это самое удачное решение
#17 by Игорь Сергеевич
Сделал что то типо такого.
#18 by Ёпрст
и что это ?
#19 by KishMish
думаешь так надо? "блокировать любой объект методом Блокировка" то есть берешь любой (но конкнретный) элемент справочника и блокируешь его
#20 by Табуретко
блокировка от самого себя :)
#21 by Игорь Сергеевич
у меня внешняя обработка. Как ее заблокировать?
#22 by Игорь Сергеевич
Все понял. Не дочитал щас попробую.
#23 by andrewks
ага, тока щас про разные базы втирал, а сам к склоняешься
#24 by Игорь Сергеевич
Я так понял мне взять любой элемент справочника. И заблокировать его а при открытии обарботки проверять его блокировку.
#25 by Игорь Сергеевич
а но какой период он заблокируется?
#26 by Игорь Сергеевич
если не трудно кинте пример блокировки чег нить. А то боюсь напортачу.
#27 by Ёпрст
не обязательно справочника, это может быть документ/константа.. пока сам не отпустишь(разблокируешь) методом блокировка или пока не закроешь свою обработку.
#28 by Игорь Сергеевич
что то синтоксису не нашел не чего. Это типо Блокировка(Справочники.Номенклатура.Реквизит)=1; так что ли?
#29 by YHVVH
не надо блокировать обработки, в чес суть блокировки не понятно.
#30 by Ёпрст
нет. Это метод СсылкаНаОбъектБД.Блокировка(<парам>)
#31 by YHVVH
зачем это нужно?
#32 by Ёпрст
^))
#33 by Ёпрст
читай , там всё написано. Это обычный семафор.
#34 by andrewks
лучче б ты молчал...
#35 by YHVVH
не проще сделать пользователя в базе который будет запусать только эту обработку сразу при старте
#36 by Ёпрст
вероятно, этим пользователем будут бухи, которых много. Смысл - не дать запускаться этой обработке одновременно разным пользователям. всё.
#37 by Игорь Сергеевич
она может запускаться автомаом.
#38 by YHVVH
не я понял , что одновременно разным пользователем можно ведь создать юзера назвать его отчет, и пжалуста пользуйся, не получится ведь зайти два разйти одним юзером отчетом. ну это все лирика, вариант коненчо ни много ни удобный, поэтому и спрашиваю а в чем сообсвтенно такого что отчет нельзя запускать одновременно.
#39 by Ёпрст
пишет выгрузку в 1 файло ..или еще что, это автора спроси.
#40 by YHVVH
вот и спрашиваю :-) уж на сколько у нас ситема дебильная и все переписанная и задачи разнообразные, но такой фишки не используем как то все обходилось.
#41 by Игорь Сергеевич
ме задачу поставили пытаюсь реализовать. Я бы такой что бы реализовать причину. Думаю легче было бы устранить краши системы.
#42 by Игорь Сергеевич
Помогите пожалусто с синтаксисом разобраться.
#43 by Игорь Сергеевич
не чего понять в 7.7 не могу.
#44 by BuHu
зачем все так сложно , у тебя ведь при открытии смотрит наличие файла и если его  нет то запускается выгрузка , так вот смотри не только на наличе файла но и на время последнего изменения , если он долго лежит - грохай его и запускай.
#45 by Игорь Сергеевич
обаработка запускается каждые 10 мин
#46 by Игорь Сергеевич
Я уже на счет этого думал.
#47 by BuHu
а сколько выгрузка длится в среднем?
#48 by Игорь Сергеевич
по разному.
#49 by Игорь Сергеевич
может 7-30 мин
#50 by Игорь Сергеевич
Так как правельно написать в посте ?
#51 by Ёпрст
#52 by Ёпрст
+51 КонецЕсли там вставь еще..
#53 by Ёпрст
+52 только блокировать лучше константу.
#54 by Ork
Фсе фигня. Не нужно оставлять файл, который уже обработывается, на всеобщее обоРзение. Перед началом обработки файл должен быть скопирован в место (доступное или назначенное) только для одного пользователя.
#55 by BuHu
а в случае аварийного завершения обработки , блокировка сама отвалиться?
#56 by Ork
+ Получите возможность _одновременно_ обрабатывать _разные_ файлы. При помощи блокировок чего-либо такой возможности не будет. Кроме того, если обработка может вестись с разных баз, тогда блокировка в одной базе никак не перенесетна на другую. В итоге настанет белый и пушистый.
#57 by Ork
Йес.
#58 by Ёпрст
да.
#59 by Ёпрст
+58 на этом принципе, можно получить список активных юзверей в базе штатным способом.
#60 by Игорь Сергеевич
Были еще идеи получить список используемых файлов из винды и поискать там эту обработку. Но как жто реализвать даже не представляю.
#61 by andrewks
это не идея тогда, а размышления у парадного подъезда.
#62 by orefkov
Создай сигнальный файл - дбф. При старте обработки пытайся открыть его методом XBase::ОткрытьФайл эксклюзивно. При закрытии обработки закрывай файл.
#63 by Игорь Сергеевич
Все отлично получилось с блокировкой объекта.
#64 by Игорь Сергеевич
Всем спасибо. Аварийное завершение потестил тоже работает.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С