|
Почему постоянно обработка выдает "не удалось заблокировать таблицу..." | ☑ | ||
---|---|---|---|---|
0
ЕщеОдин Программист
24.05.16
✎
15:20
|
Есть файловая КА2.0, в ней около пяти активных пользователей. Запускаю в ней простенькую обработку по передлке и перепроведению накладных, и она отрабатывает максимум штучек пять накладных и вываливается с сообщением "Не удалось заблокировать таблицу", в частности DOCUMENTJOURNAL... или еще какие-нибудь. С сетевыми в восьмерке я еще не много поработал, но на семерке подобная обработка отработала бы без проблем. Почему такая бяка?
|
|||
1
Nuobu
24.05.16
✎
15:21
|
Делаешь через попытку?
|
|||
2
ЕщеОдин Программист
24.05.16
✎
15:22
|
нет, останавливается и выдает сообщение. Откуда столько блокировок? Я ее раз десять запускал, и одна-пять накладных и останавливается.
|
|||
3
Cyberhawk
24.05.16
✎
15:23
|
Так база файловая, вот и блокировки
|
|||
4
Cyberhawk
24.05.16
✎
15:23
|
Файловая не подходит для многопользовательской работы пользователей с одними и теми же видами документов...
|
|||
5
ЕщеОдин Программист
24.05.16
✎
15:26
|
(4) в текущий момент вообще не заводят накладные, т.к. ответственный за это человек отсутствует. Что там делают остальные не знаю, но не накладные.
|
|||
6
ЕщеОдин Программист
24.05.16
✎
15:28
|
у меня эти блокировки пару раз даже на локальной копии вылезли. Откуда? Никаких документов у меня при этом открыто не было.
|
|||
7
КнОпка
24.05.16
✎
15:33
|
(6) используйте обработку Групповая обработка справочников и документов
вот такая у вас обработка значит ) |
|||
8
Cyberhawk
24.05.16
✎
15:35
|
(6) Сложно сказать, нужно смотреть на код обработки
|
|||
9
ЕщеОдин Программист
24.05.16
✎
15:38
|
Обработка очень простенькая:
сп = новый Массив; выб = Документы.ПоступлениеТоваровУслуг.Выбрать(); пока выб.Следующий() Цикл Если выб.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Тогда сп.Добавить(выб.Ссылка); КонецЕсли; КонецЦикла; Для каждого ссы из сп Цикл о = ссы.ПолучитьОбъект(); о.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика; Если о.Проведен Тогда о.Записать(РежимЗаписиДокумента.Проведение); Иначе о.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; КонецЦикла; |
|||
10
Cyberhawk
24.05.16
✎
15:42
|
Картинку с ошибкой в базе с одним пользователем (тобой) в студию. Желательно на демобазе КА воспроизвести.
|
|||
11
ЕщеОдин Программист
24.05.16
✎
15:51
|
(10) если бы я знал, что ты захочешь картинку, я бы обязательно сделал. Но на одном пользователе оно не каждый раз вылазит.
|
|||
12
КнОпка
24.05.16
✎
15:52
|
(9) никогда не используйте синтаксис 7.7 в 8
Вы же все документы берете для перепроведения, со времен царя Гороха, а так же в закрытом периоде. Потому и вылетает Используйте предложенную типовую обработку |
|||
13
ЕщеОдин Программист
24.05.16
✎
15:55
|
(12) там всего четыре месяца и ни одного закрытого. Попробовал я типовую, она что-то там покрутила, и сказал, что ни одного документа не изменено. Хотя согласно отбору было выбрано 255 доков.
|
|||
14
Cyberhawk
24.05.16
✎
16:02
|
(11) Из ЖР картинка с текстом тоже пойдет, если платформа ее там зафиксировала, конечно...
|
|||
15
b_ru
24.05.16
✎
16:13
|
Я так думаю, блокировка с самим собой возможна, когда это чудо попытается провести один из N - N mod 20 последних документов. Выборка выбирает документы по 20 штук, возможно с этим связано. Ну или все проще и банальнее - регламентные задания.
(0) Если вкратце, то в 8 никогда не используй выборку из документов или справочников. Только запросы. |
|||
16
aleks_default
24.05.16
✎
16:18
|
"Что там делают остальные не знаю, но не накладные."
Ну так блокировки-то по регистрам делаются, а не по документам. А у регистра как правило не один Документ-регистратор. Смекаешь? |
|||
17
ЕщеОдин Программист
24.05.16
✎
16:20
|
из анализа журнала регистрации вывел, что здесь замешаны фоновые задания, описание ошибки в ЖР:
Событие: отражение в регламентированном учете. Комментарий: Не удалось отразить в регл. учете документ "Списание на расходы 0000-000003 от 01.01.2016 12:00:03" по причине: {ОбщийМодуль.РеглУчетПроведениеСервер.Модуль(1488)}: Ошибка при вызове метода контекста (Записать) ОтражениеВРеглУчете.Записать(); по причине: Ошибка при выполнении обработчика - 'ПередЗаписью' по причине: {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(3957)}: Ошибка при вызове метода контекста (Получить) СведенияОБлокируемыхОбъектах = Константы.СведенияОБлокируемыхОбъектах.Получить().Получить(); по причине: Конфликт блокировок при выполнении транзакции: |
|||
18
ЕщеОдин Программист
24.05.16
✎
16:20
|
(это было на другой обработке, то же простенькой)
|
|||
19
КнОпка
24.05.16
✎
16:26
|
(13) у вас же КА 2.0, т.е. УФ
попробуйте в списке документов выделить документы Shift + стрелка вниз либо вверх, и перепровести ) Какой будет результат? |
|||
20
ЕщеОдин Программист
24.05.16
✎
16:32
|
(19) запустилась обработка проведения, периодически поплевываясь на ошибку заполненности данных. Интересное свойство, буду знать, но какое отношение оно имеет к текущему вопросу?
|
|||
21
КнОпка
24.05.16
✎
16:54
|
(20) ну а теперь уберите изменение реквизита в вашей обработке и запустите ее. И какой будет результат?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |