|
|
Вызов серверных процедур управляемых форм из общего модуля |
☑ |
|
0
gae
04.10.19
✎
13:20
|
Не очень разбираюсь в управляемых формах.
В ERP, в формах, есть такая процедура (БСП-шная):
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
Вызывается она из клиентского общего модуля, так:
Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
Все работает.
А у меня в другой конфе не видит процедуру Подключаемый_ВыполнитьКомандуНаСервере(), работает только если ей Экспорт поставить.
В чем фишка, как так в ERP работает без Экспорт?
|
|
|
1
ptiz
04.10.19
✎
13:23
|
(0) "Вызывается она из клиентского общего модуля," - а точно? Поставь в ней точку останова и посмотри стек вызовов.
|
|
|
2
gae
04.10.19
✎
13:27
|
(1) Это БСП-шный общий модуль ПодключаемыеКомандыКлиент, в нем только флаг Клиент, отладкой видно Клиент: "Тонкий клиент:admin (50), SKYLAKE:1563."
|
|
|
3
gae
04.10.19
✎
13:36
|
+(2) А когда в процедуру Подключаемый_ВыполнитьКомандуНаСервере заходит (если находит), то уже "Сервер (файловый вариант)"
|
|
|
4
gae
04.10.19
✎
13:38
|
Если в своей конфе не ставлю Экспорт, то получаю:
Метод объекта не обнаружен (Подключаемый_ВыполнитьКомандуНаСервере)
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(141)}: Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(33)}: ПродолжитьВыполнениеКоманды(Контекст);
...
|
|
|
5
ptiz
04.10.19
✎
13:48
|
Нельзя вызвать НЕэкспортную процедуру форме извне. Даже БСП.
|
|
|
6
gae
04.10.19
✎
13:50
|
(5) Это код из ERP:
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
Работает.
Это выдержка из документации БСП:
● В модуле формы вставить процедуры (обработчики команд):
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, <ОбъектИлиТаблицаФормы>);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, <ОбъектИлиТаблицаФормы>, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, <ОбъектИлиТаблицаФормы>);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Нигде нет "Экспорт"
|
|
|
7
gae
04.10.19
✎
13:59
|
|
|
|
8
gae
04.10.19
✎
14:10
|
В общем судя по
эту багофичу прикрыли в 8.3.13.
У меня платформа 8.3.15, но ERP в режиме совместимости 8.3.12, в моя конфа в режиме 8.3.14.
Вот и все.
|
|
|
9
banco
04.10.19
✎
14:15
|
(6) В новых версиях БСП уже добавили Экспорт.
В связи с изменением поведения платформы 1C:Предприятие 8.3.13, у ранее размещенных в модулях форм процедур Подключаемый_ВыполнитьКомандуНаСервере необходимо добавить ключевое слово Экспорт
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший