Как запретить одновременное открытие отдельных внешних обработок? #810350


#0 by МимохожийОднако
КА 1.1. Есть несколько внешних обработок. Примерно 15 пользователей. Потребовалось запретить одновременное открытие и запуск некоторых из них. Например, Петров открыл, а Сидоров при открытии получает сообщение (предупреждение) "Эта обработка открыта Петровым? С него и спрашивай". Идеи есть?
#1 by Гипервизор
Писать куда-нибудь по факту открытия и закрытия обработки. В регистр, в ЖР, в спортлото.
#2 by Dotoshin
Ну заведи регистр и в него пиши при открытии обработки, кто открыл. А перед записью проверяй открыл кто-то или нет, ну а при выходе удаляй запись о входе или делай запись о выходе.
#3 by бомболюк
лучше заведи справочник, и при открытии блокируй элемент справочника методом Заблокировать - если проканало, значит путь свободен. Из плюсов, что блокировка снимается в случае нештатного выхода, а всякие записи в регистры естественно не удаляются сами собой.
#4 by Aleksey
так внешние обработк и так справочник. Зачем ещё один?
#5 by бомболюк
ну собственно да, можно его самого для этого использовать
#6 by бомболюк
только определить элемент для блокировки придется из тела самой обработки, а вот это по моему затруднительно.
#7 by 1Сергей
ещё до сохранения-открытия проверять
#8 by МимохожийОднако
Особенность справочника ВнешниеОбработки в том, что при выборе из списка создаётся временный файл и из него открывается обработка. Хотелось бы использовать код обработки, которая лежит в реквизите ХранилищеВнешнейОбработки. Пока выбираю из трёх вариантов: 2. Глобальная переменная 3. Поместить код блокировки в форму вызываемой обработки. Первые 2 понятны.
#9 by 1Сергей
посоветовали же. Блокируй эл-т справочника Внешние обработки
#10 by бомболюк
а глобальная переменная то тут каким боком?
#11 by МимохожийОднако
В форму внешней обработки, которую подключаю в справочник Внешние обработки, добавил следующий код: ..
#12 by МимохожийОднако
Вроде работает. Надо только отслеживать, чтобы не было одинаковых наименований для разных обработок в справочнике.
#13 by 1Сергей
Это что за фигня?
#14 by 1Сергей
а... понял
#15 by бомболюк
Из фрагмента не видно, но НайдОбъект надо "держать", сделай его переменной модуля формы.
#16 by бомболюк
а ваще то да, ты его уже сделал, звиняй
#17 by МимохожийОднако
При подключении новой обработки в справочник представление обработки подкидывается в наименование элемента.
#18 by МимохожийОднако
Забыл добавить что добавил переменную формы НайдОбъект
#19 by 1Сергей
Наименование же не всегда равно Представлению обработки
#20 by МимохожийОднако
Конечно. Но в первом приближении подходит. Другого способа поиска элемента справочника Внешние обработки я пока не придумал.
#21 by Ёпрст
разблокировать лишне в коде, блокировка сама отвалится при закрытии
#22 by Mort
А зачем?
#23 by МимохожийОднако
У Заказчика есть обработка, которая скачивай по команде пользователя заказы. При одновременном открытии и запуске иногда дублируются заказы. Случается не часто, но их напрягает.
#24 by МимохожийОднако
*скачивает
#25 by Mort
Имхо блокировка тут должна быть пониже уровня. Например курить в сторону управляемых блокировок и свойства документа "Поля блокировки данных".
#26 by Mort
ЭлементБлокировкиДанных (DataLockItem) УстановитьЗначение (SetValue)  + вот это в СП
#27 by МимохожийОднако
У меня стояла задача, не меняя конфигурацию заблокировать повторное открытие обработки из справочника Внешние обработки. И всё. Если есть пример, как это сделать по-другому - подскажи кодом.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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