|
Ошибка передачи данных между клиентом и сервером | ☑ | ||
---|---|---|---|---|
0
ChAlex
27.04.12
✎
16:20
|
Никак не пойму в чем причина. 1С запускается в режиме толстого клиента, открывается управляемая форма документа, в модуле документа в событии "ПередЗаписью" вызывается функция общего модуля
ОбщиеПроцедурыОбъектов.ПередЗаписьюДокумента(Ссылка), модуль компилируется только на сервере, флаг "Вызов сервера" установлен. Выдается ошибка: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: linkByType Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}TypeLink по причине: Ошибка преобразования данных XDTO: КонецСвойства: linkByType Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}TypeLink Но! Тут сразу непонятки. Во-первых: процедура "ПередЗаписью" в управляемой форме вызывается на сервере (для полного счастья даже перед процедурой поставил директиву компиляции #Если Сервер тогда), вызываемая функция тоже скомпилирована на сервере - причем здесь тогда передача параметров с клиента?! Во-вторых: даже если предположить, что перед записью выполняется на клиенте, то Ссылка разрешена как на клиенте, так и на сервере (из Хелпа: Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Возможен обмен с сервером. Сериализуется. ) В чем трабл? |
|||
1
Лоботряс
27.04.12
✎
16:31
|
Как причем передача параметров с клиента? Форма это всегда клиент, а параметры на ней указываются.
|
|||
2
Лоботряс
27.04.12
✎
16:32
|
В данных косяк
|
|||
3
H A D G E H O G s
27.04.12
✎
16:36
|
ПередЗаписью() вызывается все же с клиента
|
|||
4
H A D G E H O G s
27.04.12
✎
16:36
|
ПередЗаписьюНаСервере() - вот на сервере
|
|||
5
ChAlex
27.04.12
✎
16:36
|
(2)В каких данных? Из данных в функцию попытка передать ссылку документа - и все.
|
|||
6
H A D G E H O G s
27.04.12
✎
16:37
|
В переменной Ссылка хранится хрень
|
|||
7
H A D G E H O G s
27.04.12
✎
16:37
|
Объект.Ссылка надо
|
|||
8
ChAlex
27.04.12
✎
16:37
|
(4) - не стану спорить, только точка останова срабатывает на сервере, а не на клиенте! И Функция прописана в МОДУЛЕ ДОКУМЕНТА, а не в МОДУЛЕ ФОРМЫ
|
|||
9
H A D G E H O G s
27.04.12
✎
16:38
|
Код полностью показывать надо.
Телепатов нету |
|||
10
H A D G E H O G s
27.04.12
✎
16:38
|
(8) Пардон, неправильно посмотрел (0)
|
|||
11
ChAlex
27.04.12
✎
16:38
|
(7) - А хоть как хочешь, одно и тоже. Кроме того в Ссылка - именно ссылка сохраняемого документа
|
|||
12
H A D G E H O G s
27.04.12
✎
16:40
|
В ОМ, в процедуре
ОбщиеПроцедурыОбъектов.ПередЗаписьюДокумента(); сразу 1 строчкой пропиши Возврат, чтобы она не делала ничего |
|||
13
ChAlex
27.04.12
✎
16:40
|
Ну вот полностью код:
#Если Сервер Тогда Процедура ПередЗаписью(Отказ,РежимЗаписи,РежимПроведения) Если Не ЭтотОбъект.ОбменДанными.Загрузка Тогда Параметры=ОбщиеПроцедурыОбъектов.ПередЗаписьюДокумента(Ссылка); Отказ=Параметры.Отказ; КонецЕсли КонецПроцедуры #КонецЕсли Для тестирования урезал всякую логику |
|||
14
H A D G E H O G s
27.04.12
✎
16:40
|
И ппоробуй
|
|||
15
ChAlex
27.04.12
✎
16:42
|
(12) - результат тот же
|
|||
16
H A D G E H O G s
27.04.12
✎
16:42
|
А то у тебя в ОМ, в этой процедуре ПередЗаписью(), параметр Ссылка может переписаться на непотребное, и вернуться измененным в модуль объекта и 1С удивиться.
|
|||
17
H A D G E H O G s
27.04.12
✎
16:42
|
Давай rdp/team даже интересно стало
|
|||
18
H A D G E H O G s
27.04.12
✎
16:43
|
||||
19
le_
27.04.12
✎
16:47
|
Почему бы не сделать по-человечески - обработчик ПередЗаписью() формы - на клиенте, из него вызов серверной процедуры?
|
|||
20
ChAlex
27.04.12
✎
16:50
|
(19) - ну хотя бы потому, что нужно иногда что-то делать и когда клиент из списка например отменил проведение документа, не открывая формы.
|
|||
21
ChAlex
27.04.12
✎
16:51
|
Все несколько стало проясняться. Закоментировал остальные процедуры модуля - стало работать. Получается ошибка не в конкретноой вызываемой процедуре, а хрен знает где!
|
|||
22
le_
27.04.12
✎
16:51
|
(20) Для этого есть модуль документа и там свой обработчик.
|
|||
23
ChAlex
27.04.12
✎
16:55
|
(22) - ну так вы бы внимательнее читали. А о чем по-вашему здесь идет речь?
|
|||
24
Nesh
27.04.12
✎
16:57
|
(13) ну а если новый объект? какая тогда ссылка в передзаписью?
|
|||
25
ChAlex
27.04.12
✎
17:01
|
(24) - вообще-то изначально стояла не ссылка а объект, это уже для поиска причины заменил и пробовал на уже существующем документе.Ну а вообщем как оказывается проблема совсем в другой функции, которая даже не вызывается в данном случае, а просто присутствует в общем модуле, но сообщение об ошибке и именно такое как указано раньше выдается в момент вызова работающей функции.
|
|||
26
le_
27.04.12
✎
17:01
|
(23) Меня вот это смутило:
Во-первых: процедура "ПередЗаписью" в управляемой форме... |
|||
27
ChAlex
27.04.12
✎
17:06
|
То бишь в модуле есть с 10 функци, я вызываю одну - я ее даже вообще урезал к виду
Функция ПередЗаписьюДокумента(пмОбъект,пмПроверятьПериод=Истина,пмЗарплата=Ложь,пмУпр=Ложь) Экспорт Возврат 0; КонецФункции и получаю ошибку. А оказывается вообще-то алгоритм должен выполняться. Комментирую все остальные функции - и все работает. Вот блин - какое-то не от мира сего сообщение об ошибке. (26) - ну я пояснил, что хоть и толстый клиент, но процедура выполняется на сервере, ибо управляемая форма открывалась, а если бы открывалась обычная форма, то и процедура выполнялась бы на клиенте |
|||
28
Лоботряс
27.04.12
✎
17:11
|
"ну я пояснил, что хоть и толстый клиент, но процедура выполняется на сервере, ибо управляемая форма открывалась, а если бы открывалась обычная форма, то и процедура выполнялась бы на клиенте" - по-моему есть недопонимаение что есть клиент и что сервер
|
|||
29
le_
27.04.12
✎
17:12
|
(26) Какая разница толстый или тонкий клиент - и там и там в управляемом приложении есть разделение на клиент и сервер.
И всё-таки, чисто для себя - процедура ПередЗаписью() находится в модуле документа или в модуле формы? |
|||
30
le_
27.04.12
✎
17:15
|
(29) к (27)
|
|||
31
ChAlex
27.04.12
✎
17:15
|
(28) - лично у меня нет недопонимания что есть что
(29) - речь идет про МОДУЛЬ ДОКУМЕНТА. |
|||
32
Лоботряс
27.04.12
✎
17:50
|
Что за "все остальные функции"?
И не смущает что у тебя Ссылка в процедуре ПередЗаписью? |
|||
33
ChAlex
27.04.12
✎
17:55
|
(32) :) специально для тех кто опоздал (пост 25) относительно Ссылки. А остальные функции - тут все без подтекста, просто еще ряд функций, на разные случаи и нужды. К конкретному моменту не имеющие никакой прямой связи, кроме того, что они располагаются в этом же модуле
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |