Изменяется параметр переданный по значению в расширении
Всем доброго дня
Типовая УТ 11.4.13.99, платформа 8.3.18.1289. Добавлено одно расширение, в котором есть только одна процедура &После("ЗаполнитьПоЗаказуКлиента") (документ "Операции по платежной карте" или "Эквайринговые операции", модуль объекта). В типовой процедуре в последней строчке кода, параметр "ДокументОснование" имеет правильное значение - ссылка на документ, но после переходу в расширение, меняет тип на "Структура", в которой нет ссылки на документ. Между завершением типовой процедуры и началом выполнения расширяемой процедуры, ничего не выполняется (проверял через замер производительности).
Почему так может происходить?
Типовая УТ 11.4.13.99, платформа 8.3.18.1289. Добавлено одно расширение, в котором есть только одна процедура &После("ЗаполнитьПоЗаказуКлиента") (документ "Операции по платежной карте" или "Эквайринговые операции", модуль объекта). В типовой процедуре в последней строчке кода, параметр "ДокументОснование" имеет правильное значение - ссылка на документ, но после переходу в расширение, меняет тип на "Структура", в которой нет ссылки на документ. Между завершением типовой процедуры и началом выполнения расширяемой процедуры, ничего не выполняется (проверял через замер производительности).
Процедура ЗаполнитьПоЗаказуКлиента(
Знач ДокументОснование,
ДанныеЗаполнения)
// Заполним данные шапки документа.
ТекстЗапроса = "
|ВЫБРАТЬ
| ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <>
........................................
// Заполнение суммы шапки документа
СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма"); //ДокументОснование здесь верный, ссылка на документ
КонецПроцедуры
&После("ЗаполнитьПоЗаказуКлиента")
Процедура ттт_ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения)
Сообщить("Стоп"); //ДокументОснование уже имеет тип структура
КонецПроцедуры
ПоказатьПочему так может происходить?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(12) Расширение не даст такое сделать, расширяемый метод просто не применится
Тест: Обычная: Ошибка применения модуля "Тест Документ.ОперацияПоПлатежнойКарте.МодульОбъекта". Список параметров метода "ттт_ЗаполнитьПоЗаказуКлиента" не соответствует методу "ЗаполнитьПоЗаказуКлиента".
(14) в них разные значения внутри основной функции, но в расширение передается переменные, которые передавались и в основной конфигурации, а не переменные из процедуры основной конфигурации. А на момент вызова процедуры в расширение, эта переменная была изменена.
(13) Не совсем мне понятно почему, но доработка этой процедуры действительно решила проблему. Получается При создание на основании Заказа клиента вызывается :
1) процедура "Обработка заполнения", далее она вызывает
2) процедуру "ЗаполнитьПоЗаказуКлиента"
3) далее каким то образом снова срабатывает "Обработка заполнения"
4) и только после вызывается &После("ЗаполнитьПоЗаказуКлиента")
Не совсем понятен мне только 3 пункт
1) процедура "Обработка заполнения", далее она вызывает
2) процедуру "ЗаполнитьПоЗаказуКлиента"
3) далее каким то образом снова срабатывает "Обработка заполнения"
4) и только после вызывается &После("ЗаполнитьПоЗаказуКлиента")
Не совсем понятен мне только 3 пункт
(20)
При входе в процедуру Данные заполнения это докоснование при выходе это уже структура а затем идем в расширение
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ЗаполнитьПоЗаказуКлиента(
ДанныеЗаполнения,
ДанныеЗаполнения);
Не совсем понятен мне только 3 пункт
Так заполнение вызывается из Обработки заполнения и первым параметром ДанныеЗаполнения, и вторым параметром данныезаполнения в конце процедуры параметры становятся одинаковые
При входе в процедуру Данные заполнения это докоснование при выходе это уже структура а затем идем в расширение
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
ЗаполнитьПоЗаказуКлиента(
ДанныеЗаполнения,
ДанныеЗаполнения);
(1) используйте &Вместо
&Вместо("ЗаполнитьПоЗаказуКлиента")
Процедура ттт_ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения)
ПродолжитьВызов(ДокументОснование, ДанныеЗаполнения);
Сообщить("Стоп"); //ДокументОснование Останется ссылкой
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот