Имя: Пароль:
1C
1С v8
Ошибка передачи данных между клиентом и сервером
,
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
e-mail:
   [email protected]  
ICQ:
   374-881-272
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) относительно Ссылки. А остальные функции - тут все без подтекста, просто еще ряд функций, на разные случаи и нужды. К конкретному моменту не имеющие никакой прямой связи, кроме того, что они располагаются в этом же модуле
AdBlock убивает бесплатный контент. 1Сергей