Имя: Пароль:
1C
1С v8
Ошибка при Подписке на событие
🠗 (Maxus43 21.02.2013 17:14)
0 Индус
 
21.02.13
15:27
Конфа УТ11.Создал подписку на событие "ПриПроведенииДокумента" Обработчик ПриПроведенииДокументаХ находится в общем модуле( в настройках галочки Сервер, вызовСервера, привелигерованный). При проведении документа все ок, Когда делаю запись из внешней обработки под тем же пользователем пишет. Ошибка при передаче параметра  в функцию ПриПроведенииДокументаХ . попытка передать с клиента на сервер значение мутабельного типа параметр 1. По идее, этот параметр стандартный- Источник, т.е. ДокументОбъект. В чем может быть дело?
1 Wobland
 
21.02.13
15:28
(0) в попытке передать с клиента на сервер значение мутабельного типа, к бабке не ходи
2 Индус
 
21.02.13
15:30
(1) Вы капитан очевидность. Этот параметр стандартный- Источник, т.е. ДокументОбъект.
3 Wobland
 
21.02.13
15:30
(2) ну а зачем ты туда-сюда объект гоняешь?
4 Индус
 
21.02.13
15:32
(3)Вы видно не понимаете. ОШИБКА В ПОДПИСКЕ НА СОБЫТИЕ
5 Нуф-Нуф
 
21.02.13
15:32
привелигерованный = привилегированный. сам постоянно путаю, но не в 3х же местах :)
6 Wobland
 
21.02.13
15:33
(4) чо кричишь? Ошибка при передаче, а не в подписке
7 Индус
 
21.02.13
15:35
(5)Да))
(6)Интересно, как в подписке поменять стандартные передаваемые значения?
8 Maxus43
 
21.02.13
15:37
(7) если у тебя в процедура подписки будет использоваться не только подпсикой - передавай туда ссылку, а в начале процедуры анализ
Если ЭтоСсылка Тогда Док = Ссылка.ПолучитьОбъект();
Иначе Док = источник;
9 Индус
 
21.02.13
15:37
И что вообще значит мутабельный? В словарях такого слова нет))
10 Maxus43
 
21.02.13
15:38
(9) значит что изменение свойств ведёт к изменению самого объекта
11 MSII
 
21.02.13
15:39
(8) А такое вообще практикуется? Ну, в смысле, сделать подписку и универсальный обработчик к ней, который может вызываться не по подписке?
12 Индус
 
21.02.13
15:42
(8) Она используется только для подписке. В самой подписке можно указать только экспортную функцию из общего модуля . Она создается шаблоном ПриПроведенииОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
13 Maxus43
 
21.02.13
15:43
(11) почему нет, если код написан грамотно
14 Индус
 
