Имя: Пароль:
1C
1С v8
Как выполнить процедуру формы документа из внешней обработки ?
,
0 makfromkz
 
18.07.20
08:53
Вот код который я на УФах выполняю в режиме толстого клиента:
&НаСервере

Процедура кмдВыполнитьНаСервере()
    Дата1 = '20160101';
    Дата2 = '20160131235959';
    выбОпер = Документы.ОперацияБух.Выбрать(Дата1, Дата2);
    Пока выбОпер.Следующий() Цикл
        обОпер = выбОпер.ПолучитьОбъект();
        фрмОпер = обОпер.ПолучитьФорму();
        фрмОпер.БУЗаполнитьНУНаСервере();
    КонецЦикла;
        
КонецПроцедуры

фрмОпер - существует, т.е. ПолучитьФорму() отрабатывает, но процедура БУЗаполнитьНУНаСервере() не хочет выполняться,
даже если добавить  к описанию процедуры волшебное слово  Экспорт.
Запускал на платформе 8.3.7

вопрос: до какого релиза платформы можно было вызывать экспортные процедуры формы документа?
1 Волшебник
 
18.07.20
08:55
на сервере нет форм
2 makfromkz
 
18.07.20
09:00
Я же в режиме толстого клиента запускаю.
В отладчике вижу форму, реквизиты формы и все такое.
3 Волшебник
 
18.07.20
09:01
Тогда убери директиву &НаСервере
4 makfromkz
 
18.07.20
09:06
Убрал директиву:
{Форма.Форма.Форма(10)}: Метод объекта не обнаружен (БУЗаполнитьНУНаСервере)
        фрмОпер.БУЗаполнитьНУНаСервере();
5 makfromkz
 
18.07.20
09:07
может быть  разработчики с какого-то релиза запретили вызов процедур из формы?
6 ДенисЧ
 
18.07.20
09:10
А Экспорт у процедуры есть?
7 makfromkz
 
18.07.20
09:10
Хотя пост 2016 года, где это реализовано:   https://helpf.pro/help/view/17389.html
8 makfromkz
 
18.07.20
09:10
Да Экспорт я сразу в документ добавил
9 Волшебник
 
18.07.20
09:17
процедуру кмдВыполнитьНаСервере нужно перенести в общий модуль с флагом "Толстый клиент"
10 Akela has missed
 
18.07.20
10:33
Кстати, а как же работают внешние обработки такие как "заполнение объекта"? Там форма передается в модуль объекта обработки, модуль объекта на сервере - но на сервере форм быть не может))
11 Волшебник
 
18.07.20
10:35
(10)
РеквизитФормыВЗначение
ЗначениеВРеквизитФормы
и
ДанныеФормыВЗначение
ЗначениеВДанныеФормы
12 Akela has missed
 
18.07.20
10:39
ах да, точно
13 Жан Пердежон
 
18.07.20
14:17
(10) может, только их создавать надо на клиенте и явно нельзя на сервер передавать
14 makfromkz
 
18.07.20
16:51
Решил я задачку, оказывается все надо делать на стороне клиента:
&НаКлиенте
Процедура ЗаполнитьНалоговыйНаборЗаписей(ссДок)
    П = Новый Структура("Ключ", ссДок);
    фрмДок = ПолучитьФорму("Документ.ОперацияБухНБ.ФормаОбъекта", П);
    фрмДок.НацбанкНаборЗаписей.Очистить();
    фрмДок.ДокТиповойПриИзмененииНаСервере();
    фрмДок.Записать();
КонецПроцедуры

&НаКлиенте
Процедура кмдВыполнить(Команда)
    Перем мсТаб1;
    мсТаб1 = ПолучитьМАССдоков();
    Для Каждого ссДок Из мсТаб1 Цикл
        ЗаполнитьНалоговыйНаборЗаписей(ссДок)
    КонецЦикла;
КонецПроцедуры

==========
(9) (10) Потом попробую проверить ваши советы.
Всем спасибо за советы!!!