Всем доброго дня

Типовая УТ 11.4.13.99, платформа 8.3.18.1289. Добавлено одно расширение, в котором есть только одна процедура &После("ЗаполнитьПоЗаказуКлиента") (документ "Операции по платежной карте" или "Эквайринговые операции", модуль объекта). В типовой процедуре в последней строчке кода, параметр "ДокументОснование" имеет правильное значение - ссылка на документ, но после переходу в расширение, меняет тип на "Структура", в которой нет ссылки на документ. Между завершением типовой процедуры и началом выполнения расширяемой процедуры, ничего не выполняется (проверял через замер производительности).

```1c
    Процедура ЗаполнитьПоЗаказуКлиента(
    Знач ДокументОснование,
    ДанныеЗаполнения)

    // Заполним данные шапки документа.
    ТекстЗапроса = "
    |ВЫБРАТЬ
    | ВЫБОР КОГДА ДанныеДокумента.БанковскийСчет <>

    ........................................

    // Заполнение суммы шапки документа
    СуммаДокумента = РасшифровкаПлатежа.Итог("Сумма"); //ДокументОснование здесь верный, ссылка на документ

    КонецПроцедуры

    &После("ЗаполнитьПоЗаказуКлиента")
    Процедура ттт_ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения)

    Сообщить("Стоп"); //ДокументОснование уже имеет тип структура

    КонецПроцедуры
```

Почему так может происходить?
---
Ну, в ЗаполнитьПоЗаказуКлиента и передается одно и то же значение, только одно со словом Знач, другое без.
---
Передайте в расширение документОснование без Знач.
---
Расширение не даст такое сделать, расширяемый метод просто не применится

Тест: Обычная: Ошибка применения модуля "Тест Документ.ОперацияПоПлатежнойКарте.МодульОбъекта". Список параметров метода "ттт_ЗаполнитьПоЗаказуКлиента" не соответствует методу "ЗаполнитьПоЗаказуКлиента".
---
Почистите кэш. Такое не может быть, скорее всего все-таки между вашим модулем и типовым происходит изменение значения этого реквизита.
---
Кэш чистил, пробовал на разных базах рабочей и демке этого же релиза, результат тот же
---
Неопределено, это еще как-то логично. Но не структура же.
(3) А у той структуры есть свойства ?
---
Неопределено, это еще как-то логично.
Не суть, может быть не так наглядно, но в Парам1 в расширении передается то, что было присвоено в Парам2 в основной конфигурации.
---
Но парам2 это парам1, так же указано в первом вызове.
---
Одно взято по значению, другое - по ссылке, это разные переменные, в них разные значения на конец выполнения процедуры в основной конфигурации.
---
А в чем разница по значению и по ссылке? В чем разница переменных? ;)
---
https://its.1c.ru/db/metod8dev/content/2606/hdoc
---
Я то это знаю... мне было интересно как Вы это понимаете.
---
Удовлетворил ваш интерес ?
---
Мне думается что Вы не до конца понимаете разницу между передачей по ссылке и по значению. Это ИМХО.;) не обращайте внимания, пятница... дописал трудный модуль... ;)
---
Ну да, ну да: "Я сам знал, просто тебя проверял".
---
(14) Одно взято по значению, другое - по ссылке, это разные переменные, в них разные значения на конец выполнения процедуры в основной конфигурации. Вот как то так запутанно фраза написана... впрочем не имеет это значения. ;) Право, извините.
---
Возможно так нагляднее будет:
---
Сообщение было скрыто модератором.
---
в них разные значения внутри основной функции, но в расширение передается переменные, которые передавались и в основной конфигурации, а не переменные из процедуры основной конфигурации. А на момент вызова процедуры в расширение, эта переменная была изменена.
---
У структуры есть свойства и такое чувство как будто эта структура копируется из другого параметра "ДанныеЗаполнения"
---
Ну, в ЗаполнитьПоЗаказуКлиента и передается одно и то же значение, только одно со словом Знач, другое без.
---
Не совсем мне понятно почему, но доработка этой процедуры действительно решила проблему. Получается При создание на основании Заказа клиента вызывается :

1) процедура "Обработка заполнения", далее она вызывает
2) процедуру "ЗаполнитьПоЗаказуКлиента"
3) далее каким то образом снова срабатывает "Обработка заполнения"
4) и только после вызывается &После("ЗаполнитьПоЗаказуКлиента")

Не совсем понятен мне только 3 пункт
---
Не совсем понятен мне только 3 пункт Так заполнение вызывается из Обработки заполнения и первым параметром ДанныеЗаполнения, и вторым параметром данныезаполнения в конце процедуры параметры становятся одинаковые

При входе в процедуру Данные заполнения это докоснование при выходе это уже структура а затем идем в расширение

Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда

  ЗаполнитьПоЗаказуКлиента(
   ДанныеЗаполнения,
   ДанныеЗаполнения);
---
Точка остановки не срабатывает на "Обработки заполнения" повторно, после того завершится "ЗаполнениеПоЗаказуКлиента" и через замер производительности не видно чтобы она повторно вызывалась
---
А второго входа и не надо. Перед выполнением Заполнение по заказу клиента ДанныеЗаполнения (первый параметр - это ссылка на документ основание, после выполнения это уже структура оба параметра одинаковые, и теперь идем в расширение.
---
Разобрался наконец-то, спасибо за объяснения)
---
Доработанный код просто взял из ПКО и приложу скрин результата
---
Проверил на чистой конфигурации. Да, действительно, такое происходит.
---
И ваш вариант отрабатывает правильно.
---
С чего это вдруг?
---
Дополню, что всё работает для документа "Приходный кассовый ордер", там аналогично передаётся документ основание по значению и он в расширяемой процедуре не изменяется на структуру
---
используйте &Вместо

```1c
    &Вместо("ЗаполнитьПоЗаказуКлиента")
    Процедура ттт_ЗаполнитьПоЗаказуКлиента(Знач ДокументОснование, ДанныеЗаполнения)

    ПродолжитьВызов(ДокументОснование, ДанныеЗаполнения);
    Сообщить("Стоп"); //ДокументОснование Останется ссылкой

    КонецПроцедуры
```
---
Не используйте вместо... это зло, даже так "ЗЛО ЗЛОСТНОЕ" ;)
---
ну, Вас никто не заставляет. Даже расширение можете не использовать.
А так, это рекомендация 1С.
---
В данном случае сделал через &ИзменениеИКонтроль, думаю так лучше будет
---
Ну это нормально... ;)