|
Вызов функции как на клиенте так и на сервере | ☑ | ||
---|---|---|---|---|
0
toypaul
гуру
12.09.12
✎
11:01
|
Есть функция, которая нужна как на клиенте так и на сервере. Параметром в нее передается форма - управляемая или обычная. Сейчас у функции стоит опция НаСервере, на модуле опция Сервер (а также галки Вызов сервера и Привилегированный).
При вызове в обычном приложении выдается сообщение что-то про "мутабельную переменную". Скорее всего это связано с передачей обычной формы на сервер (так как стоит Сервер и НаСервере). В какой модуль (с каким опциями) мне поместить эту функцию и нужно ли писать опцию НаСервере, чтобы она корректно вызывалась как в управляемом приложении (отработать должна на сервере) и в обычном (отработать должна на клиенте)? |
|||
1
mikecool
12.09.12
✎
11:02
|
При вызове в обычном приложении выдается сообщение что-то про "мутабельную переменную".
В обычном приложении &Сервер hfpdt exbnsdftncz& |
|||
2
mikecool
12.09.12
✎
11:03
|
разве учитывается? *
|
|||
3
zladenuw
12.09.12
✎
11:03
|
это если клиент-сервер. тогда мутабельное
|
|||
4
toypaul
гуру
12.09.12
✎
11:04
|
(2) понятия не имею. дело в том что у меня на локальном компе нормально отрабатывает. а у заказчика клиент-сервер.
|
|||
5
zladenuw
12.09.12
✎
11:04
|
а попробовать директиву НаКлиентеНаСервере
|
|||
6
Fram
12.09.12
✎
11:04
|
(0) в обычном вроде все локально выполняется
|
|||
7
toypaul
гуру
12.09.12
✎
11:05
|
можно конечно поместить копию функции в подходящий модуль без опции, но это не есть правильный подход, если есть правильный вариант.
(5) надо попробовать. интересно для чего это опция используется? ЖКК под руками нет. |
|||
8
mikecool
12.09.12
✎
11:05
|
(4) у тебя в форме скорее всего передается объект
наверное чушь сморозил ) |
|||
9
zladenuw
12.09.12
✎
11:06
|
||||
10
acsent
12.09.12
✎
11:06
|
не советовал бы так делать. КлиентСерверные модули - это ж полная
|
|||
11
zladenuw
12.09.12
✎
11:07
|
ТС покажи функцию
|
|||
12
acsent
12.09.12
✎
11:07
|
привелигерованный не может быть на клиенте
|
|||
13
toypaul
гуру
12.09.12
✎
11:10
|
(12) ага. есть модуль с опциями Сервер, Клиент обычный, Вызов сервера и не Привелигированный. если туда ее поместить...без опции НаСервере - будет как надо выполняться?
|
|||
14
toypaul
гуру
12.09.12
✎
11:11
|
код процедуры
&НаСервере Процедура ЗаписатьФайлыВРегистр(Объект,ЭтаФорма) Экспорт НаборЗаписей = РегистрыСведений.вичи_ХранилищеФайлов.СоздатьНаборЗаписей(); Отбор = Новый Структура("ИмяФайла"); ДатаЗаписи = ТекущаяДата(); ТекущийПользователь = глЗначениеПеременной("глТекущийПользователь"); ТаблицаФайлов = ЭтаФорма.ТаблицаФайлов; ТаблицаИсходная = ЭтаФорма.ТаблицаИсходная; Для каждого Строка Из ТаблицаФайлов Цикл Отбор.ИмяФайла = Строка.ИмяФайла; Строки = ТаблицаИсходная.НайтиСтроки(Отбор); Действие = Неопределено; Если Строка.Перезаписан Тогда Действие = Перечисления.вичи_ДействиеНадФайлом.Перезаписан; Иначе Если Строки.Количество() = 0 Тогда Действие = Перечисления.вичи_ДействиеНадФайлом.Добавлен; Иначе СтрокаПоиска = Строки[0]; Если Строка.Имя <> СтрокаПоиска.Имя ИЛИ Строка.Расширение <> СтрокаПоиска.Расширение ИЛИ Строка.ВидФайла <> СтрокаПоиска.ВидФайла Тогда Действие = Перечисления.вичи_ДействиеНадФайлом.ИзмененыАтрибуты; КонецЕсли; КонецЕсли; КонецЕсли; Если Действие <> Неопределено Тогда НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = ДатаЗаписи; НоваяЗапись.Действие = Действие; НоваяЗапись.Объект = Объект; НоваяЗапись.Пользователь = ТекущийПользователь; ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка); НоваяЗапись.ИмяФайла = Новый УникальныйИдентификатор(Строка.ИмяФайла); КонецЕсли; Для каждого СтрокаИсходная Из Строки Цикл ТаблицаИсходная.Удалить(ТаблицаИсходная.Индекс(СтрокаИсходная)); КонецЦикла; КонецЦикла; Для каждого Строка Из ТаблицаИсходная Цикл НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Период = ДатаЗаписи; НоваяЗапись.Действие = Перечисления.вичи_ДействиеНадФайлом.Удален; НоваяЗапись.Объект = Объект; НоваяЗапись.Пользователь = ТекущийПользователь; НоваяЗапись.Удален = Истина; ЗаполнитьЗначенияСвойств(НоваяЗапись,Строка); НоваяЗапись.ИмяФайла = Новый УникальныйИдентификатор(Строка.ИмяФайла); КонецЦикла; Если НаборЗаписей.Количество() > 0 Тогда НаборЗаписей.Записать(Ложь); Для каждого Строка Из ТаблицаФайлов Цикл Строка.Перезаписан = Ложь; КонецЦикла; Если ТипЗнч(ЭтаФорма) = Тип("УправляемаяФорма") Тогда ТаблицаИсходная.Загрузить(ДанныеФормыВЗначение(ТаблицаФайлов,Тип("ТаблицаЗначений"))); Иначе ТаблицаИсходная = ТаблицаФайлов; КонецЕсли; КонецЕсли; КонецПроцедуры // ЗаписатьФайлыВРегистр() |
|||
15
Defender aka LINN
12.09.12
✎
11:11
|
(10) Праильно. Функция возвращает "Цена*Количество"? На сервер ее!
|
|||
16
zladenuw
12.09.12
✎
11:13
|
(14) если у модуля стоит. то должно. а так ты дополнительно ставишь директиву что только на сервере.
|
|||
17
acsent
12.09.12
✎
11:14
|
если обычный режим, то будет клиент и директивы не учитывются
|
|||
18
toypaul
гуру
12.09.12
✎
11:15
|
(17) ясно. надо проверить.
|
|||
19
acsent
12.09.12
✎
11:15
|
(15) зачем вообще такую функцию делать? посмотри в бсп - нет ни одного клиент серверного модуля
|
|||
20
Fram
12.09.12
✎
11:18
|
(19) есть и довольно много
|
|||
21
Defender aka LINN
12.09.12
✎
11:20
|
(19) АдресныйКлассификаторКлиентСервер
АнкетированиеКлиентСервер ВзаимодействияКлиентСервер ВзаимодействияКлиентСерверПереопределяемый ДополнительныеОтчетыИОбработкиКлиентСервер ОбщегоНазначенияКлиентСервер ПолучениеФайловИзИнтернетаКлиентСервер ПрефиксацияОбъектовКлиентСервер ПрефиксацияОбъектовКлиентСерверПереопределяемый РаботаСКурсамиВалютКлиентСервер РаботаСФайламиКлиентСервер РегламентированныеДанныеКлиентСервер СоединенияИБКлиентСервер СтроковыеФункцииКлиентСервер ФайловыеФункцииКлиентСервер ЭлектроннаяЦифроваяПодписьКлиентСервер Вообще ни одного... |
|||
22
Stepa86
12.09.12
✎
11:24
|
1) Форму нельзя передать с клиента на сервер
2) Для управляемых форм лучше юзать вызов сервер-сервер, причем модуль без галки ВызовСервера. Ну или клиент-клиент без ухода на сервер. 3) Для обычных работает только вызов обычныйКлиент-обычныйКлиент итого модуль должен быть с галками ОбычныйКлиент, Сервер, Вызов сервера (изза обычного клиента) |
|||
23
Stepa86
12.09.12
✎
11:26
|
+(22) хотя галку вызов сервера как раз убрать надо, вроде б. Изза нее будет передача мутабельного значения для обычной формы
|
|||
24
pavig
12.09.12
✎
11:31
|
(4) у тебя на локальном компе отрабатывает все на клиенте, так как база файловая
|
|||
25
toypaul
гуру
12.09.12
✎
12:44
|
ну вроде получилось. НаСервере пришлось убрать - иначе в обычном режиме не видит эту процедуру у модуля
|
|||
26
Wingless
12.09.12
✎
12:50
|
Ставить НаСервере в общих модулях - мда...
|
|||
27
ptiz
12.09.12
✎
12:55
|
(22) "причем модуль без галки ВызовСервера." - почему?
Не могу понять, зачем эту галку может понадобиться снимать с модуля? |
|||
28
Defender aka LINN
12.09.12
✎
12:57
|
(27) Потому, что на клиентском модуле она нафиг не нужна и фиг ты ее поставшь, например.
|
|||
29
toypaul
гуру
12.09.12
✎
13:00
|
(26) надо подучить теорию. признаюсь. если ткнете носом в онлайн материал, в котором все эти тонкости есть, буду рад.
|
|||
30
Fish
12.09.12
✎
13:01
|
(29) http://www.spec8.ru/
|
|||
31
toypaul
гуру
12.09.12
✎
13:04
|
(30) думал. если мне будет этот материал хотя бы наполовину полезен, тогда куплю. пока сомневаюсь.
|
|||
32
Fish
12.09.12
✎
13:10
|
(31) Судя по (0), этот материал имхо будет тебе полезен гораздо больше, чем наполовину. Там очень подробно и доступно рассматривается клиент-серверная работа.
|
|||
33
Fish
12.09.12
✎
13:11
|
+(32) Во всяком случае по сравнению с другими курсами, на которые я ходил.
|
|||
34
toypaul
гуру
12.09.12
✎
13:15
|
(32) смелое заявление. базовый курс отметаем сразу. там мне не интересно 90% инфо. берем продвинутый. там мне нужен только блок 1 и частично блок 0. пока не вижу смысла переплачивать. был бы отдельный курс по клиент-сервере, упр формам, веб-клиенту = другой вопрос.
|
|||
35
Fish
12.09.12
✎
13:26
|
(34) А зачем самому платить? Пусть тебе контора купит.
|
|||
36
toypaul
гуру
12.09.12
✎
13:28
|
я сам себе контора
|
|||
37
ptiz
12.09.12
✎
15:06
|
(28) А чем тогда установка этой галки может помешать на серверном модуле?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |