|
механизм блокировок | ☑ | ||
---|---|---|---|---|
0
vip67
04.08.15
✎
10:40
|
Всем привет! УПП длЯ Украины, 1-3-30-1.
Необходимо перевести табель учета рабочего времени в режим управляемых блокировок (т.к. подразделений много (50), сотрудников в одном подразделении может быть 100-800), в итоге - пока один не запишет табель, другой не может его записать - вываливается ошибка) установил на конфигурацию режим блокировок автоматический и управляемый, на табель и регистр сведений "ГрафикиРаботыПоВидамВремени" управляемый, код приписал, в итоге при сохранении табеля ошибка: "ошибка менеджера блокировок. Автоматическая блокировка не может использоваться в данной транзакции". причем в отладчике в пошаговом режиме ошибка возникает уже после прохождения всех процедур записи ("конецпроцедуру" - жму "шаг" - ошибка). установил управляемый режим для справочников и регистров, на которые есть ссылки в табеле - не помогло. Как определить причину? |
|||
1
Славен
04.08.15
✎
10:42
|
Смотреть как ты инициализирукшь блокировку при записи в график
|
|||
2
NcSteel
04.08.15
✎
10:42
|
(0) так вроде там и так упр блокировки.
|
|||
3
Славен
04.08.15
✎
10:42
|
А у рс графика управляемый режим поставил?
|
|||
4
NcSteel
04.08.15
✎
10:43
|
А вообще перейти на скуль там что автомат, что управляемые блокировки на уровне записей.
|
|||
5
Господин ПЖ
04.08.15
✎
10:44
|
>перейти на скуль
а автор где? |
|||
6
NcSteel
04.08.15
✎
10:46
|
(5) Без понятия. Нет информации
|
|||
7
Господин ПЖ
04.08.15
✎
10:47
|
в файловой эмулировать блокировки как-то тупо...
|
|||
8
NcSteel
04.08.15
✎
10:47
|
А вообще ошибка объяснима, а именно документ в режиме авто блокировок а регистр упр, вот и ошиюка
|
|||
9
Mitriy
04.08.15
✎
10:47
|
(5) пошел на скуль...
|
|||
10
NcSteel
04.08.15
✎
10:48
|
(7) Автор не понимает как работают блокировки, так что может быть все что угодно
|
|||
11
Господин ПЖ
04.08.15
✎
10:48
|
(9) а раньше в бухгалтерию посылали
|
|||
12
vip67
04.08.15
✎
10:55
|
автор здесь, на месте. не ожидал такого участия! отвечаю:
база на скуле. на РС управляемый режим и мне действительно впервые приходится этим заниматься (управляемые блокировки) - но все когда-то с чем-то впервые встречались. Вопрос задаю после многих часов/недель просмотра документации. Не скажу, что полностью въехал - много вопросов без ответа. привожу код в процедуре, где без управляемых блокировок возникала проблема: Процедура УдалитьЗаписиЗаПериодДокумента() УБчт = Новый БлокировкаДанных; УБчтРГ = УБчт.Добавить("РегистрСведений.ГрафикиРаботыПоВидамВремени"); УБчтРГ.Режим = РежимБлокировкиДанных.Разделяемый; УБчтРГ.УстановитьЗначение("Документ",Ссылка); УБчт.Заблокировать(); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Документ", Ссылка); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ГрафикиРаботы.ГрафикРаботы, | ГрафикиРаботы.Месяц |ПОМЕСТИТЬ ВТСотрудникоМесяц |ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы |ГДЕ | ГрафикиРаботы.Документ = &Документ"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ |СотрудникоМесяц.ГрафикРаботы КАК Сотрудник, |СотрудникоМесяц.Месяц КАК Месяц, |ВЫБОР | КОГДА ВведенныеДокументы.ГрафикРаботы ЕСТЬ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ |КОНЕЦ КАК УдалятьЗаписиЗаПериод | |ИЗ | ВТСотрудникоМесяц КАК СотрудникоМесяц |ЛЕВОЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ | СотрудникоМесяц.ГрафикРаботы, | СотрудникоМесяц.Месяц | ИЗ | ВТСотрудникоМесяц КАК СотрудникоМесяц | ВНУТРЕННЕЕ СОЕДИНЕНИЕ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ПО | ГрафикиРаботы.ГрафикРаботы = СотрудникоМесяц.ГрафикРаботы | И НЕ ГрафикиРаботы.План | И ГрафикиРаботы.Месяц = СотрудникоМесяц.Месяц | И ГрафикиРаботы.Документ <> &Документ | И ГрафикиРаботы.Документ <> ЗНАЧЕНИЕ(Документ.ТабельУчетаРабочегоВремениОрганизации.ПустаяСсылка) | )КАК ВведенныеДокументы |ПО | ВведенныеДокументы.ГрафикРаботы = СотрудникоМесяц.ГрафикРаботы | И ВведенныеДокументы.Месяц = СотрудникоМесяц.Месяц"; ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); НаборЗаписей = РегистрыСведений.ГрафикиРаботыПоВидамВремени.СоздатьНаборЗаписей(); сзСотрудников = новый СписокЗначений; Пока ВыборкаЗапроса.Следующий() Цикл УБзп = Новый БлокировкаДанных; УБзпРГ = УБчт.Добавить("РегистрСведений.ГрафикиРаботыПоВидамВремени"); УБзпРГ.Режим = РежимБлокировкиДанных.Исключительный; УБзпРГ.УстановитьЗначение("ГрафикРаботы",ВыборкаЗапроса.Сотрудник); УБзп.Заблокировать(); //попытка //НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); Месяц_ = ВыборкаЗапроса.Месяц; НаборЗаписей.Отбор.План.Установить(Ложь); НаборЗаписей.Отбор.ГрафикРаботы.Установить(ВыборкаЗапроса.Сотрудник); НаборЗаписей.Отбор.Месяц.Установить(ВыборкаЗапроса.Месяц); // Если ВыборкаЗапроса.УдалятьЗаписиЗаПериод Тогда НаборЗаписей.Очистить(); НаборЗаписей.Записать(); Иначе НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл Если (Запись.Документ = Ссылка) Тогда Запись.ОсновноеЗначениеПолное = 0; Запись.ДополнительноеЗначениеПолное = 0; Запись.Документ = Документы.ТабельУчетаРабочегоВремениОрганизации.ПустаяСсылка(); КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры // УдалитьЗаписиЗаПериодДокумента() |
|||
13
NcSteel
04.08.15
✎
10:57
|
(12) Ответ на ошибку из (0) уже был дан, но ты видимо плохо читаешь посты. Представляю как ты изучаешь документацию
|
|||
14
vip67
04.08.15
✎
10:59
|
для теста заремил строку вызова данной процедуры - ошибка та-же. т.е. код - ни при чем
|
|||
15
vip67
04.08.15
✎
11:00
|
(13) если ответ был в (8), то документ то-же в режиме управляющих
|
|||
16
NcSteel
04.08.15
✎
11:02
|
(15) Суть в том, что документ вызывает блокировку в одном режиме, а регистр в другом режиме. И не обязательно проблемный регистр это "ГрафикиРаботыПоВидамВремени"
Я уверен, что документ делает и другие движения по другим регистрам, которые остались в режмиме авто блокировок |
|||
17
vip67
04.08.15
✎
11:04
|
а как узнать, какие объекты остались в режиме автоматической блокировки? т.е., проследить состояние блокировки?
|
|||
18
NcSteel
04.08.15
✎
11:06
|
(17) ну так открой документ, посмотри по каким регистрам двигает документ. и прощелкай все регистры.
|
|||
19
vip67
04.08.15
✎
11:28
|
(18) открыл, посмотрел, по всем регистрам поставил управляемый режим - не помогло
|
|||
20
H A D G E H O G s
04.08.15
✎
11:32
|
У автора в (12) блокировка всего регистра + потенциальный deadlock. вы че курите?
|
|||
21
NcSteel
04.08.15
✎
11:33
|
(20) Текст ошибки в (0) говорит о другом, потом и к дедлокам прийдем.
|
|||
22
NcSteel
04.08.15
✎
11:34
|
(19) То есть везде упр режим и все ровно ошибка в (0) ? - не верю
|
|||
23
H A D G E H O G s
04.08.15
✎
11:35
|
(21) ок
(0) Автор, в свойствах конфы включи только управляемый режим. |
|||
24
vip67
04.08.15
✎
11:54
|
(23) счас попробую
|
|||
25
vip67
04.08.15
✎
11:58
|
прокатило - ошибок нет
|
|||
26
NcSteel
04.08.15
✎
12:00
|
(25) О чем тебе толдычат уже целый час....
|
|||
27
H A D G E H O G s
04.08.15
✎
12:08
|
(25) Не переживай, они скоро появятся.
|
|||
28
vip67
04.08.15
✎
12:10
|
тогда следующий вопрос: я не перевожу полностью базу под управляемый режим - мне нужно решить только эту проблему. в документации рекомендуется установить на конфигурацию управляемый и автоматический режим. как я понял - если при переводе чисто на управляемый режим ошибка исчезла, это говорит о том, что где-то есть автоматический режим в транзакции. Вот и вопрос - как вычислить этот объект? не оставлять же в свойставх конфигурации чисто управляемый редим блокировок
|
|||
29
Господин ПЖ
04.08.15
✎
12:10
|
(26) а все равно не понятно откуда автоблокировка шла
|
|||
30
NcSteel
04.08.15
✎
12:22
|
(28) Перевод всей конфигурации на упр режим это грубое решение.
Надо анализировать все транзакции которые создает документ при проведении (движения регистров, может он документы смежные перезаписывает или справочники). И если у связанного объекта стоит авто блокировки то получаем ошибку. Почему документацию не читаешь? |
|||
31
H A D G E H O G s
04.08.15
✎
12:22
|
(28) Ищи все что пишется.
Нумераторы, Последовательности, Константы, Справочники, |
|||
32
NcSteel
04.08.15
✎
12:23
|
(29) вроде понятно, а именно слепота автора и вывих рук одновременно
|
|||
33
Господин ПЖ
04.08.15
✎
12:24
|
(32) я к тому что инструмента получается нет? и надо эмпирически вычислять как с правами было (куда нет доступа) до появления логирования события в ЖР
|
|||
34
NcSteel
04.08.15
✎
12:26
|
(33) Имхо, но достаточно и конфигуратора.
Других более удобны механизмов не знаю |
|||
35
vip67
04.08.15
✎
14:26
|
ок, я поддерживаю (33) в том, что неудобно, когда инструмента нет, спс всем участвующим! Особенно H A D G E H O G s !!!
Книги читаю, а так как не нашел внятного совета в них про инструментарий, обратился сюда, и к сожалению - подтверждение отсутствия такового этим сайтом - то остается - глубокий анализ и мучение. Это уже претензии к разработчикам - могли бы и придумать что-либо... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |