![]() |
![]() |
![]() |
|
Ошибка: объект заблокирован | ☑ | ||
---|---|---|---|---|
0
Gamma
27.07.07
✎
09:43
|
Всем здравтсвуйте! загружаю данные из торговли в бухгалтерию стандартными обработками, а он мне пишет:
ОбъектБД.Записать(); {Обработка.ЗагрузкаДанных.Форма.Модуль(2349)}: Объект заблокирован: Операция ГАС0006541 вставила проверку по блокировке, выдает "0" |
|||
1
ZanderZ
27.07.07
✎
10:01
|
открыта наверно кем то ..
|
|||
2
Копер
27.07.07
✎
10:03
|
"вставила проверку по блокировке, выдает "0" -"
как это? |
|||
3
Gamma
27.07.07
✎
10:05
|
сижу монопольно,и документы у меня все закрыты, а проверку делала Документ.Блокировка()
|
|||
4
Морозов Александр
27.07.07
✎
10:05
|
надо так
Если ОбъектБД.Блокировка(1)=1 Тогда ОбъектБД.Блокировка(0); ОбъектБД.Записать(); Иначе Сообщить ("Хто-то заблокировал объект"); КонецЕсли; |
|||
5
Sasha_H
27.07.07
✎
10:06
|
Мой совет таков. Внеси изменения в этот отчет
~Запись:Попытка ОбъектБД.Записать(); Исключение Если Вопрос("Объект заблокирован, пробовать еще раз?","Да+Нет") = "Да" Тогда Перейти ~Запись; Инначе //я думаю, что это у тебя в цикле Продолжить; КонецЕсли; КонецПопытки; |
|||
6
Sasha_H
27.07.07
✎
10:06
|
База сиквельная!?
|
|||
7
Морозов Александр
27.07.07
✎
10:08
|
фуууууу...
|
|||
8
Sasha_H
27.07.07
✎
10:08
|
бывает, подвисает в журнале и 1С думает, что объект действительно заблокирован.
При этом поможет перезапуск СКЛ или сервака. |
|||
9
Sasha_H
27.07.07
✎
10:08
|
(7) Чего ты фукаешь!? это ты мне :)
|
|||
10
Морозов Александр
27.07.07
✎
10:09
|
ктож в наше время по меткам ходит?
|
|||
11
Sasha_H
27.07.07
✎
10:10
|
(5) Запись с Попыткой и Переходом удобно использовать в связи если окуеть много позиций загружаешь и при этом возмжна блокировка объекта, можно подождать и попросить пользователя выйти из объекта и продолжить запись далее очень удобно хотя я и сам противник использования операторов перехода но...
|
|||
12
Sasha_H
27.07.07
✎
10:11
|
(10) Со всем к тебе уважением :) скажи этот модуль содержит ошибку!? Или он неправилен ?
|
|||
13
Морозов Александр
27.07.07
✎
10:13
|
не айс... не гламурно и т.д и т.п.
а так ошибки то нет... :-) |
|||
14
Sasha_H
27.07.07
✎
10:16
|
(13) Ну от скажи как по-твоему тут использовать не Перейти (я по-просту незнаю)
Если я отвече попробовать еще раз записать этот объект потому как знаю, что объект уже разблокирован. Честно говорю просто не знаю :( |
|||
15
Gamma
27.07.07
✎
10:18
|
у меня пишет так:
ОбъектБД.Блокировка()=0 получается не заблокирован, а при ОбъектБД.Записать() пишет ошибку что заблокирован... база DBF |
|||
16
Морозов Александр
27.07.07
✎
10:19
|
(15) Это фишка 1С... читай 4 пост
|
|||
17
Морозов Александр
27.07.07
✎
10:19
|
(14) В цикле
|
|||
18
Gamma
27.07.07
✎
10:20
|
ок, спасибо, попробую
|
|||
19
Sasha_H
27.07.07
✎
10:21
|
(15) попробуй перезагрузится. Возможно, что подвис блин журнал такое бывает. Если реально ты в монопольном режиме и в модуле обработки нету ошибок и ты сам же этот объект не используешь :)
|
|||
20
Sasha_H
27.07.07
✎
10:23
|
(17) А как !? примерчик. Мы находимся в цикле и еще один цикл вещать :)
Пока ГлавныйЦикл = 1 Цикл Объект.Записать(); //как тут применить дополнительный цикл :) КонецЦикла; |
|||
21
Sasha_H
27.07.07
✎
10:25
|
Сань мне кажется так тоже не гламурно и кода больше получится и переменных лишних больше а? как думаешь. Ибо как 1С Перейти (это Слава Богу не славнозвесный GO TO).
|
|||
22
Морозов Александр
27.07.07
✎
10:28
|
Функция ЗаписатьОБъект(ОБъект)
для х=1 по 100 Цикл Если ОбъектБД.Блокировка(1)=1 Тогда ОбъектБД.Блокировка(0); ОбъектБД.Записать(); Возврат 1; КонецЕсли; КонецЦИкла; Возврат 0; КонецФукции ... ... ... Если ЗаписатьОБъект(ОБъект)=0 Тогда Сообщить ("Хто-то заблокировал объект"); КонецЕсли; |
|||
23
Sasha_H
27.07.07
✎
10:34
|
(22) Ну вот он у тебя сдесь будет излишне проганять 100 раз и прикинь если ты загружаешь в базу даных что-то по номенклатуре если их и так дофигище еще вешать маленький виснячокс.
Так как для х=1 по 100 Цикл Если ОбъектБД.Блокировка(1)=1 Тогда ОбъектБД.Блокировка(0); ОбъектБД.Записать(); Возврат 1; КонецЕсли; КонецЦИкла; Условие будет правдиво для объектов не заблокированых, а для заблокированых объектов будет шагать 100 раз зачем это!? и почему именно 100 можно и с 1 по 1 быстрее будет всеравно с таким методом программа не дает возможности попробовать записать еше раз |
|||
24
Andrey_28
27.07.07
✎
10:38
|
Функция ЗаписатьОБъект(ОБъектБД)
Если ОбъектБД.Блокировка(1)=1 Тогда ОбъектБД.Блокировка(0); ОбъектБД.Записать(); Возврат 1; Иначе Возврат 0; КонецЕсли; КонецФункции Если ЗаписатьОБъект(ОБъект)=0 Тогда Сообщить ("Хто-то заблокировал объект"); КонецЕсли; |
|||
25
Andrey_28
27.07.07
✎
10:38
|
(24) к (23)
|
|||
26
Морозов Александр
27.07.07
✎
10:39
|
(23) по твоему лучше сидеть и жать "да" "нет"?
|
|||
27
dk
27.07.07
✎
10:41
|
(23)
намени на
Хотя буков действительно больше, зато "Айс" |
|||
28
Морозов Александр
27.07.07
✎
10:41
|
(23) да и если блокировка удачно поставилась то и цикл прерывается.... теперь остается другой вопрос - транзакция! :-)
|
|||
29
Sasha_H
27.07.07
✎
10:44
|
(25) и (26)
Думаю лучше так как возможно множество даных нужно изменить у ручками их перезабивать ну его на... и тем более, что объект заблокирован возможно не один. Согласен если использовать обработку в монопольном режиме мой вариант ни к чему но если это использовать во-время работы пользователей думаю более лучше использовать вариант перехода. |
|||
30
Sasha_H
27.07.07
✎
10:52
|
(27) Но зачем Отмена! Это вообще сдесь ничео не сделает, нужно дополнительную перемену создавать, так как судя по нажатию Отмена должна прерватся абсолютна вся оброботка.
|
|||
31
Gamma
27.07.07
✎
10:56
|
записывает, теперь пишет:
Объект.СнятьПометкуУдаления(); {Обработка.ЗагрузкаДанных.Форма.Модуль(1828)}: Пометка на удаление измененного документа невозможна! |
|||
32
Sasha_H
27.07.07
✎
10:57
|
Модуль кинь где оно у тебя !
|
|||
33
Морозов Александр
27.07.07
✎
10:58
|
вообще цикл нужен потому как, бывает что так что объект никто уже не блокирует. а вот сама 1С (ну или СКЛ, не помню точно) еще не сняла блокировку
|
|||
34
dk
27.07.07
✎
11:02
|
(27) Угу, нужна еще одна переменная, лениво писАть.
(33) Имхо, цикл без вопросов - зло. Ибо грузит проц на 100%. А если это терминал? |
|||
35
Sasha_H
27.07.07
✎
11:03
|
(33) Ну быстрей всего 1С.
Короче думаю ни вашь вариант ни мой не является ошибочным по-скольку все зависит от ситуации загружаемых даных и каким способом оно происходит. |
|||
36
Gamma
27.07.07
✎
11:03
|
Функция УстановитьСтатусУдаления(Объект, СтатусВПравилах="Авто", СтатусВФайле="НеИзвестен")
Если СтатусВПравилах = "Авто" Тогда Если СтатусВФайле="НеИзвестен" Тогда Возврат(Объект); ИначеЕсли ПустоеЗначение(СтатусВФайле) = 1 Тогда Если Объект.ПометкаУдаления() = 1 Тогда //Закомментировано Инсталлятором МОД:Объект.СнятьПометкуУдаления(); Объект.СнятьПометкуУдаления(); КонецЕсли; Иначе Если Объект.ПометкаУдаления() = 0 Тогда //Закомментировано Инсталлятором МОД:Объект.Удалить(0); Объект.Удалить(0); КонецЕсли; КонецЕсли; ИначеЕсли СтатусВПравилах = "Пометить" Тогда Если Объект.ПометкаУдаления() = 0 Тогда //Закомментировано Инсталлятором МОД:Объект.Удалить(0); Объект.Удалить(0); КонецЕсли; ИначеЕсли СтатусВПравилах = "СнятьПометку" Тогда Если Объект.ПометкаУдаления() = 1 Тогда //Закомментировано Инсталлятором МОД:Объект.СнятьПометкуУдаления(); Объект.СнятьПометкуУдаления(); КонецЕсли; КонецЕсли; Возврат(Объект); КонецФункции |
|||
37
Gamma
27.07.07
✎
11:05
|
Мод давно не используем, а комментарии остались
а это стандартная функция |
|||
38
Andrey_28
27.07.07
✎
11:09
|
(37) Объект.СнятьПометкуУдаления() до или после записи объекта у тебя?
|
|||
39
Sasha_H
27.07.07
✎
11:10
|
(36) а отладчик что говорит!
|
|||
40
Sasha_H
27.07.07
✎
11:11
|
(38) да это тоже очень важно!!!
|
|||
41
Gamma
27.07.07
✎
11:11
|
(37) после записи
|
|||
42
Sasha_H
27.07.07
✎
11:11
|
При снятии метки нужно проверять записан ли Объект вообще :)
|
|||
43
Sasha_H
27.07.07
✎
11:12
|
(41) Отладчик посмотри что там!?
|
|||
44
Gamma
27.07.07
✎
11:12
|
(39) Объект.ПометкаУдаления()=1 и потом выдает ошибку
|
|||
45
Sasha_H
27.07.07
✎
11:13
|
Сам код логически верно, но возможно, что-то с Объектом как-то неверно передался.
|
|||
46
Sasha_H
27.07.07
✎
11:14
|
Все понятно Объект либо не записан либо вообше что-то ни то!!! Кури в сторону Объекта
|
|||
47
Sasha_H
27.07.07
✎
11:15
|
(44) У тебя ошибка уже при условии проверки! А это значит, что пытаешся проверить Пометку у объекта которому эта функция недосиупна
|
|||
48
Морозов Александр
27.07.07
✎
11:16
|
:-)
|
|||
49
Gamma
27.07.07
✎
11:27
|
Объект - это операция под номером, загружает изначально он все правильно, а вот уже когда изменения загрузили, то выдает ошибку
|
|||
50
Sasha_H
27.07.07
✎
11:32
|
Где именно... Если операция существует и по логике вещей обработка твоя должна работать так
Если операция найдена и помечена на удаление снять эту пометку, а потом уже проводить изменения и записывать! Влавливаешь суть ошибки... Пометка на удаление измененного документа невозможна! |
|||
51
Sasha_H
27.07.07
✎
11:33
|
И вообще я не понимаю зачем помечать на удаление операцию в которой ты что-то меняешь !
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |