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

Тема в разделе "1C и всё что с ней связано", создана пользователем Юрий, 28 сен 2009.

  1. Юрий

    Юрий Member

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Если записываешь прямо из документа - незачем делать следующее
    Док=СоздатьОбъект("Документ.СчетНаОплату"); //ЦБОУ
    Док.НайтиДокумент(Докум);

    Если из внешней обработки - проверь, не открыт ли при этом изменяемый документ
     
  3. Юрий

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0
    Нет Док.Записать() у меня находится в Глобальном модуле в процедуре ПриУдаленииДокумента(). То есть я хочу, чтобы когда документ удаляестя - менялся его реквезит.
     
  4. Lionzi

    Lionzi Гость

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

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

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

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0

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

    Hryv Гость

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    кхе-кхе...
    Действительно, объясните, для чего все это требуется?
    Сделать то можно все что угодно, даже обойти блокировку документа...
     
  8. Юрий

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0
    Естественно,можно сделать все проще = сделать кнопочку удаления в журнале, написать реакцию и не париться, но сам понимаешь, бухгалтера могут по привычке нажать привычную кнопку удаления...А всё это нужно для следующего: Есть документ куда бухи вбивают счета, и есть документ, где делается оплата по этим счетам, так вот чтобы была чёткая взаимосвязь между этими документа - это и нужно.Я кстати пол-интернета облазил, народ сталкивался с такой же проблемой - но решения предложено не было. Писали, что во время удаления документа - происходит его блокировка и сделать ниче нельзя!! Предлагают сделать обработку ожидания, но так заморачиваться я не хочу.


    А как обойти блокировку? =)
     
  9. Hryv

    Hryv Гость

    Как вариант: нельзя ли взаимосвязь настроить так, чтобы при удалении менялся реквизит не в удаляемом документе, а в связанном с ним
    Или еще так: в документе, связанном с удаляемым сначаля проверять пометку на удаление первого, а потом уже разные реквизиты

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

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А зачем удалять оплаченный счет?
     
  12. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Тогда проще ловить в процедуре отмена проведения с выдачей предупреждения о документе движения оплаты. Вообще-то в отчетах проще исходить из данных регистров, чем документов. Косяки сразу видны. Например у меня при изменении доков задним числом некоторые ресурсы выходят в минус и я их сразу отлавливаю и даю по мозгам. Если не пользуешь регистр, то простейший запрос тебе позволит выбрать сопутствующие документы. Если где-то что-то есть, то выдаешь ссылки и пока не поправят руками все идут лесом.
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    ресурсам по мозгам ? Жесткий подход :)
     
  14. Юрий

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0

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


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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Удаление оплаченного счета это и есть возможный косяк. Если случай исключительный, и пользователь уверен, то пусть поправит реквизит руками. Например, наверняка, оплату надо привязать к другому счету.
     
  16. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Это обходится установкой FormEx и отлавливанием нажатия кнопки Del. В самой процедуре делайте что угодно.
    Как обойти блокировку? Работайте напрямую с БД и будет вам счастье. Но в конкретно этом случае нет необходимости обходить блокировку. Нужно просто воспользоваться FormEx.
     
  17. kaa

    kaa Гость

    без внешних компонент. завести справочник туда писать с каким документом производить действие. при выходе из системы редактировать документы и удалять элементы справочника.
     
  18. Юрий

    Юрий Member

    Регистрация:
    28 сен 2009
    Сообщения:
    19
    Симпатии:
    0
    Блин, столько вариантов! Всем спасибо за ответы и критику!!! Очень мне помогли!!!!!!
     
  19. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    А до выхода из системы может произойти несколько часов...
    А еще при выходе из системы одним пользователем, другой может заблокировать этот документ...
    А еще до выхода из системы могут снять пометку на удаление с документа...
    Еще с десяток вариантов привести?
    Никогда не оставляйте на потом то, что НЕОБХОДИМО сделать в настоящий миг... Потома может и неступить!
     
  20. kaa

    kaa Гость

    про косяки FormEx то же можно с десяток примеров привести :)
     
Загрузка...

Поделиться этой страницей