21.02.13
15:43
Интересно, что при простом проведении все отрабатывает на ура((
15 MSII
 
21.02.13
15:44
(13) Просто не могу предположить, зачем это может быть нужно. Ну да бог с ним.
16 Maxus43
 
21.02.13
15:44
(14) ничего интересного, сказали же - нельзя Объект передавать на сервер, он мутабелен
17 Maxus43
 
21.02.13
15:44
(15) я тоже не пользую, но можно.
18 Maxus43
 
21.02.13
15:45
(12) я к тому что вызывать её нельзя с клиента своим кодом. она сама вызовется при проведении дока
19 Индус
 
21.02.13
15:49
(16)Подписка отбабатывает автоматически при проведении, при чем тут это? В обработке использеутся метод Объект.Записать(РежимЗаписидокумента.Проведение), если вы про это. Сам обработчик я не вызываю...
20 Vesa
 
21.02.13
15:51
(19) Откуда берется Объект?
21 Индус
 
21.02.13
15:52
(20) Из запроса
Объект=Выборка.ссылка.ПолучитьОбъект();
22 Vesa
 
21.02.13
15:54
sql?
23 Индус
 
21.02.13
15:55
(22)да
24 Индус
 
21.02.13
15:56
Похоже, на глюк платформы(((
25 Vesa
 
21.02.13
15:58
Это не глюк. На курсах spec8 рассматривался этот вопрос.
26 Maxus43
 
21.02.13
16:00
да какой глюк? я не знаю как ещё объяснить.
Объект.записать(); - сам вызовет подписку, без каких либо ошибок
27 Maxus43
 
21.02.13
16:00
(25) какой вопрос?
28 Индус
 
21.02.13
16:03
(26)В том то и дело. Однако ошибка вылезает..
(25)Как решить?)
29 Индус
 
21.02.13
16:04
Если убрать сервер, то пишет вообше
               "НовыйДокумент = Документы.ВзаимозачетЗадолженности.СоздатьДокумент();
по причине:
При подписке ПодпискаНаСобытие1 на событие ОбработкаПроведения произошла ошибка. Обработчик события не найден."
30 MSII
 
21.02.13
16:06
(25) Сильно интересно, рассказывай.
31 Maxus43
 
21.02.13
16:07
т.е. у тебя код:

Объект = выборка.Ссылка.ПолучитьОбъект();
Объект.записать();

даёт ошибку мутабельного значения?
32 Vesa
 
21.02.13
16:07
(26) Не помню как решить и полностью ли аналогичная была ситуация. Сам не сталкивался. Запомнил, что у них код в файловом варианте работал, а в SQL была такая ошибка. В общем, большинство мутабельных значений с клиента на сервер нельзя передавать, как уже было сказано.
33 zmaximka
 
21.02.13
16:07
(25) раскрой секрет
34 Maxus43
 
21.02.13
16:08
(32) это не та ситуация, Механизм подписок немного другой...
35 Wobland
 
21.02.13
16:09
(31) причём, делая это в толстом клиенте, клиент не понимает, что это полагается делать на сервере. получаение объекта прокатывает же
36 Wobland
 
21.02.13
16:09
(35) клиент здесь - ТС
37 Индус
 
21.02.13
16:12
(31)Да
Можете сами проверить:
1) Создаем подписку на запись/проведение док-та
2) Создаем обработку, где указывается ссылка на объект
3)В обработке указываем Док=ссылка.ПолучитьОбъект();
...
PROFIT!!!!
Неужели придется в модуль объекта все переносить?((
38 Wobland
 
21.02.13
16:12
(37) 3й пункт на сервер отправь
39 Индус
 
21.02.13
16:13
(38) +В неуправляемом режиме
(37)+Док.записать()
40 MSII
 
21.02.13
16:14
(38) На тонком клиенте у него такое и не получилось бы.
41 Индус
 
21.02.13
16:14
(40) Ага
42 zmaximka
 
21.02.13
16:15
платформа какая?
43 Индус
 
21.02.13
16:18
1С:Предприятие 8.2 (8.2.16.368)
нашел подобную тему, там решилось убиранием галочки сервер с модуля:
http://dev.mista.ru/topic.php?id=537564
В новой платформе пишет(29)
44 Maxus43
 
21.02.13
16:18
мда, чудеса какието. никогда не сталкивался, странно
45 zmaximka
 
21.02.13
16:19
Должно работать 100% если делаешь как в (31)
46 MSII
 
21.02.13
16:19
(44) +1. Какая разница, интерактивно или программно проводится документ?
47 Vesa
 
21.02.13
16:21
Форма обработки обычная?
48 Индус
 
21.02.13
16:21
(45) Можешь сам проверить. см(37)
(47)Да
49 jenny_tea
 
21.02.13
16:21
а
Объект = выборка.Ссылка.ПолучитьОбъект();
Объект.записать();
вызывается из процедуры &НаКлиенте или &НаСервере
50 Индус
 
21.02.13
16:21
Обработка внешняя
51 Индус
 
21.02.13
16:22
(49)-(40)
52 Vesa
 
21.02.13
16:22
У общего модуля поставь флаг компиляции "Клиент (обычное приложение)" и радуйся.
53 hhhh
 
21.02.13
16:23
(48) а в модуле объекта документа, что там в самом низу? Наверняка, какие-нибудь левые функции вызываешь.
54 GANR
 
21.02.13
16:24
(0) Внешнюю обработку В СТУДИЮ!
55 zmaximka
 
21.02.13
16:25
флажок клиент поставь у модуля
56 Индус
 
21.02.13
16:26
(48) Ничего особого, ругается-то на функцию в подписке
(52)(55)->(29)
57 Vesa
 
21.02.13
16:29
Сейчас какие флажки у общего модуля стоят?
58 zmaximka
 
21.02.13
16:31
сервер не убирай, добавь еще клиент
59 Индус
 
21.02.13
16:32
Еще один момент. В базе используется распределенный режим по филиалам. Может это как-то влияет?
60 Индус
 
21.02.13
16:33
сейчас пробую разные комбинации галочек)
61 Mafoni
 
21.02.13
16:34
Релиз платформы какой ?
Создал подписку на событие ПриЗаписи - Процедура обработчик находится в общем модуле с галками Сервер , Вызов сервера, Привилегированный
Создал Обработку с одной кнопкой


&НаКлиенте
Процедура Команда1(Команда)
   СоздатьЭлемент();
КонецПроцедуры

&НаСервере
Процедура СоздатьЭлемент()
   
   ВЫборка = Справочники.Валюты.Выбрать();
   Пока Выборка.Следующий() Цикл
       элОбъект = Выборка.Ссылка.ПолучитьОбъект();
       элОбъект.Записать();
   КонецЦикла;
   
КонецПроцедуры

Делал со справочником валюты - отработало все на ура !!!!
ЧЯДНТ ????
62 zmaximka
 
21.02.13
16:35
63 Индус
 
21.02.13
16:35
(61)У меня в обычном приложении.
64 Maxus43
 
21.02.13
16:35
(61) говорят толстый клиент, обычное приложение. на УФ не катит
65 zmaximka
 
21.02.13
16:37
+(62) это свойство модуля в котором расположены обработчики подписок
66 Mafoni
 
21.02.13
16:40
Вот тебе для обычного приложения
Процедура КнопкаВыполнитьНажатие(Кнопка)
Обработать();    
КонецПроцедуры

&НаСервере
Процедура Обработать()
       
   ВЫборка = Справочники.Валюты.Выбрать();
   Пока Выборка.Следующий() Цикл
       элОбъект = Выборка.Ссылка.ПолучитьОбъект();
       элОбъект.Записать();
   КонецЦикла;

КонецПроцедуры
67 Индус
 
21.02.13
16:41
(62) У меня клиент(Обычное приложение) нету вообще почемуто...Может из-за того что режим совместимости не используется??
68 Mafoni
 
21.02.13
16:41
+ (66) при тех же галках в общем модуле отрабатывает на ура !!!
69 Maxus43
 
21.02.13
16:41
(66) нет такого в обычном приложении
70 Maxus43
 
21.02.13
16:41
&НаСервере
всымсле нет
71 Mafoni
 
21.02.13
16:43
(70) как убедить что есть ?  скрин подойдет ?
+ в (61)  я спрашивал про релиз платформы
все изыски мои сделаны в 8.3.2 Основной режим запуска - Обычное приложение , Режим совместимости - Не использовать
72 zmaximka
 
21.02.13
16:43
(67) при чем тут режим совместимости. в смысле нет у общего модуля флажка "Клиент" ???
73 Индус
 
21.02.13
16:43
(66) &НаСервере наверное, не поймет))
74 Mafoni
 
