Имя: Пароль:
1C
 
УФ на сервере не вызывается процедура глобального серверного модуля?
0 Elf56
 
04.09.17
13:13
Всем доброго времени суток Имеется 1С:Предприятие 8.3 (8.3.10.2466)

Конфа самописная с использованием БСП.

Не могу понять почему так происходит. Перевожу документ на управляемые формы с обычных. Есть Экспортная процедура ИнициализацияМеханизмаПечати находящаяся в глобальной общем модуле со свойствами 1. Глобальный 2. Сервер 3. Клиент (обычное приложение) 4. Вызов сервера.

В документе при открытии вот так вызываю нужную процедуру

&НаСервере
Процедура ПриОткрытииНаСервере(ДействиеПечать, ДействиеВыбратьПечать, ДействиеВыбратьФайл)
    
    // Инициализация механизма печати
    ИнициализацияМеханизмаПечати(
        ЭтаФорма,
        Элементы,
        Элементы.ОсновныеДействияФормы,
        Элементы.ДействияФормы,
        ДействиеПечать,
        ЭтотОбъект,
        Объект.мСписокМакетов,
        ДействиеВыбратьПечать,
        ДействиеВыбратьФайл,
        Объект.мКнопкаПоУмолчанию
    );
    
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ДействиеПечать = Новый Действие("ДействияФормыДействиеПечать");
    ДействиеВыбратьПечать = Новый Действие("ДействияФормыДействиеВыбратьПечатнуюФормы");
    ДействиеВыбратьФайл = Новый Действие("ДействияФормыДействиеВыбратьФайл");
    ПриОткрытииНаСервере(ДействиеПечать, ДействиеВыбратьПечать, ДействиеВыбратьФайл);
    
КонецПроцедуры

Ругается на то, что

{Документ.СторнированиеОплаты.Форма.ФормаДокументаУФ.Форма(81,2)}: Процедура или функция с указанным именем не определена (ИнициализацияМеханизмаПечати)
    <<?>>ИнициализацияМеханизмаПечати( (Проверка: Сервер)


Почему так ведь общий модуль компилируется на стороне сервера и вызов тоже происходит со стороны сервера?

Всем заранее спасибо.
1 1dvd
 
04.09.17
13:14
ИмяМодуля.ИнициализацияМеханизмаПечати(...
2 Elf56
 
04.09.17
13:16
Пишу вот так

сХранилищеДополнительнойИнформации.ИнициализацияМеханизмаПечати(

Выдает ошибку

{Документ.СторнированиеОплаты.Форма.ФормаДокументаУФ.Форма(81,2)}: Переменная не определена (сХранилищеДополнительнойИнформации)
    <<?>>сХранилищеДополнительнойИнформации.ИнициализацияМеханизмаПечати( (Проверка: Сервер)
3 Elf56
 
04.09.17
13:18
Хотя имя модуля копирую
4 Elf56
 
04.09.17
13:46
поднял
5 Fedor-1971
 
04.09.17
13:52
(4) ИнициализацияМеханизмаПечати( - поищи глобальным поиском по общим модулям, определишься где она есть, проверь флажки на модуле и пиши как в (1)
6 Вафель
 
04.09.17
13:59
какие флажки у модуля?
7 Fedor-1971
 
04.09.17
14:03
(6) Клиент(упр.приложение), Сервер, Внешнее соединение, Клиент (обычное приложение), Вызов сервера и т.д.
8 Elf56
 
04.09.17
14:24
Проверил еще раз. Не где больше эта процедура не встречается как в общем модуле сХранилищеДополнительнойИнформации, а его флажки (свойства) я выше описал. Причем на обычных формах все работает, а на управляемых нет
9 Fedor-1971
 
04.09.17
14:37
(8) возможно, конфликт  Глобальный (и так доступен наКлиенте и наСервере) и Сервер (живёт только наСервере), для ОФ срабатывает Глобальный и всё работает, для УФ в первую очередь  предполагается контекст НаКлиенте.
Если очень нужно оставить флажки на месте оберни код инструкциями препроцессора #Если наСервере #КонецЕсли
10 Elf56
 
04.09.17
14:44
ААА все нашел косяк в самом общем модуле стоит выше на 10 процедур условие

#Если Клиент Тогда

так, как очень высоко сразу не заметил, но ведать не зря там это условие поставили, как теперь сделать так, чтобы все правильно работало если я скажем уберу это условие только с одной процедуры к чему это приведет не известно
11 Elf56
 
04.09.17
14:47
Вынес процедур общего модуля за #Если Клиент Тогда

ошибки посыпались сервера в этой процедуре ИнициализацияМеханизмаПечати ой ну и гемор с этими УФ
12 Fedor-1971
 
04.09.17
14:50
(10) так попробуй и узнаешь. Проверь поиском где вызываются процедуры из инструкций препроцессора

(11) вызывай свою процедуру в ПриОткрытии и не трогай препроцессор. (лишний раз ломанёшься наСервер и всё, за то код общих модулей останется стандартным)
13 Elf56
 
04.09.17
15:05
(12) да дело то в чем свойство "Клиент (управляемое приложение)" в общем модуле не стоит, а вызов получится из управляемого клиента, если поставить это свойство в модуле ошибки посыпятся во всем модуле. Вот и запара получается не знаю что делать
14 Вафель
 
04.09.17
15:06
а почему не пользуешься типовыми механизмами БСП?
15 Elf56
 
04.09.17
15:08
(14) например это какие ?
16 Fedor-1971
 
04.09.17
15:19
(13) я не про флажок модуля, а про препроцессор, возвращай назад свою процедуру в обёртку НаКлиенте и вызов её перенеси из ПриСозданииНаСервере в ПриОткрытии
17 Elf56
 
04.09.17
15:24
(16) так я же написал что я так и сделал

вот такая ошибка вылезает

{Документ.СторнированиеОплаты.Форма.ФормаДокументаУФ.Форма(265,2)}: Процедура или функция с указанным именем не определена (ИнициализацияМеханизмаПечати)
    <<?>>ИнициализацияМеханизмаПечати( (Проверка: Тонкий клиент)
18 Elf56
 
04.09.17
15:28
это все из за того, что нет в этом общем модуле установленного свойства "Клиент (управляемое приложение)"
19 Fedor-1971
 
04.09.17
15:32
(18) возможно что и так, посмотри на ИТС как 1С рекомендует расставлять флажки. Тут остаётся рулить обёрткой процедур препроцессором если нужен смешанный режим работы
20 Вафель
 
04.09.17
16:31
смешанные модули: клиент-сервер очень не рекомендуются, только для реальных случаев, когда контекст совсем не важен