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

16.12.17

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
Перем НайдОбъект;

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

32330 руб.

29.06.2023    11438    34    15    

41

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5500 руб.

07.02.2023    12262    114    20    

70

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    6768    2    2    

6

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    911    1    8    

2

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    2843    8    0    

8

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

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

9150 руб.

02.08.2023    7708    25    5    

41

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

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    957    1    0    

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

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

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

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

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