Изменение реквизитов в дукументах, помечаемых на удаление

28.09.2009
19
0
#1
Всем добрый день!Возникла проблема! Нужна изменить реквизит в документе, который помечается на удаление. Через глобальный модуль и предопред.процу ПриУдаленииДокумента не прокатывает - ругается когда пытаюсь записывать документ с измененным реквизитом:
Док.Записать();
{Глобальный модуль(5365)}: Объект заблокирован
Сам код такой:
Док=СоздатьОбъект("Документ.СчетНаОплату"); //ЦБОУ
Док.НайтиДокумент(Докум);
Док.Оплата=Число(0);
Док.Записать();
 

vbs

Well-known member
18.02.2007
1 708
1
#2
Если записываешь прямо из документа - незачем делать следующее
Док=СоздатьОбъект("Документ.СчетНаОплату"); //ЦБОУ
Док.НайтиДокумент(Докум);

Если из внешней обработки - проверь, не открыт ли при этом изменяемый документ
 
28.09.2009
19
0
#3
Нет Док.Записать() у меня находится в Глобальном модуле в процедуре ПриУдаленииДокумента(). То есть я хочу, чтобы когда документ удаляестя - менялся его реквезит.
 
L

Lionzi

#4
Всем добрый день!Возникла проблема! Нужна изменить реквизит в документе, который помечается на удаление. Через глобальный модуль и предопред.процу ПриУдаленииДокумента не прокатывает - ругается когда пытаюсь записывать документ с измененным реквизитом:
Док.Записать();
{Глобальный модуль(5365)}: Объект заблокирован
Сам код такой:
Док=СоздатьОбъект("Документ.СчетНаОплату"); //ЦБОУ
Док.НайтиДокумент(Докум);
Док.Оплата=Число(0);
Док.Записать();
Не вижу необходимости в Док=СоздатьОбъект("Документ.СчетНаОплату");
получается что система его уже открыла для обработки (функция приадалении наала с ним работать), а ты снова его пытаешся открыть и записать...

Функция глПриУдаленииДокумента(Докум, Предупредить = 1) Экспорт

в переменную Докум уже передается твой документ, с которым ты проводиш операцию удаления, сделай проверку
Если (Докум.Вид() = "СчетНаОплату") тогда ...
 
28.09.2009
19
0
#5
Не вижу необходимости в Док=СоздатьОбъект("Документ.СчетНаОплату");
получается что система его уже открыла для обработки (функция приадалении наала с ним работать), а ты снова его пытаешся открыть и записать...

Функция глПриУдаленииДокумента(Докум, Предупредить = 1) Экспорт

в переменную Докум уже передается твой документ, с которым ты проводиш операцию удаления, сделай проверку
Если (Докум.Вид() = "СчетНаОплату") тогда ...

Я согласен с тобой, правда на половину, я пробовал работать с переменной Докум - в этом случае система ругается на строкчку Докум.Оплата=1, выдает сообщение, что документ не выбран!!!!
 
H

Hryv

#6
Юрий, я для чего это надо?
Может найдется решение в обход
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#7
кхе-кхе...
Действительно, объясните, для чего все это требуется?
Сделать то можно все что угодно, даже обойти блокировку документа...
 
28.09.2009
19
0
#8
Юрий, я для чего это надо?
Может найдется решение в обход
Естественно,можно сделать все проще = сделать кнопочку удаления в журнале, написать реакцию и не париться, но сам понимаешь, бухгалтера могут по привычке нажать привычную кнопку удаления...А всё это нужно для следующего: Есть документ куда бухи вбивают счета, и есть документ, где делается оплата по этим счетам, так вот чтобы была чёткая взаимосвязь между этими документа - это и нужно.Я кстати пол-интернета облазил, народ сталкивался с такой же проблемой - но решения предложено не было. Писали, что во время удаления документа - происходит его блокировка и сделать ниче нельзя!! Предлагают сделать обработку ожидания, но так заморачиваться я не хочу.

кхе-кхе...
Действительно, объясните, для чего все это требуется?
Сделать то можно все что угодно, даже обойти блокировку документа...

А как обойти блокировку? =)
 
H

Hryv

#9
Есть документ куда бухи вбивают счета, и есть документ, где делается оплата по этим счетам, так вот чтобы была чёткая взаимосвязь между этими документа - это и нужно
Как вариант: нельзя ли взаимосвязь настроить так, чтобы при удалении менялся реквизит не в удаляемом документе, а в связанном с ним
Или еще так: в документе, связанном с удаляемым сначаля проверять пометку на удаление первого, а потом уже разные реквизиты

Я просто не знаю как именно и на сколько сложно устроена система, но впринципе переделать можно все что угодно :rolleyes:
 
