Имя: Пароль:
1C
1С v8
Вызов процедуры с директивой &НаСервере
,
0 ender10
 
26.09.13
15:28
Добрый день, возникла такая проблема, пытаюсь из модуля справочника обратиться к функции модуля обработки, у обработки 2 функции, у одной из них стоит директива &НаСервере, к ней не могу обратиться, а к другой (без деректив) могу, объясните в чем дело и как обойти?
1 H A D G E H O G s
 
26.09.13
15:32
Убрать директиву &НаСервере
2 ender10
 
26.09.13
15:35
не вариант, типовая функция, хочу к ней обращаться просто
3 PiVa123
 
26.09.13
15:36
&НаСервере - это контекстная директива, от этого и плясать.
как минимум &НаСервереБезКонтекста
4 ender10
 
26.09.13
15:39
меня интересует как я могу вызвать эту функцию, она типовая поэтому в ней менять ничего не буду
5 Feunoir
 
26.09.13
15:40
(0) У функции директива Экспорт стоит?
6 ender10
 
26.09.13
15:44
да, функция экспортная
7 Feunoir
 
26.09.13
15:54
Если у функции не указан контекст, то она по умолчанию считается серверной. Это первое. Второе - директивы используются только в модулях форм, модулях команд и общем модуле управляемого приложения (с) справка по 1С.

Что-то ты не договариваешь. Может что-то в именах функций не так?
8 ender10
 
26.09.13
16:00
нет, все точно
директива у функции стоит в модуле обработки
9 GROOVY
 
26.09.13
16:00
Я извиняюсь, а нахрена директивы компиляции в модуле обработки. Это же не форма и не команда.
10 GROOVY
 
26.09.13
16:01
(7) Ой, я не заметил...
11 ender10
 
26.09.13
16:03
нахрена директива, это другой вопрос
кому интересно
консолидация 2.1.2.1
обработка НастройкаПараметровОтчетовПоУмолчанию
если не верите
12 ender10
 
26.09.13
16:07
кстати вдогонку, если функция в общем модуле с диретивой &наСервере, к ней тоже не могу обратиться
13 eklmn
 
гуру
26.09.13
16:15
скопируй функцию к себе
14 GROOVY
 
26.09.13
16:15
(12) Вызов сервера, есть такая галка в общем модуле.
15 GROOVY
 
26.09.13
16:16
А еще очень рекомендую почитать о том как работают компиляторы в 3-х звенках.
16 ender10
 
26.09.13
16:20
с модулем понятно, а с вызовом функции обработки?
17 GROOVY
 
26.09.13
16:22
Вызов из формы? Нужно получить обработку как прикладной объект "РеквизитФОрмыВЗначение".
18 GROOVY
 
26.09.13
16:22
+17 и не надо там директивы компиляции указывать. Ну пожалуйста!
19 ender10
 
26.09.13
16:23
нет, вызов из модуля
20 ender10
 
26.09.13
16:23
объекта
21 GROOVY
 
26.09.13
16:25
Вызов из модуля объекта функции из модуля объекта ? То есть вызов функции их того же модуля?
22 ender10
 
26.09.13
16:29
вызов из модуля одной обработки функции другой обработки, у вызываемой функции директива компиляции &НаСервере и вызов не происходит "поле объекта не обнаружено"
23 GROOVY
 
26.09.13
16:31
(22) Какая в *опу директива компиляции?!

Получаешь обработку как объект? Покажи код.
Вызов от куда производишь? Из модуля формы или из модуля объекта.

Телепатов тут бывает, но редко.
24 GROOVY
 
26.09.13
16:33
Модуль обработки1:

Процедура ВызватьФункцию()

Обработка2 = Обработки.Обработка2.ПолучитьОбъект();
А = обработка2.ИмяВызываемойФункции();

КонецПроцедуры

-----------------------------------------------

Модуль обработки2

Функция ИмяВызываемойФункции() Экспорт
Возврат 1;
КонецФункции
25 ender10
 
26.09.13
16:34
вызов из модуля одной обработки функции

не надо быть телепатом, чтобы понять модуль обработки это модуль объекта

код

Обработка = Обработки.НастройкаПараметровОтчетовПоУмолчанию.Создать();
Обработка.ВерсияОрганизационнойСтруктуры = Процесс.ВерсияОрганизационнойСтруктуры;
Обработка.ПериодОтчета = Процесс.ПериодСценария;
Обработка.Сценарий     = Процесс.Сценарий;
        
Обработка.Инициализация();
        
ЕстьОшибки = Ложь;
ТаблицаВыверки = Обработка.ПолучитьТаблицуПолномочий(, , , , , , ЕстьОшибки);

на последней строке ошибка, у ПолучитьТаблицуПолномочий стоит директива &НаСервере
26 GROOVY
 
26.09.13
16:37
ПолучитьТаблицуПолномочий - это функция в модуле обработки/объекта? И там стоит директива компиляции?
27 ender10
 
26.09.13
16:42
именно
28 GROOVY
 
26.09.13
16:43
(27) Я конечно сейчас идиотом полным покажусь, но нафига там директива компиляции?!
29 eklmn
 
гуру
26.09.13
16:44
(28) а это писайтелей консолидайии надо спросить я так полагаю :)
30 ender10
 
26.09.13
16:45
обработка типовая, не могу сказать зачем
31 Feunoir
 
26.09.13
16:51
(30) Покажи код определения функции ПолучитьТаблицуПолномочий. И пару-тройку строк до/после.
32 Feunoir
 
26.09.13
16:52
+(30) и какой релиз платформы/режим запуска
33 ender10
 
26.09.13
16:58
запуск в обычном приложении
18.109 платфомра
34 ender10
 
26.09.13
16:58
кода много, строк 200
35 Shrek_yar
 
26.09.13
16:59
(33)на пустой пробовал?
у меня все вызывает

Функция ПерваяБезДирективы()экспорт
    
КонецФункции // ПерваяБезДирективы()

&НаСервере
Функция СДирективой()экспорт


КонецФункции // СДирективой()
36 Shrek_yar
 
26.09.13
17:00

Функция МодульФормы() Экспорт
    Обработка  = Обработки.Обработка1.Создать();
    Обработка.СДирективой();
    Обработка.ПерваяБезДирективы();
КонецФункции // МодульФормы()

37 Feunoir
 
26.09.13
17:03
(34) да всю не нужно. только шапку
38 YF
 
26.09.13
17:03
А текст ошибки увидим?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.