21.02.13
16:45
(70) - хотя может я и не прав ! :(
75 Maxus43
 
21.02.13
16:45
(71) а чего не на 1с 9.0 делал?
Какая разница какой основной режим запуска, при запуске в базе надо указать запуск обычного приложения.
На толстом клиенте есть только #Если Сервер Тогда, но это не так работает
76 Mafoni
 
21.02.13
16:45
(73) - ставь галку тогда Клиент и не мучайся - должно прокатить !
77 Индус
 
21.02.13
16:46
(72)есть клиент(управляемое), но нет графы(!) Клиент(обычное)
78 zmaximka
 
21.02.13
16:46
(76) говорит украли "Клиент"
79 Mafoni
 
21.02.13
16:46
(75) - дык не выпустили же еще 9.0 :)
    - читай (74) ужо сказал что походы был не прав.
80 Индус
 
21.02.13
16:47
Пробовал уже пишет(29)
81 Mafoni
 
21.02.13
16:47
(77), (78) интересно чего нужно было сделать что бы сия галка пропала
82 Индус
 
21.02.13
16:47
(80)к (76)
83 zmaximka
 
21.02.13
16:48
основной режим запуска поменяй на "обычное приложение" и будет "клиент"
84 Mafoni
 
21.02.13
16:49
Если не лень сделай принтскин свойст общего модуля а то мне аж не верится что такое может быть !! Ну и есно покажи принтскрин !
85 zmaximka
 
