Имя: Пароль:
1C
1С v8
Как из обработки в расширении обратиться к неэкспортной процедуре модуля документа?
0 Oblako486
 
24.11.20
20:57
УТ 11.4
В обработке из расширения, создаем документ ЗаказПокупателя. И хотим его заполнить с помощью процедуры ИнициализироватьДокумент()

Документ = Документы.ЗаказКлиента.СоздатьДокумент();
документ.Дата = Объект.Дата;
Документ.Записать();
документ.ИнициализироватьДокумент(ДанныеЗаполнения); // Выдается ошибка: "Метод объекта не обнаружен (ИнициализироватьДокумент)"
1 Beduin
 
24.11.20
21:00
Ты к неэкспортной ниоткуда не обратишься.
2 Oblako486
 
24.11.20
21:01
(1) эх, я тоже так думаю, но надеялся на лучшее.
3 Oblako486
 
24.11.20
21:03
(1) ну можно перенести процедуру в расширение и сделать экспортной, но после обновления она будет отличаться от оригинальной. Есть еще варианты?
4 Garykom
 
гуру
24.11.20
21:15
(3) перенеси в расширение &Перед и вызывай из своей экспортной, подставляя/подменяя ДанныеЗаполнения
5 Oblako486
 
24.11.20
21:30
(4) Похоже вот простое решение:

В расширении в модуле объекта

Процедура Расш_ИнициализироватьДокумент(ДанныеЗаполнения) Экспорт

    ИнициализироватьДокумент(ДанныеЗаполнения);
    
КонецПроцедуры

и дальше в обработке

документ.Расш_ИнициализироватьДокумент(ДанныеЗаполнения);
6 Конструктор1С
 
25.11.20
04:06
(0) не страдай муйнёй

Документ.Заполнить(ДанныеЗаполнения);
7 Oblako486
 
25.11.20
17:31
(6) Это подходит для заполнения на основании. Для других документов работает. Именно для ЗаказКлиента похоже что нет.
8 Anton1307
 
25.11.20
17:52
Описываешь с конструкцией &Вместо

&Вместо("ИнициализироватьДокумент")
Функция Расш_ИнициализироватьДокумент(ДанныеЗаполнения)
    
    Возврат ПродолжитьВызов(ДанныеЗаполнения);
    
КонецФункции // Расш_ИнициализироватьДокумент()

Вызываешь так:
Расш_ИнициализироватьДокумент(ДанныеЗаполнения)
9 Oblako486
 
25.11.20
19:57
(8) не нужно это делать, не запутывай. То что я написал в (5) работает нормально.
AdBlock убивает бесплатный контент. 1Сергей