|
Проверка работы управляемых блокировок | ☑ | ||
---|---|---|---|---|
0
Alex1979rak
14.11.11
✎
09:59
|
Платформа 8.2.14.540. Файловый режим работы.
Разрабатываю конфигурацию. Режим блокировок конфигурации - управляемый. Хочу проверить работу управляемых блокировок. Изучил информацию с ИТСа. Хочу заблокировать документ ПриходнаяНакладная. Сделал внешнюю обработку и по нажатию кнопки хочу заблокировать сам документ. А потом пытаюсь его открыть из самой базы. В модуле формы обработки делаю так: &НаКлиенте Процедура Команда1(Команда) ПроверкаБлокировки(); КонецПроцедуры &НаСервере Процедура ПроверкаБлокировки() НачатьТранзакцию(); Блокировка = Новый БлокировкаДанных; Элемент = Блокировка.Добавить("Документ.ПриходнаяНакладная"); Элемент.Режим = РежимБлокировкиДанных.Исключительный; Элемент.УстановитьЗначение("Ссылка", Документы.ПриходнаяНакладная.НайтиПоНомеру("000000001")); Блокировка.Заблокировать(); КонецПроцедуры И после выполнения нажатия на кнопку пытаюсь открыть документ. Он открывается. Вопрос: я что-то делаю не так? |
|||
1
ArtKzn
14.11.11
✎
10:05
|
Транзакцию начал, а фиксировать ето будет?
|
|||
2
Alex1979rak
14.11.11
✎
10:10
|
Хорошо. В конце процедуры поставил ЗафиксироватьТранзакцию(). Повторил запуск обработки. Результат тот же. Опять что-то не так?
|
|||
3
aleks-id
14.11.11
✎
10:12
|
Документы.ПриходнаяНакладная.НайтиПоНомеру("000000001") что возвращает?
|
|||
4
Alex1979rak
14.11.11
✎
10:15
|
(3) Возвращает ДокументСсылка.ПриходнаяНакладная. Как и просил.
|
|||
5
dimaldinho
14.11.11
✎
10:18
|
(0) >> И после выполнения нажатия на кнопку
там точку останова ставишь перед зафиксировать транзкцию? |
|||
6
Alex1979rak
14.11.11
✎
10:20
|
(5) Если я там поставлю точку останова, то как я смогу проверить читается документ после блокировки или нет?
|
|||
7
Grimnir
14.11.11
✎
10:20
|
Идет путаница двух механизмов: объектной и транзакционной блокировки.
Тебе нужно: Ссылка=Документы.ПриходнаяНакладная.НайтиПоНомеру("000000001"); Ссылка.ПолучитьОбъект.Заблокировать(); Тут управляемые блокировки в принципе не нужны. |
|||
8
aleks-id
14.11.11
✎
10:21
|
(4) я не о том.
ИсточникДанных (DataSource) Использование: Чтение и запись. Описание: Тип: РезультатЗапроса; Табличная часть; ТаблицаЗначений; набор записей. Источник данных, содержащий значения полей для установки условий на поля пространства блокировки. |
|||
9
aleks-id
14.11.11
✎
10:22
|
Пример:
Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах"); ЭлементБлокировки.УстановитьЗначение("Качество", Справочники.Качество.НайтиПоКоду("1")); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.ИсточникДанных = ДокументОбъект.ВозвратнаяТара; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Склад", "Склад"); Блокировка.Заблокировать(); |
|||
10
Alex1979rak
14.11.11
✎
10:30
|
(8) (9) Я кажется запутался совсем. По ИТСу сказано, что можно использовать метод УстановитьЗначение(), в котором указать имя поля и значение.
|
|||
11
aleks-id
14.11.11
✎
10:32
|
(10) Имя поля! вот ключевое слово. а ты ссылку на документ пихаешь
|
|||
12
Alex1979rak
14.11.11
✎
10:35
|
(11) УстановитьЗначение(<ПолеПространстваБлокировок>, <БлокируемоеЗначение>)
<ПолеПространстваБлокировок> (обязательный) Тип: Строка. Имя поля пространства блокировки. Поддерживаются следующие имена полей: Для пространства Документ.<имя> - Ссылка <БлокируемоеЗначение> (обязательный) Тип: Произвольный; Диапазон. Значение (диапазон значений) для поля пространства блокировки. Вот я из чего исходил. Ссылка - это параметр. |
|||
13
Alex1979rak
14.11.11
✎
10:43
|
пробую поднять
|
|||
14
0xFFFFFF
14.11.11
✎
10:46
|
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый) - нет?
|
|||
15
Господин ПЖ
14.11.11
✎
10:47
|
>Файловый режим работы.
дальше вообще есть смысл сношаться?? |
|||
16
ptiz
14.11.11
✎
10:50
|
"И после выполнения нажатия на кнопку пытаюсь открыть документ. Он открывается.
Вопрос: я что-то делаю не так?" А ты записать попробуй. |
|||
17
Alex1979rak
14.11.11
✎
10:50
|
(15) Изучаю сам механизм.
|
|||
18
Alex1979rak
14.11.11
✎
10:50
|
(16) пробовал. Работает.
|
|||
19
ptiz
14.11.11
✎
10:52
|
(18) Ставишь точку останова после Блокировка.Заблокировать();
И ДРУГИМ сеансом пробуешь что-то делать с этим документом. |
|||
20
Господин ПЖ
14.11.11
✎
10:52
|
(17) табличка из http://v8.1c.ru/overview/datalockcontrol.htm ни о чем не намекает?
|
|||
21
Reset
14.11.11
✎
10:57
|
(18)
//В одном сеансе Ссылка=Документы.ПриходнаяНакладная.НайтиПоНомеру("000000001"); Объект=Ссылка.ПолучитьОбъект(); Объект.Заблокировать(); Предупреждение("Пауза"); //В другом сеансе. Открываешь документ - откроется. Попытаешься записать - Не получится. Если необходимо, чтоб и не открылся (что бред, на мой взгляд), в ПередОткрытием пишешь: Попытка Заблокировать(); Исключение Отказ=Истина; КонецПопытки; Управляемые блокировки тут не при чем. |
|||
22
Alex1979rak
14.11.11
✎
11:03
|
Разобрался. Всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |