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

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

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

Дополнение автора от 03.07.09 18:31:09
спасибо ребята вы очень сильно помогли особенно «O-Planet», O-Planet как те добавить бал?

Лучший ответ по мнению автора

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

Другие ответы

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

Глеб Черняк

Сейчас на сайте
Читать ответы
Посмотреть всех экспертов из раздела Технологии > 1С, Парус
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store