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

24.05.23

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

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

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

Наименование Файл Версия Размер
Монопольное открытие формы обработки 1с77:
.zip 1,30Kb
0
.zip 1,30Kb Скачать
// ********************************************************************
Функция ПользовательАктивен(СпрБлокировки)  
    //если файл отсутствует или его можно удалить, то значит пользователя нет в базе
    //если же рользователь в базе, то эти строки просто не срабатывают
    //и мы получаем ответ о активности пользователя  
    имяФайла = СокрЛП(СпрБлокировки.КаталогПользователя) + "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С 7.7

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

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

1 стартмани

18.02.2022    3794    0    igor7777    6    

2

[7.7 ТиС. СТОП-БАРДАК] Автоперенос непроведенных документов на текущий день

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

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

2 стартмани

25.05.2020    5701    2    CheBurator    3    

2

Анализ 1С: Предприятие 7.7 с помощью ELK стека

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

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

22.01.2019    11165    phsin    20    

28

Автоматическое объединение конфигураций 1С 7.7

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

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

1 стартмани

22.04.2017    15685    4    devlabnn    2    

6

Перепроведение по счету

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

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

1 стартмани

23.09.2016    3754    1    Genyak    1    

0

Решение проблем с печатью, предварительным просмотром печати, пакетной печатью 1С: 7.7 в терминале

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

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

1 стартмани

09.06.2016    27230    18    tux    3    

1

Логирование в 1С

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

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

18.05.2016    35186    rudjuk    21    

33

Особенности регистрации 1С:Предприятия v7 в качестве сервера OLE

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

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

1 стартмани

20.04.2016    23490    80    VGHOST    3    

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