Форум программистов, компьютерный форум, киберфорум
Maks
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Блокировка документа от изменений, если он открыт у другого пользователя

Запись от Maks размещена 08.04.2026 в 22:02
Показов 1757 Комментарии 6

Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Проверяем документ на предмет его использования в данный момент другим пользователем
// При необходимости, выводим соответствующее предупреждение, открыв документ только для чтения
&НаСервере
Процедура ПроверитьБлокировку()
    Попытка
        ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка,, ЭтаФорма.УникальныйИдентификатор);
    Исключение
        Ошибка = ОписаниеОшибки();
        ОбрезанаОшибка = Сред(Ошибка, Найти(Ошибка, "сеанс:")+6); 
        НомерСеанса = Число(Сред(ОбрезанаОшибка, 0 , Найти(ОбрезанаОшибка,", начат:")-1));
        УстановитьПривилегированныйРежим(Истина);
        АктивныеСеансы = ПолучитьСеансыИнформационнойБазы();
        УстановитьПривилегированныйРежим(Ложь);
        ИмяПользователяЗаблокировавшегоДок = "";
        Для Каждого Элемент Из АктивныеСеансы Цикл
            Если Элемент.НомерСеанса = НомерСеанса Тогда
                ИмяПользователяЗаблокировавшегоДок = Элемент.Пользователь.ПолноеИмя;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Сообщить("Документ открыт в режиме просмотра, поскольку редактируется пользователем: " + ИмяПользователяЗаблокировавшегоДок); 
        ЭтаФорма.ТолькоПросмотр = Истина;
    КонецПопытки;
КонецПроцедуры
 
// Вызываем процедуру при открытии документа
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПроверитьБлокировку();
КонецПроцедуры
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для Hrethgir
    И всё? А если разрешить изменения с сохранением в другой файл, если после открытия самим, оригинал был изменён другим пользователем до сохранения открытого у себя? Так нельзя?

    Открыл файл - время GMT на момент открытия такое.
    Жму сохранить, сначала проверяю - изменён файл другим пользователем после моего открытия или нет. Если не изменён - изменяю оригинал, если изменён - сохраняю свою версию отдельно (время фиксируется автоматически в свойствах файла). А то получается - работал работал с файлом, а тут его ещё кто-то открыл (ты ведь смог), и всё : жди пока закроет -1, сведи его усилия к редактированию к нулю - 2, так как вряд ли вы сможете договориться с такой координацией о том, кто должен из вас зкрыть файл без сохранения
    Запись от Hrethgir размещена 08.04.2026 в 22:29 Hrethgir вне форума
    Обновил(-а) Hrethgir 08.04.2026 в 23:02
  2. Старый комментарий
    Аватар для Maks
    Цитата Сообщение от Hrethgir
    И всё? А если разрешить изменения с сохранением в другой файл, если после открытия самим, оригинал был изменён другим пользователем до сохранения открытого у себя? Так нельзя?
    С файлами наверное можно, только в данной записи речь про документы в 1С, здесь несколько иная логика (отличная от файловой).
    В данном случае приоритет за тем, кто первый открыл документ, ибо нет условия на модификацию, к тому же второй пользователь увидит, кто на данный момент открыл док.
    Задачи на клонирование документов, в случае редактирования такового двумя и более пользователями, поставлено не было (да и если честно в большинстве случаем это бессмысленно).
    Запись от Maks размещена 09.04.2026 в 17:50 Maks вне форума
    Обновил(-а) Maks 09.04.2026 в 18:11
  3. Старый комментарий
    Аватар для Hrethgir
    Ясно спасибо. А то я честно говоря не понял что за чем.
    да и если честно в большинстве случаем это бессмысленно
    как сказать - как сказать. Если для коллективной работы над файлами - вовсе не бессмысленно, бот может потом сравнить файлы и объеденить изменения (внести необходимые правила и поправки для совмещения изменений, избавляя людей от рутины совмещения (компоновки) изменений. Каждый шаг имеет цену - сделать один шаг или три, совсем не одно и то же.
    Запись от Hrethgir размещена 09.04.2026 в 21:19 Hrethgir вне форума
    Обновил(-а) Hrethgir 09.04.2026 в 21:22
  4. Старый комментарий
    Аватар для Maks
    Цитата Сообщение от Hrethgir
    как сказать - как сказать. Если для коллективной работы над файлами - вовсе не бессмысленно
    С файлами - да, но в 1С такой ход может привести к нежелательным последствиям. Например, при создании клона документа пользователь забудет удалить значения определенных реквизитов, что в свою очередь приведет к нежелательным записям в регистры сведений и/или регистры накоплений, в результате чего аналитика будет недостоверной. Кстати, на многих своих проектах приходилось прибегать к очистке реквизитов при копировании документов, чтобы избежать подобных последствий. Ведь зачастую проще предотвратить, чем разгребать постфактум.
    Запись от Maks размещена 09.04.2026 в 22:42 Maks вне форума
  5. Старый комментарий
    Аватар для Hrethgir
    при создании клона документа
    ну если создание клона критично - то и оригинал ценности не имеет. И это так в действительности. Создание клона - это конец света что-ли? Ну создали клон, и дальше что? Что случилось?
    Запись от Hrethgir размещена 10.04.2026 в 21:50 Hrethgir вне форума
    Обновил(-а) Hrethgir 10.04.2026 в 21:52
  6. Старый комментарий
    Аватар для Maks
    Цитата Сообщение от Hrethgir
    ну если создание клона критично - то и оригинал ценности не имеет. И это так в действительности. Создание клона - это конец света что-ли? Ну создали клон, и дальше что? Что случилось?
    Мы говорим с Вами о разных вещах: Вы про файловые документы, а я про документы в 1С - именно этому и посвящена данная запись в моём блоге. Если Вы не понимаете, для чего нужны документы в 1С и логику их участия в производственном учёте, то мне нечего Вам сказать, поскольку Вы некомпетентны в данном вопросе.
    Про последствия клонирования документов в 1С я Вам ответил выше - это особенно критично при работе со складскими операциями, когда участвует количественный учёт той же номенклатуры, также это критично при оперативном учёте в торговле, критично при выписке путевых листов на автотранспорт из-за учёта пробега и потраченного топлива, да много где это критично, но поскольку Вы этого не понимаете, то не вижу смысла более говорить об этом.
    Касательно выложенной в данной записи доработки, который реализовано мною на реальном проекте, это прерогатива Заказчика и если он попросил об этом, значит, возникла определенная необходимость, которая отличается от Вашей логики.
    Запись от Maks размещена 10.04.2026 в 22:25 Maks вне форума
    Обновил(-а) Maks 10.04.2026 в 23:44
 
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru