Технологии

Решено

проблемма 1C - вопрос №11173

недавно столкнулся с такой проблеммой. в общем работа программы заключается в следующем: при формировании продок документа оплаты создается другой документ, а при удалении или распроведении документа созданный документ должен удаляться… оно так и работает при ручном формировании документов оплаты и распроведении, все удаляется. Вопрос: почему не выполняется команда ПриРаспроведении из глобального модуля при попытки распровести из внешнего файла обработки?

Дополнение автора от июнь 18, 2009 г., 12:23:22

версия программы 7.7 своя конфигурация, в главном модуле написано, Процедура ПриОтменеПроведенияДокумента(Докум) Если Докум.ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда Предупреждение("Нельзя отменять проведение документов с датой, более ранней, чем дата запрета редактирования документов!"); СтатусВозврата(0); Возврат; КонецЕсли; Если (Докум.вид() = "Выписка") ИЛИ (Докум.вид() = "ПриходныйОрдер") Тогда счФактура = СоздатьОбъект("Документ.СчетФактура"); счФактура.ВыбратьДокументы(Докум.ДатаДок, Докум.ДатаДок); Пока счФактура.ПолучитьДокумент() = 1 Цикл Если счФактура.ДокументОснование = Докум.ТекущийДокумент() Тогда счФактура.Удалить(1); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры процедура не выполняется если из внешней обработки . вот код Процедура Сформировать() выписка = СоздатьОбъект("Документ.Выписка"); выписка.ВыбратьДокументы(Дата1, Дата2); Пока выписка.ПолучитьДокумент() = 1 Цикл выписка.СделатьНеПроведенным(); Сообщить("распроведен " + выписка.ТекущийДокумент()); КонецЦикла; прихордер = СоздатьОбъект("Документ.ПриходныйОрдер"); прихордер.ВыбратьДокументы(Дата1,Дата2); Пока прихордер.ПолучитьДокумент() = 1 Цикл прихордер.СделатьНеПроведенным(); Сообщить("распроведен " + прихордер.ТекущийДокумент()); КонецЦикла; КонецПроцедуры

Дополнение автора от июль 3, 2009 г., 17:31:09

спасибо ребята вы очень сильно помогли особенно "O-Planet", O-Planet как те добавить бал?

Владимир Гусев июнь 15, 2009 г.

  • Всего ответов: 8

  • Slach - аватарка

    Slach

    657-й в Технологиях

    какая версия платформы? вообще обработчик события называется ПриОтменеПроведения если я правильно помню

    июнь 15, 2009 г.
  • Роман Курганников - аватарка

    Роман Курганников

    1143-й в Технологиях

    Добрый день! Сообщите версию платформы, название и версию конфигурации. С каким документом проблемы? Это типовое решение или внедренная конфигурация?

    июнь 15, 2009 г.
  • Олег Пономаренко - аватарка

    Олег Пономаренко

    9-й в Технологиях

    Потому чта процедура ПриРаспроведении не является предопределенной процедурой, которая вызывается по умолчанию, когда отменяется проведение документа. Таковой является процедура ОбработкаУдаленияПроведения(), которая размещается в модуле документа. Назначение: Предопределенная процедура обработки удаления проведения документа или удаления проведенных документов в любом режиме.

    июнь 15, 2009 г.
    Ответ понравился автору
    Лучший ответ по мнению автора
  • turtle - аватарка

    turtle

    523-й в Технологиях

    По скольку при проведении/распроведении делаются манипуляции с другими документами, то это явно не типовое решение простое решение - пройтись отладчиком и поглядеть на ошибку обратить внимания на права доступа к оъектам и лучше покажи часть кода с ошибкой выполнения

    июнь 17, 2009 г.
  • Олег Пономаренко - аватарка

    Олег Пономаренко

    9-й в Технологиях

    1. Попробуйте в глобальнике указать Процедура ПриОтменеПроведенияДокумента(Докум) ЭКСПОРТ Если не помежет, то нужно в обработке перед строкой Выписка.СделатьНеПроведенным(); добавить строку ПриОтменеПроведенияДокумента(Выписка);

    июнь 18, 2009 г.
  • Олег Пономаренко - аватарка

    Олег Пономаренко

    9-й в Технологиях

    также и перед строкой Прихордер.СделатьНеПроведенным(); добавьте Процедура ПриОтменеПроведенияДокумента(Прихордер)

    июнь 18, 2009 г.
  • Олег Пономаренко - аватарка

    Олег Пономаренко

    9-й в Технологиях

    Вот не знаю! Наверное, в моем профайле можно что-то написать просто

    июль 4, 2009 г.
  • Розальев Андрей - аватарка

    Розальев Андрей

    61-й в Технологиях

    а) Распроведение сч/ф при распроведении документа-основания - совершенно логичное решение, применяется во всех типовых конфигурациях б) В семерке обработчики событий НЕ ВЫЗЫВАЮТСЯ при ПРОГРАММНОЙ инициализации событий. Т.е. если Вы из внешней обработки (или любого другого места) производите программные манипуляции с объектом, то Вы должны САМОСТОЯТЕЛЬНО вызывать обработчики тех событий, которые автоматически вызываются при интерактивной работе. Решение. а) Процедуру глабального модуля сделать экспортируемой, как тут уже указывалось. Процедура ПриОтменеПроведенияДокумента(Докум) ЭКСПОРТ б) В том месте, где Вы распроводите документ, после того, как он записан в новом статусе, вызвать программно обработчик: выписка.СделатьНеПроведенным(); ПриОтменеПроведенияДокумента(выписка.ТекущийДокумент()); Замечу: в восьмерке все обработчики вызываются одинаково как при интерактивных, так и при программных действиях над объектом (есть исключения, но в данном вопросе это не актуально)

    июль 17, 2009 г.
    Ответ понравился автору

Похожие вопросы

Ошибка записи дампа

июнь 25, 2012 г.

Технологии