28.09.2009
19
0
#10
Как вариант: нельзя ли взаимосвязь настроить так, чтобы при удалении менялся реквизит не в удаляемом документе, а в связанном с ним
Или еще так: в документе, связанном с удаляемым сначаля проверять пометку на удаление первого, а потом уже разные реквизиты

Я просто не знаю как именно и на сколько сложно устроена система, но впринципе переделать можно все что угодно :rolleyes:

Попробую объяснить: есть документ СЧЕТ(не тот, который встроен в конфигурацию), в нем есть реквизит оплата, который равен 1 если счет оплачен и 0 в противном случае, есть документ "Списание",в котором оплачивается счет. 1 из его реквизитов которого является дукумент СЧЕТ,Если он подцеплен, то при проведении оплаты, в документе счет реквизиту оплата присваивается 1. В соответствии с этим может получится ситуация: Бух удаляет счет, в документе оплата,в котором подвязан этот счет соответствующий реквизит очищается,однако реквизит оплата в счете =1 (как будто счет оплачен,хотя он удален),далее если пометка удаления снимается-получаем необъективную инфу.Вот...понимаю что звучит наверно все загонно...ну как смог...)) блин,а ещё педовское образование)))
 

puh14

Well-known member
11.07.2008
1 412
0
#12
Если он подцеплен, то при проведении оплаты, в документе счет реквизиту оплата присваивается 1. В соответствии с этим может получится ситуация: Бух удаляет счет, в документе оплата,в котором подвязан этот счет соответствующий реквизит очищается,однако реквизит оплата в счете =1 (как будто счет оплачен,хотя он удален),далее если пометка удаления снимается-получаем необъективную инфу.
Тогда проще ловить в процедуре отмена проведения с выдачей предупреждения о документе движения оплаты. Вообще-то в отчетах проще исходить из данных регистров, чем документов. Косяки сразу видны. Например у меня при изменении доков задним числом некоторые ресурсы выходят в минус и я их сразу отлавливаю и даю по мозгам. Если не пользуешь регистр, то простейший запрос тебе позволит выбрать сопутствующие документы. Если где-то что-то есть, то выдаешь ссылки и пока не поправят руками все идут лесом.
 
28.09.2009
19
0
#14
Тогда проще ловить в процедуре отмена проведения с выдачей предупреждения о документе движения оплаты. Вообще-то в отчетах проще исходить из данных регистров, чем документов. Косяки сразу видны. Например у меня при изменении доков задним числом некоторые ресурсы выходят в минус и я их сразу отлавливаю и даю по мозгам. Если не пользуешь регистр, то простейший запрос тебе позволит выбрать сопутствующие документы. Если где-то что-то есть, то выдаешь ссылки и пока не поправят руками все идут лесом.

Дркумент не проводится!))) Соответственно, нет отмены проведения)

А зачем удалять оплаченный счет?

Очень справедливый вопрос! Честно говоря даже не знаю что сказать!=) Просто хотелось предусмотреть все возможные косяки! А вообще может и правда стоит запретить удалять такие документы! Спасибо за мысль!=))
 

unknown181538

НеГуру
28.12.2008
1 417
0
#15
Удаление оплаченного счета это и есть возможный косяк. Если случай исключительный, и пользователь уверен, то пусть поправит реквизит руками. Например, наверняка, оплату надо привязать к другому счету.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#16
Естественно,можно сделать все проще = сделать кнопочку удаления в журнале, написать реакцию и не париться, но сам понимаешь, бухгалтера могут по привычке нажать привычную кнопку удаления...
Это обходится установкой FormEx и отлавливанием нажатия кнопки Del. В самой процедуре делайте что угодно.
Как обойти блокировку? Работайте напрямую с БД и будет вам счастье. Но в конкретно этом случае нет необходимости обходить блокировку. Нужно просто воспользоваться FormEx.
 
K
#17
без внешних компонент. завести справочник туда писать с каким документом производить действие. при выходе из системы редактировать документы и удалять элементы справочника.
 
28.09.2009
19
0
#18
Блин, столько вариантов! Всем спасибо за ответы и критику!!! Очень мне помогли!!!!!!
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#19
без внешних компонент. завести справочник туда писать с каким документом производить действие. при выходе из системы редактировать документы и удалять элементы справочника.
А до выхода из системы может произойти несколько часов...
А еще при выходе из системы одним пользователем, другой может заблокировать этот документ...
А еще до выхода из системы могут снять пометку на удаление с документа...
Еще с десяток вариантов привести?
Никогда не оставляйте на потом то, что НЕОБХОДИМО сделать в настоящий миг... Потома может и неступить!
 
K
#20
про косяки FormEx то же можно с десяток примеров привести :)