Монопольное открытие формы обработки 1с77

24.05.23

База данных - Инструменты администратора БД

Блокировка открытия формы обработки одним пользователем.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Монопольное открытие формы обработки 1с77:
.zip 1,30Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.
// ********************************************************************
Функция ПользовательАктивен(СпрБлокировки)  
    //если файл отсутствует или его можно удалить, то значит пользователя нет в базе
    //если же рользователь в базе, то эти строки просто не срабатывают
    //и мы получаем ответ о активности пользователя  
    имяФайла = СокрЛП(СпрБлокировки.КаталогПользователя) + "1Cv7.LCK";
    фс.УдалитьФайл(имяФайла); 
    Возврат фс.СуществуетФайл(имяФайла); 
		
КонецФункции	

// ********************************************************************
Функция ЗаблокироватьДляДругихПользователей()
	                    
	мИд = Форма.Параметр.Получить("Идентификатор");
	
	Если ПустоеЗначение(мИд) = 1 Тогда
		Возврат 1;
	КонецЕсли;	
	
	СпрБлокировки = СоздатьОбъект("Справочник.Блокировки");
	Если СпрБлокировки.НайтиПоНаименованию(мИд) = 1 Тогда 
		
		Если СокрЛП(СпрБлокировки.Пользователь) = СокрЛП(ИмяПользователя()) Тогда  
			Возврат 1; 

		ИначеЕсли ПользовательАктивен(СпрБлокировки.ТекущийЭлемент()) = 0 Тогда
			Возврат 1;

		Иначе
			Предупреждение("Карточка заблокирована пользователем " + СпрБлокировки.Пользователь); 
			Возврат 0;
		КонецЕсли;	
	КонецЕсли;	
	
	СпрБлокировки.Новый();
	СпрБлокировки.Код          = мИд;  
	СпрБлокировки.Наименование = мИд; 
	СпрБлокировки.Пациент      = "" + Форма.Параметр.Получить("ФИОПациента") + " " + Форма.Параметр.Получить("АмбКарта");
	СпрБлокировки.КаталогПользователя = КаталогПользователя();
	СпрБлокировки.Пользователь = ИмяПользователя();
	
	Попытка 
	   СпрБлокировки.Записать(); 
	   Возврат 1;
	Исключение    
		Предупреждение("Карточка заблокирована");
		//форма.инфоБлокировки.Заголовок("Только просмотр");
		Возврат 0;		
	КонецПопытки;   
    
	Возврат 1;
	
КонецФункции
//********************************************************************
Процедура РазблокироватьДляДругихПользователей()  
	
	мИд = Форма.Параметр.Получить("Идентификатор");
	СпрБлокировки = СоздатьОбъект("Справочник.Блокировки");
	Если СпрБлокировки.НайтиПоНаименованию(мИд) = 1 Тогда  
		СпрБлокировки.Удалить(1);
	КонецЕсли;	
	
КонецПроцедуры
//**********************************************
Процедура ПриОткрытии() 
	
    Если ЗаблокироватьДляДругихПользователей() = 0 Тогда 
		СтатусВозврата(0);
		Форма.Закрыть();
    КонецЕсли;

КонецПроцедуры
//**********************************************
Процедура ПриЗакрытии()                    
	
	РазблокироватьДляДругихПользователей();

КонецПроцедуры

Форма элемента справочника или документа в 1с77 может быть открыта только одним пользователем, но форма отчета или обработки не имеет таких ограничений, и одновременно пользоваться одной обработкой могут несколько пользователей.

В нашем случае возникла задача ограничить это дело программно, поскольку через форму редактировались строки документа и периодически происходил конфликт правок разными пользователями. Я решил выложить материал в статью, поскольку не нашел в инете готовых решений,

Также вы можете в цикле поверить доступы к файлам "1Cv7.LCK" в каталоге пользователей 1с77 и таким образом получить список активных пользователей в базе 1с77.

Предлагаю следующее решение. 

