Имя: Пароль:
1C
1С v8
Вызов серверных процедур управляемых форм из общего модуля
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
В общем судя по
http://downloads.v8.1c.ru/content//Platform/8_3_13_1198/1cv8upd_8_3_13_1198.htm#e8358d91-2063-11e8-a3f7-0050569f678a
эту багофичу прикрыли в 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, у ранее размещенных в модулях форм процедур Подключаемый_ВыполнитьКомандуНаСервере необходимо добавить ключевое слово Экспорт