21.02.13
16:49
сам удивлен таким эффектом
86 zmaximka
 
21.02.13
16:50
(84) может только что проверил. меняешь режим запуска конфигурации на "упр.приложение" в свойствах общего модуля пропадает флажок "клиент обычное приложение"
87 Mafoni
 
21.02.13
16:50
(83) - никогда раньше не обращал на этот момент внимание - интересно
(82) -  у тебя основной режим упр приложение - а при этом все работаю в толстом клиенте так что ли ????
88 Индус
 
21.02.13
16:52
89 Индус
 
21.02.13
16:54
(83) щас попробую. Что интересно. В "Старых" модулях галочка-то сохранилась))
90 Mafoni
 
21.02.13
16:56
(88) Блин кто тя так учил принскрины делать !!! 5 метров!!!
91 Mafoni
 
21.02.13
16:56
(89) на (87) ответиш ?
92 Индус
 
21.02.13
16:56
(87) нет, там кто как. Большинство управляемо
93 Mafoni
 
21.02.13
16:59
(92)- а что значит большинство ?  Это единсвенное поле выбора в свойствах конфигурации ! Там может быть только одно значение !!!
94 Индус
 
21.02.13
17:00
Уррраааа. Заработало. Всем спасибо))) Не хватает теплых матерных слов на разработчиков платформы.
95 Mafoni
 
21.02.13
17:00
+ (93) я спрашивал про совйство конфигурации !
96 Индус
 
21.02.13
17:00
(93) У каждого пользователя можно прописать режим запуска..
97 Mafoni
 
21.02.13
17:02
(96) читаем внимательно (95)
98 zmaximka
 
21.02.13
17:04
Ну вот и славно что заработало
99 Индус
 
21.02.13
17:07
(97)Основной режим запуска-управляемый
(98)Спасибо огромное
Помогла галочка клиент(обычное приложение)(!). Хотя вообще непонятно причем она тут, странная логика?
100 Maxus43
 
21.02.13
17:07
100
101 Индус
 
21.02.13
17:07
100))
102 Индус
 
21.02.13
17:08
опоздал)
103 Maxus43
 
модератор
21.02.13
17:12
(102) не дорос ещё)
104 Индус
 
21.02.13
17:12
Тема почти как танки записей набрала))
105 Индус
 
21.02.13
17:13
Модератерам, видно скучно))
106 Maxus43
 
21.02.13
17:14
всё, задача решена, во избежание флуда топлю
107 Vesa
 
21.02.13
17:15
(106) Что значит топишь?
108 Индус
 
21.02.13
17:15
Флуд рулит))
109 Vesa
 
21.02.13
17:17
Мне есть что по теме сказать.
110 Maxus43
 
21.02.13
17:17
(109) говори
111 Индус
 
21.02.13
17:18
(109)давай. Типо покарать всех разработчиков платформы?))
112 Vesa
 
21.02.13
17:20
(99) Логика: 1) модуль обычной формы обработки компилируется на клиенте. 2) У тебя флаги общего модуля стояли Сервер и Вызов сервера, т.е. процедуры компилировались только на сервере. При попытке вызова проц. общего модуля с клиента выдавалась ошибка.
Когда поставил флаг "Клиент (обычное приложение)" общий модуль стал компилироваться и в контексте клиента. Теперь при вызове проц. общего модуля с клиента будет обращение к копии общего модуля, скомпилированного на клиенте, т.е. сервер вызываться не будет.
113 Индус
 
21.02.13
17:22
(112) не согласен. я пробовал переносить в модуль объекта(Он ведь на сервере?). Это результата не дало!
114 Vesa
 
21.02.13
17:24
(113) Что перенес в модуль объекта?
115 Индус
 
21.02.13
17:26
(114)Объект.записать()
116 Vesa
 
21.02.13
17:31
Ошибка возникала при передаче объекта из модуля формы обработки на сервер. Видимо, не обязательно подписка на событие.
117 Индус
 
21.02.13
17:32
(116) При вызове записать из модуля объекта она тоже возникает))
Независимо от того, куда вы едете — это в гору и против ветра!