1. В документ Запись на прием была добавлена колонка Уникальный идентификатор, которая заполнялась автоматически при добавлении строки в документ

2. Был создан справочник "Блокировки" с реквизитами "Пользователь", "Идентификатор", "КаталогПользователя" в который при открытии формы обработки в процедурах "ПриОткрытии()" и "При Закрытии()"  соответственно добавляются и удаляются элементы.

3.  Также присутствует проверка доступа к файлу "1Cv7.LCK" в каталоге пользователя 1с.

Таким образом можно контролировать совместный доступ и даже проверять, у какого пользователя открыт данный объект.

Привожу в статье весь основной код. В прилагаемом файле к скачиванию находится он же.

Я буду расценивать его скачивание как донат. Всем благ и удачного кодинга. Спасибо.

Монопольное открытие формы обработки 1с77 просмотр активных пользователей 1с 77 програмно

См. также

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простецкий скрипт переименования файлов в папке в нижний регистр, будет полезен программистам и системным администраторам имеющим навыки програмирования в 1С. Можно легко настроить под себя, спасает мне периодически час времени, может, кому еще будет полезен.

1 стартмани

18.02.2022    4099    0    igor7777    6    

2

Инструменты администратора БД Программист Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Боремся с бардаком. Работы в прошлых датах запрещены. Непроведенные документы (по разным причинам) - автоматом переносятся в начало текущего дня при запуске любого первого сеанса 1С в текущем дне. Задержка старта 1С - практически незначима. Не требует настройки, не требует допрограммирования (исключая один оператор вставки в процедуру старта системы). Можно обработку выполнять вручную с любой периодичностью.

2 стартмани

25.05.2020    5917    2    CheBurator    3    

2

Журнал регистрации Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.

22.01.2019    11670    phsin    20    

28

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Скрипт позволяет выполнить объединение конфигураций и реструктуризацию из командной строки. Объединение выполняется штатными средствами конфигуратора 1С 7.7, взаимодействие с которым происходит путем посылки нажатий клавиш. Пригодится, если есть необходимость обновить или постоянно обновлять множество ИБ.

1 стартмани

22.04.2017    15911    4    devlabnn    2    

6

Инструменты администратора БД Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Украина Бухгалтерский учет Абонемент ($m)

Перепроведение по счету для конфигурации Бухгалтерский учет для Украины, 1С: Предприятие 7.7

1 стартмани

23.09.2016    3874    1    Genyak    1    

0

Инструменты администратора БД Системный администратор Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Периодически сталкивался со следующими проблемами при печати в 1С: 7.7 работающей под терминалом: 1) После замены принтера на клиентской машине 1С пытается печатать на старый принтер. 2) Отсутствует предварительный просмотр при печати. 3) Не работает печать без предварительного просмотра (пакетная печать документов). 4) В некоторых формах печатает, в некоторых нет.

1 стартмани

09.06.2016    28298    19    tux    3    

1

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Часто бывает необходимо отслеживать состояние часто повторяющихся регламентных заданий. Например, синхронизация данных с IP-телефонией, которая может производиться каждую минуту, синхронизация с сайтами, синхронизация данных с различными системами. Использовать для этих целей логирование 1С чрезвычайно неэффективно и не удобно. В таких случаях удобно использовать подход, применяемый в Unix-системах: писать логи в обычные текстовые файлы, а потом делать их обработку через эффективно работающие Unix-команды: grep, tail, cat, less и т.п.

18.05.2016    37679    rudjuk    21    

34

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Абонемент ($m)

Небольшая заметка о том, что необходимо сделать при ошибках запуска 1С v7 в режиме OLE-сервера. Рассмотрено, что, куда и когда пишет 1С в реестр.

1 стартмани

20.04.2016    23946    85    VGHOST    3    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. igor7777 14 20.12.23 10:43 Сейчас в теме
Это очень крутая штука,
используется в Аналит 77.
предотвращает коллизию записи на прием
когда 2 сотрудника одновременно
пытаются сделать запись на прием в одну и туже ячейку расписания
Оставьте свое сообщение