Запрет одновременного открытия отдельного экземпляра обработки из справочника Внешние обработки в КА 1.1, БП 2.0, УТ 10.3

16.12.17

Задачи пользователя - Адаптация типовых решений

Заказчику понадобилось запретить повторное открытие обработки из справочника Внешние обработки. При этом нельзя было вносить изменения в конфигурацию. Полагаю, этот примерчик пригодится для подобных случаев. Испытано на конфигурации КА1.1(1.1.92.3) и УТ10.3(10.3.45.3)

Скачать исходный код

Наименование Файл Версия Размер
Запрет одновременного открытия обработки из справочника Внешние обработки в КА1.1, БП2.0, УТ10.3:
.epf 6,04Kb
0
.epf 6,04Kb Скачать
Перем НайдОбъект;

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Спр=Справочники.ВнешниеОбработки.НайтиПоНаименованию(ЭтотОбъект.Метаданные().Представление());
    НайдОбъект=Спр.ПолучитьОбъект();
    Попытка
        НайдОбъект.Заблокировать();
    Исключение
        Предупреждение("Обработка "+НайдОбъект+"уже открыта ранее");// + "!"+ ОписаниеОшибки());
        Отказ=Истина;
    КонецПопытки;
КонецПроцедуры

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    Попытка
        НайдОбъект.Разблокировать();
    Исключение
        //Предупреждение("Не удалось разблокировать объект "
        //+НайдОбъект + "!"+ ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Этот код добавил в форму открытия подключаемой обработки, которую можно открыть только один раз в базе.

В моём случае данный алгоритм пригодился в ситуации, когда два менеджера, отвечающие за интерактивное скачивание заказов с сайта с предварительным просмотром данных в табличной части, создавали дубли документов, забывая закрывать свёрнутые формы. Не часто бывало, но создавало неприятности.

Обработка отчет форма

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4633    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3052    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1673    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    2103    19    avmartynov    14    

44

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2218    24    progmaster    7    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MiniMuk 10 18.12.17 06:45 Сейчас в теме
Чем мешали дубли? Если сеанс подвиснет что дальше делать? Можно ли проверять дату последнего документа и сравнивать с текущей датой если у последнего документа текущий день выдавать предупреждение?
+
2. МимохожийОднако 141 18.12.17 10:21 Сейчас в теме
Предложенный алгоритм касается только внешних обработок, помещенных в справочник Внешние обработки. Документов он не касается. В моём случае, который я привёл для примера, дубли Заказов покупателей создавались обработкой по формированию документов. Поэтому и возникла необходимость одновременного открытия подобных обработок. Про подвисший сеанс я не понял.
+
3. dandykry 9 19.12.17 15:35 Сейчас в теме
(2) Если сеанс, который открыл обработку зависнет, то никто не сможет пользоваться обработкой, т.к. она заблокирована, до перезагрузки сервера или выхода всех из файловой базы.
+
5. МимохожийОднако 141 19.12.17 17:10 Сейчас в теме
(3) Возможно, не проверял.
+
7. V.Nikonov 120 20.12.17 19:40 Сейчас в теме
(3) Обработка блокируется до завершения сеанса, который заблокировал...
Или я ошибаюсь?
+
10. МимохожийОднако 141 21.12.17 06:11 Сейчас в теме
(7) Когда обработка завершается, блокировка с соответствующего элемента справочника Внешние обработки снимается.
У моих клиентов этот вариант работает. Пока жалоб не было. Если будет что-то не так - отпишусь.
+
11. V.Nikonov 120 21.12.17 13:38 Сейчас в теме
(10) Тестирование случаев, когда обработка прерывалась по Ошибке было?
Для некоторых обработок может зависнуть объект обработки... тогда придется рубить Родительский сеанс.
+
12. МимохожийОднако 141 21.12.17 17:05 Сейчас в теме
(11) Отдельного тестирования на зависания и ошибки не делал.Но в самих обработках, где использован предложенный код, сделано всё, чтобы обработка не зависала. Пока по этому поводу вопросов от Заказчика не было. Для справки: у них клиент-серверный вариант и есть возможность использовать консоль администрирования.
+
13. V.Nikonov 120 22.12.17 15:39 Сейчас в теме
(12) Я это как дополнительная инструкция для тех кто воспользуется идеей...
Теоретически рассматривал вариант Файла-Флага, в котором проставлялся бы признак Дата-Время последнего запуска. Соответственно, если запускали недавно (обработка могла не закончить работу), то предлагал пользователю отказаться от Запуска.
+
14. МимохожийОднако 141 22.12.17 20:57 Сейчас в теме
(13) Первые идеи по этому поводу у меня были таковы: Регистр сведений с измерением Обработка, флаг в справочнике...Пока хватило того, что выложил на обозрение. Если будут ошибки - буду рассматривать и другие варианты.
+
4. dandykry 9 19.12.17 15:41 Сейчас в теме
Для проверки блокировки можно использовать метод Заблокирован()
Если НайдОбъект.Заблокирован() Тогда
Предупреждение(""Обработка "+НайдОбъект.Представление+"уже открыта ранее"");
Отказ=Истина;
Иначе
НайдОбъект.Заблокировать();
Конец;

И лучше блокировку накладывать после открытия т.к. есть еще событие ПриОткрытии в котором может произойти Отказ = Истина;
+
6. МимохожийОднако 141 19.12.17 17:10 Сейчас в теме
8. V.Nikonov 120 20.12.17 19:42 Сейчас в теме
Некоторые обработки загрузки/выгрузки приводят к Взаимоблокировкам и/или к созданию дубликатов объектов!
+
9. МимохожийОднако 141 21.12.17 06:09 Сейчас в теме
(8) Не кричи.))
Всяко бывает. Достаточно завершить сеанс.
+
15. fomix 33 24.12.17 07:46 Сейчас в теме
Я так понимаю для УФ такой метод не прокатит?
+
16. МимохожийОднако 141 24.12.17 13:30 Сейчас в теме
Из СП:
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
..
на УФ у меня такой задачи не было.
+
17. irvin12345 93 08.12.20 17:54 Сейчас в теме
Для управляемых форм

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Спр=Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Имя обработки");
	Попытка
		ЗаблокироватьДанныеДляРедактирования(Спр,,ЭтаФорма.УникальныйИдентификатор);
	Исключение
	    Сообщить("Обработка "+Спр+" открыта у другого пользователя");// + "!"+ ОписаниеОшибки());
	    Отказ=Истина;
	КонецПопытки;
КонецПроцедуры

&НаСервере
Процедура ПриЗакрытииНаСервере()
	Спр=Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Имя обработки");
	РазблокироватьДанныеДляРедактирования(Спр,ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	ПриЗакрытииНаСервере();
КонецПроцедуры
Показать
+
18. irvin12345 93 17.12.20 09:29 Сейчас в теме
(17)
upd: Сразу не заметил, но "РазблокироватьДанныеДляРедактирования" - не работает для объектов ссылочного типа, в примере выше снятие блокировки делается платформой через 5-10 сек после закрытия связанной формы.
В итоге пришлось оборачивать команды в функцию, в которой:
1. спрОбъект.Заблокировать //через попытку исключение, тк у других пользователей спрОбъект.Заблокирован всегда ложь и только при попытке повторной блокировки выдается ошибка.
2. Вызов самой команды
3. спрОбъект.Разблокировать
+
Оставьте свое сообщение