|
Есть вопрос по Общим Модулям | ☑ | ||
---|---|---|---|---|
0
razbiralshik
22.02.13
✎
14:40
|
Подскажите, почему когда ставлю флажки: Сервер, Вызов сервера. То процедуры/функции нормально отрабатываются в управляемых формах. А если добавить флажок: Клиент (Управляемое приложение). Вылазит ошибка, что нету например такой переменной как "Документы" или "Справочники", т.е. грубо говоря, начинает работать в контексте "клиента"... но веть Сервер тоже стоит
|
|||
1
MSII
22.02.13
✎
14:42
|
(0) Ну раскидай процедуры директивами, что где компилироваться должно.
|
|||
2
razbiralshik
22.02.13
✎
14:43
|
(1) нужно создавать отдельно общие модуля для клиента и для сервера?
|
|||
3
razbiralshik
22.02.13
✎
14:44
|
(1) вместе в одном общем модуле они не могут ужиться?
|
|||
4
ДенисЧ
22.02.13
✎
14:45
|
Явно указывай &НаКлиенте или &НаСервере
или #Если Клиент Тогда... |
|||
5
razbiralshik
22.02.13
✎
14:47
|
(4) понятно...
|
|||
6
MSII
22.02.13
✎
14:49
|
(3) Могут при наличии директив компиляции.
|
|||
7
razbiralshik
22.02.13
✎
14:52
|
(4) попробовал, чтото не помогло
|
|||
8
MSII
22.02.13
✎
14:57
|
(7) Значит, накосячил где-то. Текст модуля покажи.
|
|||
9
razbiralshik
22.02.13
✎
14:58
|
(8)
//&НаСервере Функция уфСчетФактураНажатие(Ссылка, ВидСФ) Экспорт МассивВидов = Новый Массив(1); МассивВидов[0] = ВидСФ; МассивПодчиненных = уфПолучитьМассивПодчиненных(Ссылка,МассивВидов, Истина); Если (НЕ МассивПодчиненных = Неопределено) И (МассивПодчиненных.Количество() > 0) Тогда // счет-фактура найден, откроем его СчетФактура = МассивПодчиненных[0].Ссылка; Иначе // счет-фактура НЕ найден, введем новый СчетФактура = Документы[ВидСФ].ПустаяСсылка(); КонецЕсли; Возврат СчетФактура; КонецФункции// уфСчетФактураНажатие() |
|||
10
razbiralshik
22.02.13
✎
14:58
|
тоесть вот так:
&НаСервере Функция уфСчетФактураНажатие(Ссылка, ВидСФ) Экспорт МассивВидов = Новый Массив(1); МассивВидов[0] = ВидСФ; МассивПодчиненных = уфПолучитьМассивПодчиненных(Ссылка,МассивВидов, Истина); Если (НЕ МассивПодчиненных = Неопределено) И (МассивПодчиненных.Количество() > 0) Тогда // счет-фактура найден, откроем его СчетФактура = МассивПодчиненных[0].Ссылка; Иначе // счет-фактура НЕ найден, введем новый СчетФактура = Документы[ВидСФ].ПустаяСсылка(); КонецЕсли; Возврат СчетФактура; КонецФункции// уфСчетФактураНажатие() |
|||
11
MSII
22.02.13
✎
15:03
|
(10) Ну, теперь давай текст ошибки в студию
|
|||
12
razbiralshik
22.02.13
✎
15:05
|
(11)
{Документ.ПоступлениеАвтомобилей.Форма.ФормаДокументаУправляемая.Форма(9)}: Метод объекта не обнаружен (уфСчетФактураНажатие) СсылкаНаСФ = ОбработкаУФ.уфСчетФактураНажатие(СсылкаНаПоступление,"СчетФактураПолученный"); |
|||
13
ДенисЧ
22.02.13
✎
15:07
|
(12) Хм. А как связаны (12) и (10) ?
|
|||
14
razbiralshik
22.02.13
✎
15:07
|
(11) а если убрать дериктиву &НаСервере, то такая ошибка:
{ОбщийМодуль.ОбработкаУФ.Модуль(12,17)}: Переменная не определена (Документы) СчетФактура = <<?>>Документы[ВидСФ].ПустаяСсылка(); |
|||
15
GANR
22.02.13
✎
15:07
|
> Клиент (Управляемое приложение). Вылазит ошибка, что нету например такой переменной как "Документы" или "Справочники",
Все правильно - метаданные и учетные данные на сервере лежат! Короче, клиентские процедуры - в модуле с галочкой клиент, серверные - сервер. Клиент-серверные с обеими галочками, НО если в коде процедуры клиент-серверного модуля идет обращение к данным, присутствующим только на клиенте (Форма.Элементы.ТекущиеДанные) или только на сервере (учетные данные, метаданные и пр.) - необходимо (4). |
|||
16
razbiralshik
22.02.13
✎
15:20
|
(13) всмысле? то что написано что вызывается процедура ОМ из формы, не вариант?
|
|||
17
razbiralshik
22.02.13
✎
15:21
|
(15) общий смысл понятен, но непонятно почему ошибка в (12)
|
|||
18
razbiralshik
22.02.13
✎
15:33
|
Вообщем директивы все расставил как и описали выше, не помогло. Никто не знает ответа видимо
|
|||
19
Команданте
22.02.13
✎
15:35
|
нафейхуа делать одновременно сервер, вызов и клиент?
|
|||
20
Лодырь
22.02.13
✎
15:35
|
(17) Потому что у тебя обработчик должен быть клиентским а директива нарисована на сервере.
|
|||
21
Команданте
22.02.13
✎
15:35
|
1. сервер
2. сервер, вызов 3. клиент 4. клиент-сервер остальное от лукавого |
|||
22
MSII
22.02.13
✎
15:36
|
(18) Да не, просто ты тупишь дьявольски, а разжевывать тебе в до состояния кашицы никто в пятницу вечером не хочет. Почитай про контексты исполнения.
|
|||
23
MSII
22.02.13
✎
15:37
|
(19) А почему нет? В типовых делают.
|
|||
24
Команданте
22.02.13
✎
15:40
|
(23) А смысл?
|
|||
25
Reset
22.02.13
✎
15:43
|
(14) Вызывай ОбработкаУФ.уфСчетФактураНажатие из процедуры с &НаСервере
&НаКлиенте Процедура ТаГдеСейчасВызваешь() ВызватьЭтуХню(); КонецПроцедуры &НаСервере() Процедура ВызватьЭтуХню() СсылкаНаСФ = ОбработкаУФ.уфСчетФактураНажатие(СсылкаНаПоступление,"СчетФактураПолученный"); КонецПроцедуры |
|||
26
regniws
22.02.13
✎
15:44
|
(18) ответ все знают, просто реально лень объяснять то, что должно быть уже в голове к моменту начала работы с УФ.
Особенно доставляет простановка директив на угад.. :( |
|||
27
MSII
22.02.13
✎
15:44
|
(24) Ну, например, с целью сокращения количества общих модулей. Если их число измеряется сотнями, это уже не здорово.
|
|||
28
regniws
22.02.13
✎
15:44
|
(24) чтобы не лячкать копрокод
|
|||
29
regniws
22.02.13
✎
15:45
|
(27) это меньшее зол )) а вот дублировать код для клиента и сервера не круто, просто из соображений поддержки
|
|||
30
Команданте
22.02.13
✎
15:48
|
покажите хотя бы один пример, где использование этого, разумно
|
|||
31
razbiralshik
22.02.13
✎
15:52
|
(25) вот оно что... спасибо, теперь есть за что зацепится, буду копать далее в глубь!
|
|||
32
regniws
22.02.13
✎
15:54
|
(30) везде, где код для сервера и клиента одинаковый
|
|||
33
regniws
22.02.13
✎
15:55
|
+(32) или может быть приведен к таковому.
|
|||
34
Команданте
22.02.13
✎
15:57
|
(32) ну, например
|
|||
35
regniws
22.02.13
✎
16:04
|
(34) ща, разберемся.
мы ж говорим про то, нафейхера делать галки "клиент, сервер" или галки "клиент, сервер, вызов сервера"? |
|||
36
MSII
22.02.13
✎
16:07
|
(34) Например, любые функции, что-то делающие со строками (разложение строки в массив, форматирования какие-нибудь). Зачем иметь 2 варианта такой функции? А понадобиться она может как на сервере, так и на клиенте.
|
|||
37
Команданте
22.02.13
✎
16:11
|
(36) а, ну да, ну да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |