Имя: Пароль:
1C
 
Как заблокировать константу от чтения?
0 RomaH
 
naïve
10.03.16
12:26
Есть процесс - получает константу и увеличивает её на 1
как запретить другим процессам читать эту константу в этот промежуток времени?
1 Cyberhawk
 
10.03.16
12:27
У, остальные константы тоже придется блокировать
2 франц
 
10.03.16
12:27
семафор какой клепаешь чтоли?
3 NcSteel
 
10.03.16
12:28
блокируй.
4 RomaH
 
naïve
10.03.16
12:29
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
    
    Блокировка = Новый БлокировкаДанных;
    КБ = Блокировка.Добавить("Константа.ИспользоватьЗаметки");
    КБ.Режим = РежимБлокировкиДанных.Исключительный;
    
    Блокировка.Заблокировать();
    
    ИспользоватьЗаметки = Константы.ИспользоватьЗаметки.Получить();
    
    Сообщить(ИспользоватьЗаметки);
    
    ЗафиксироватьТранзакцию();

без проблем читабю паралельно
5 Господин ПЖ
 
10.03.16
12:30
>У, остальные константы тоже придется блокировать

с какой-то версии константы сидят по отдельным таблицам...
6 Cyberhawk
 
10.03.16
12:32
(5) Збс, не знал, для файловой самое оно
7 RomaH
 
naïve
10.03.16
12:33
(5) так от чтения есть возможность заблокировать константу?
8 Живой Ископаемый
 
10.03.16
12:34
2(5) Не в таблицах, а в записях... раньше были в одной таблице, в одной записи, тока в разных полях.
9 RomaH
 
naïve
10.03.16
12:34
о, заработало
10 Cyberhawk
 
10.03.16
12:35
(8) А, ну тогда на файловой легче не стало
11 Господин ПЖ
 
10.03.16
12:37
(8) не кури больше... с 8.2.14 таблицы разные... ибо сваливать опять все в одну - это бред
12 RomaH
 
naïve
10.03.16
12:53
только получилось немного не то - не дает блокировку вторую установить

а вот как прочитать не дать, как это в справке написано.

Описание:

Предназначен для явной блокировки данных от чтения или изменения другими сессиями.
13 floody
 
10.03.16
20:31
(8) проверьте это утверждение, удивитесь
14 floody
 
10.03.16
20:33
(12) ну и в чем проблема? Перед чтением тоже устанавливай блокировку.
15 Necessitudo
 
10.03.16
20:44
Так у тебя 8.3 без режима совместимости и управляемый режим блокировок?
16 Азазелло
 
10.03.16
20:46
Может, банальность, но код в (0) случаем не из вышестоящей или неявной транзакции вызывается, начатой в автоматическом режиме блокировки?
17 Garykom
 
гуру
10.03.16
20:52
Если для решения задачи не хватает одной константы, то всегда можно решить задачу взяв ДВЕ константы.

Одна из которых будет семафором для возможности изменения другой.
Закон Брукера: Даже маленькая практика стоит большой теории.