Объект заблокирован

  • Автор темы krenk
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

krenk

#1
Ситуация такая: есть документ2, у него есть докОснование. при работе с документом2 необходимо записать изменения в докОснование, чтоб прочитать их потом из других документов2 с этим докОснованием.

порядок действий -> делаем докОснование ручкуми, записсываем, проводим -> жмем ВвестиНаОсновании, получаем документ2, делаем в нем манипуляции (флажки, даты) -> жмем записать и закрыть.... вот тут естьпроблема:

Процедура ПриЗакрытии()

//********************* ДокДиагностики - ДокументОснование для текущего документа

ДокДиагностики.Контрагент=Контрагент;
ДокДиагностики.Автомобиль =Авто.ТекущийЭлемент();
ДокДиагностики.БыстрыйВвод=0;
ДокДиагностики.ВремяЗаезда =Время;
ДокДиагностики.ДатаНаРемонт=сзДниМастера.ПолучитьЗначение(сзДниМастера.ТекущаяСт
рока());
ДокДиагностики.ДатаВозврата=фДатаВозврата;
ДокДиагностики.СостояниеОбращения=Макс(СостояниеОбращения,ДокДиагностики.Состоян
иеОбращения);

ДокДиагностики.Записать(); //вот тут
ДокДиагностики.Провести();

//*********************

КонецПроцедуры

проблема в том, что если документ2 был только что создан, то выпадает ошибка " Объект заблокирован: ...", а если открываем уже давно созданный и записаный документ2, проделываем аналогичные операции, ошибка не вылезает... :(

Вопрос: ЧТО блокирует документ??? (я в базе один и монопольно, открыт только один документ2)

спасите!!! уволят!!! B)
 
H

Hryv

#2
Видимо из-за того, что в процедуру ВводНаОсновании передается ДокументОснование, то вводящийся док и блокирует свое основание, пока не закроется

Решить, наверное, можно если вводить не на основании а повесить кнопочку в журнале где лежат ДокДиагностики
и по ней делать вызов формы нового документа ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>,<ДокументОснование>)
только ДокументОснование (атрибут журнала ТекущийДокумент) передавай как <КонтекстФормы>, а не <ДокументОснование>

Подробнее посмотри в синтакс-помощнике "Открыть форму нового документа"

Код из ВводНаОсновании перекинь в ВводНового
 
K

krenk

#3
мдя.... убрал процедуру ВводНаОсновании, сделал открытие с передачей ДокДиагностики как параметра, заполнил по нему документ2....

результат не особо изменился....

Видимо, записать ДокДиагностики не получится пока он висит в ДокументОснование в новом документе2...
пойду думать че-нить другое...
 
H

Hryv

#4
А ДокДиагностики - это реквизит в документе2
Или ДокДиагностики = СоздатьОбъект("...");
 

puh14

Well-known member
11.07.2008
1 412
0
#5
Судя по тому, что у тебя ДокДиагностити не через СоздатьОбъект, то он идет как переменная Модуля. Если он не переменная модуля - тогда как глобальная. Если он идет как реквизит тогда лучше сделать

Процедура ПриЗакрытии()

//********************* ДокДиагностики - ДокументОснование для текущего документа
ДокДиагностики1 = СоздатьОбъект("Документ");
Если ДокДиагностики1.НайтиДокумент(ДокДиагностики) = 1 Тогда
ДокДиагностики1.Контрагент=Контрагент;
ДокДиагностики1.Автомобиль =Авто.ТекущийЭлемент();
ДокДиагностики1.БыстрыйВвод=0;
ДокДиагностики1.ВремяЗаезда =Время;
ДокДиагностики1.ДатаНаРемонт=сзДниМастера.ПолучитьЗначение(сзДниМастера.ТекущаяС
т
рока());
ДокДиагностики1.ДатаВозврата=фДатаВозврата;
ДокДиагностики1.СостояниеОбращения=Макс(СостояниеОбращения,ДокДиагностики.Состоя
н
иеОбращения);

ДокДиагностики1.Записать();
ДокДиагностики1.Провести();
КонецЕСли;

//*********************

КонецПроцедуры

Если таки переменная - постарайся использовать её только в ПРиЗаписи
 
Статус
Закрыто для дальнейших ответов.