Имя: Пароль:
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
Если для решения задачи не хватает одной константы, то всегда можно решить задачу взяв ДВЕ константы.

Одна из которых будет семафором для возможности изменения другой.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший