|
Как выполнить процедуру формы документа из внешней обработки ? |
☑ |
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 года, где это реализовано:
|
|
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) Потом попробую проверить ваши советы.
Всем спасибо за советы!!!
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший