#0
by napagokc
Тут такая штука... Моя обработка требует монопольного режима и т.к. обработка долгая, я использую эту ОбработкуПрерыванияПользователя. Но дело в том, что монопольного режима я добиваюсь программно, если изначально режим был не монопольный. И вот я бы хотел возвращать исходный режим, если пользователь прервал работу программы. То есть, если изначально режим был не монопольный, то, при прерывании работы обработки пользователем, нужно восстановить немонопольный режим. Можно ли это сделать? И если можно, то как?
#1
by Kom-off
Лично я - не знаю как такое можно организовать. Однако, можно переписать обработку чтобы работала "Не более часов ... минут ...". Это может спасти?
#3
by Stepa86
Перед циклом подруби обработчиком ожидания нужный метод на через 0.1 секунды, а после цикла отключай. Если будет выход из цикла, то отработает метод по обработчику ожидания. Проверено.
#6
by Дарт Вейдер
попробуй так: в обработке 2 формы, стартует 1-я, устанавливает монопольный режим, далее из первой монопольно вызавается основная форма с "долгой" процедурой обработки далее по закрытии возврат в 1-ю установка немонопольного режима
#7
by napagokc
а при помощи транзакций что-нить подобное намутить не получится? Обработка прерывания куда выкинет?
#10
by napagokc
Натянут за уши. Но я его не отвергаю пока. Просто пытаюсь найти что-нибудь поизящнее
#11
by Kom-off
, Ничего там не будет возвращаться и срабатывать. ОбработкаПрерыванияПользователя - Предназначен для прерывания работы встроенного языка при нажатии пользователем клавиши Ctrl+Break. При неустраивающем - будет работать.
#14
by napagokc
как вам такой вариант: Как думаете - это сильно все затормозит? И вообще, правильно ли я рассуждаю?
#16
by Jstunner
Пожалуй, самый-самый бухой и обкуренный дизайнер платформы разработал механизм ОбработкаПрерыванияПользователя для восьмерки. Рискну утверждать, что это даже хуже Неопределено..
#17
by napagokc
так ведь так и получается: Сначала делаю режим не монопольным, а потом ОбработкаПрерыванияПользователя отлавливает было ли нажато Ctrl+Break. Если были - монопольный режим не поставится, т.к. работа кода прервется. Не?
#18
by Kom-off
Ну, для особых случаев! Создать батник с запуском двух обработок из командной строки. Первая будет рабочей, вторая завершающей. Ну, это не притянуто за уши, однозначно. :-)
#22
by Дарт Вейдер
я может не догоняю чего-то.. если прерывание в цикле, то почему нельзя сделать так: ?
#23
by napagokc
а что такое? Думаешь изменение режима - крайне долгая операция? Я не уверен... Мне кажется - это просто переключение константы, грубо говоря... установка другого флага, не более
#24
by Kom-off
, ...прерывания работы встроенного языка... Ну, нечему там отрабатывать после нажатия будет!
#25
by napagokc
А ОбработкаПрерыванияПользователя выйдет на строку после цикла или вообще прервет выполнение кода? Есть мнение, что вообще прервет выполнение и тогда предложенный вариант не подходит
#26
by Aprobator
дык будет прерывание работы внутреннего языка 1С, а не цикла. Вот если запускать одну обработку из другой, то надо смотреть.
#30
by napagokc
случайно отправил сообщение... на строчке, где нажали Ctrl+Break выполнение кода не прервется. Оно прервется, когда войдет в ОбработкаПрерыванияПользователя и отловит там нажатие. Разве не так?
#41
by napagokc
не, я может не вкурсе, я относительный новичок в 1С... Но разве можно физически удалять объекты, когда в базе кто-то еще работает? Это разве не чревато какими-то последствиями? Что если кто-то работает сейчас с тем объектом, который я удаляю? О_о
#44
by napagokc
мне не нужно, чтобы мне нельзя было удалять объект. Мне НУЖНО УДАЛИТЬ объект. Есть разница.
#45
by fisher
А мне очень понравилось. Просто, изящно и универсально - выходит из монопольного режима при завершении обработки (любым способом).
#46
by Aprobator
+ контроль ссылочной целостности тоже никто не отменял. Хотя здесь явно неверный методологический подход к решению проблемы.
#47
by napagokc
написал простенькую обработку, чтобы проверить мою теорию: Исключение Текст = "С информационной базой работают другие пользователи. Все работает прекрасно. Результат работы (запустил дважды, чтобы убедиться): НАЧАЛО РАБОТЫ Монопольный режим = ложь Монопольный режим = истина Выполнение прервано пользователем! Монопольный режим = истина Выполнение прервано пользователем!
#50
by Stepa86
толку то на файловой мерять? думаю циклическая установка/снятие монопольного режима встанет колом тока в клиент-сервере
#51
by Aprobator
увеличение времени выполнения произойдет в любом случае. Не вижу смысла отлова события прерывания как такого. Тупо повесить снятие монопольного режима на событие закрытия формы обработки (1 минута кода) и все. Остальное - баловство.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Не выгружается из памяти Excel после работы через OLE
- 1С не закрывается после работы в пакетном режиме через шедулер
- выполнить действия кнопки командной панели формы
- Не сохраняется после в .mht в Explorer после установки винды.
- ЗУП: Почему вид расчета может не вытеснять другой по периоду действия?
- v7: Выполнить действия над документом после закрытия его формы
- ОбработкаПрерыванияПользователя. Действия после.
- Пропадает список баз после синего экрана, после перезагрузки возвращается
В этой группе 1С
- ЗУП Доначисление зарплаты за прошлый месяц
- MO Outlook 2007 не отправляет почту.
- ЗУП 31: Больничный оплачивает 2 дня вместо 3
- Сальдо в ЗУП
- ЗУП8 подразделения организации
- ЗУП: Ругалась ли система при наложении б/л и отпуска?
- Пакетный режим 1С8.2
- 1cv8.exe, загрузка ядра процессора.
- Терминал сбора данных DL-Memor
- Мобильное приложение
- Конвертация данных. ПКО для составных типов.
- Перенос данных из 7.7 в КА 8.2
- Комплексная автоматизация и суммовой учёт в НТТ
- Вопрос по КД2. Перенос не только основного договора контрагента, а весь список
- Как определить активность пользователя
- вопросы и ответы Профессионал УТ 11
- v8: УПП Больничный лист по ставке 0.5
- Формат. Дата в виде ДДММГГ
- Закрытие 20 счета УПП без выпуска
- Бюджетные классификаторы????