|
Вызов функции наСервере из общего модуля. | ☑ | ||
---|---|---|---|---|
0
Альбатрос
12.09.17
✎
06:27
|
Поясните на пальцах, есть общий модуль, установлены галки:
- Клиент (Управляемое приложение) - Сервер - Вызов сервера В модуле вот такой код: &НаКлиенте Процедура ПересчитатьНаценку(ТекущаяСтрока) Экспорт Характеристика = ТекущаяСтрока.Характеристика; Если НЕ ЗначениеЗаполнено(Характеристика) тогда Возврат; КонецЕсли; СтруктураХарактеристики = ВернутьДанныеПоХарактеристике(Характеристика); Конецпроцедуры &НаСервере Функция ВернутьДанныеПоХарактеристике(Характеристика) Экспорт СтруктураВозврата = Новый Структура("Ошибка", Ложь); Возврат СтруктураВозврата; КонецФункции Почему не видна функция ВернутьДанныеПоХарактеристике() ? |
|||
1
Филиал-msk
12.09.17
✎
06:43
|
Потому что в текущем контексте она на сервере, а ты на клиенте. Галка вызов сервера будет использоваться только в случае явного указания модуля. Вызывай через точку.
|
|||
2
Рэйв
12.09.17
✎
06:57
|
(0)Чтобы было как ты хочешь - сделай модуль глобальным.
А иначе придется указывать пространство имен, т.е. название общего модуля. |
|||
3
Альбатрос
12.09.17
✎
07:19
|
(1) (2) Так все равно не работает =)
&НаКлиенте Процедура ПересчитатьНаценку(ТекущаяСтрока) Экспорт Характеристика = ТекущаяСТрока.Характеристика; Если НЕ ЗначениеЗаполнено(Характеристика) Тогда Возврат; КонецЕсли; СтруктураХарактеристики = АфсОбщийМодуль.ВернутьДанныеПоХарактеристике(Характеристика); Если СтруктураХарактеристики.Ошибка тогда Возврат; Сообщить("Ошибка определения наценки по строке:" + ТекущаяСтрока.НомерСтроки); КонецЕсли; ТекущаяСтрока.НаценкаРубли = ТекущаяСтрока.Цена - СтруктураХарактеристики.ЦенаЗакупаСНДС; ТекущаяСтрока.ПроцентНаценки = (ТекущаяСтрока.Цена*100)/СтруктураХарактеристики.ЦенаЗакупаСНДС - 100; Конецпроцедуры &НаСервере Функция ВернутьДанныеПоХарактеристике(Характеристика) Экспорт СтруктураВозврата = Новый Структура("Ошибка", Ложь); Если Не ЗначениеЗаполнено(Характеристика) тогда СтруктураВозврата.ошибка = Истина; Возврат СтруктураВозврата; КонецЕсли; СтруктураВозврата.Вставить("ЦенаЗакупаСНДС",Характеристика.УАС_ЦенаЗакупкиСНДС); СтруктураВозврата.Вставить("ЦенаЗакупаСНДС",Характеристика.УАС_ЦенаЗакупкиБезНДС); Возврат СтруктураВозврата; КонецФункции {ОбщийМодуль.афсОбщийМодуль.Модуль(413)}: Метод объекта не обнаружен (ВернутьДанныеПоХарактеристике) СтруктураХарактеристики = АфсОбщийМодуль.ВернутьДанныеПоХарактеристике(Характеристика); |
|||
4
Филиал-msk
12.09.17
✎
07:34
|
Потому что толстый клиент.
|
|||
5
Альбатрос
12.09.17
✎
07:37
|
(4) Да, на толстом работает. А как тогда правильно сделать, чтоб работало и на толстом, и на тонком.
|
|||
6
Мимохожий Однако
12.09.17
✎
07:41
|
РеквизитФормыВЗначение()
|
|||
7
Альбатрос
12.09.17
✎
07:42
|
(6) Не могу сообразить, как мне это поможет. Поясни пожалуйста.
|
|||
8
Feunoir
12.09.17
✎
07:44
|
(0) Потому что то, что ты пишешь - извращение. Общий модуль должен в полном виде быть или на сервере, или на клиенте. Проще запомнить, что директивы &НаСервере, &НаКлиенте и т.п. в общем модуле указываться не должны.
Разбиралось ещё 5 лет назад v8: Директивы компиляции в общих модулях |
|||
9
Мимохожий Однако
12.09.17
✎
07:52
|
(7) Создай в модуле формы промежуточную процедуру &НаСервере, которая будет смотреть в твой общий модуль.
|
|||
10
Альбатрос
12.09.17
✎
08:03
|
(8) Спс за ссылку
(9) Судя по всему так и придется делать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |