0 голосов

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

спросил от Начинающий (122 баллов) 1 в категории 1С, Парус

8 Ответы

0 голосов
ответил от Начинающий (572 баллов) 1 1 2
 
Лучший ответ

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

0 голосов
ответил от (14 баллов)

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

0 голосов
ответил от (14 баллов)

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

0 голосов
ответил от (56 баллов)

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

0 голосов
ответил от Начинающий (572 баллов) 1 1 2

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

0 голосов
ответил от Начинающий (572 баллов) 1 1 2

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

0 голосов
ответил от Начинающий (572 баллов) 1 1 2

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

0 голосов
ответил от (30 баллов)

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

Добро пожаловать на сайт Эксперты онлайн, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...