Имя: Пароль:
1C
1С v8
Подписка на события и Серверный вариант
0 Rustik666
 
13.12.11
14:40
В общем чтоб не лезть в модуль проведения - сделал подписку на событие ОбработкаПроведения конкретного документа и там дописываю нужные движения.....

В файловом варианте все замечательно работает... а в серверном ругается на мутабельное значение.....наверно из-за того, что там в подписку передается объект а не ссылка.....

как быть?.....можно как-нибудь решить это или все-таки в моделе прийдется все дописывать....
1 ДенисЧ
 
13.12.11
14:41
На модуле поставь галку серверный, остальные сними. &НаСервере не ставь
2 H A D G E H O G s
 
13.12.11
14:43
(1) Кхм.
3 ДенисЧ
 
13.12.11
14:43
(2) сам на той неделе с этим сношался...
4 H A D G E H O G s
 
13.12.11
14:44
В Толстом Клиенте объект документа на Клиенте же. Так и ОМ должен быть клиентским.
5 ДенисЧ
 
13.12.11
14:45
(4)
процедура должна быть расположена в общем модуле;
процедура должна быть объявлена с ключевым словом Экспорт;
у общего модуля, в котором расположена процедура, должны быть заданы следующие свойства:
флаг Глобальный - сброшен;
флаг Сервер - установлен;
остальные флажки Клиент (управляемое приложение), Клиент (обычное приложение), Внешнее соединение - не влияют на подписку (наличие нужного модуля в нужном соединении/клиенте системой не проверяется!);

(с)
6 H A D G E H O G s
 
13.12.11
14:53
(5) Толстый Обычный?
7 H A D G E H O G s
 
13.12.11
14:54
Клиент (обычное приложение) надо еще поставить флажок.
8 H A D G E H O G s
 
13.12.11
14:54
Иначе вы не праввы, Денисч.
Включите логику!
9 H A D G E H O G s
 
13.12.11
14:55
Денисч-> ДенисЧ. Извиняюсь.
10 ДенисЧ
 
13.12.11
14:56
Не хочу я ничего включать :-)
Просто описываю свой опыт...
11 acsent
 
13.12.11
14:58
(10) ты не прав. Дожны быть: Сервер, Тольстый клиент
12 GROOVY
 
13.12.11
14:58
Подписки на события инициируются сервером. Всегда. Откель там клиентский контекст?!
13 H A D G E H O G s
 
13.12.11
14:59
Аутор, делай как (5) + (7) и будет щастье.

Делай лучше в отдельном модуле, чтобы не похерить существующие тонкие душевные нити конфы.

Никаких инструкций препроцессору писать не надо.
14 H A D G E H O G s
 
13.12.11
15:00
(12) Объект документа лежит на Клиенте, в ТолстомОбычном.
Вот его 1С и пытается засунуть в параметр Источник, в процедуру, на Сервер и сама обливается яйцами, когда наступает на свои грабли.
15 H A D G E H O G s
 
13.12.11
15:05
**GROOVY полез в реестр прописывать ключ -debug в службу сервера 1С
16 GROOVY
 
13.12.11
15:08
(15) Только что проверил во всех режимах запуска. Для корректной работы подписки на событие достаточно у общего модуля галки "Сервер". Вызов производится после отрабатывания самого события (ОбработкаПроведния). ЧЯНД?
17 GROOVY
 
13.12.11
15:11
(11) Галки "Толстый клиент" там нет вообще. Есть "Клиент (обычное приложение)"
18 H A D G E H O G s
 
13.12.11
15:13
http://zalil.ru/32264500

Проведи плиз документ в ТолстомОбычном, в Клиент-Сервере.
8.2.14.540
19 ЧеловекДуши
 
13.12.11
15:13
А куда пропал автор :(
ДенисЧ - прав, я за одну галочку на каждый модуль :)
20 acsent
 
13.12.11
15:16
(16) Ты не проверил в толстый клиент, серверный вариант
21 acsent
 
13.12.11
15:17
Я лично писал что в УТ 11 на таких модулях не стоят галки ТолстыйКлиент. Н
Они ответили: есть сэр, ошибка признана
22 GROOVY
 
13.12.11
15:19
Сорри, сервера под рукой нет. Проверить не могу.

(18) Нафига у модуля "Вызов сервера" стоит? Это тоже фишка?
23 GROOVY
 
13.12.11
15:20
И что за галка "Толстый клиент"?
24 H A D G E H O G s
 
13.12.11
15:20
(22) По привычке поставил. Нет, надо убрать.
25 acsent
 
13.12.11
15:20
(23) Клиент "обычное приложение"
26 GROOVY
 
13.12.11
15:21
Блин, счаз буду сервер поднимать :)
27 acsent
 
13.12.11
15:21
Но! Чтоб поставить эту галку для ут 11 нужно включить в параметрах редактирование толстого клиента
28 H A D G E H O G s
 
13.12.11
15:21
(23) Клиент (обычное приложение) - он имел ввиду.
29 GROOVY
 
13.12.11
15:27
(27) Это понятно... Счаз скуль поставится, пошаманю...
30 acsent
 
13.12.11
15:28
(29) Не веришь чтоли? В (14) же понятно объяснено причина ошибки
31 GROOVY
 
13.12.11
15:32
(30) Всегда проверяю. Я понимаю что при открытии формы копия объекта читается. Не вся, движения, например не читаются. Но это форма! А событие проведение может быть инициировано и без формы, следовательно копия объекта как то без клиентов должна быть доступна.
32 acsent
 
13.12.11
15:33
(31) Уж от тебя такого не ожидал (((
33 acsent
 
13.12.11
15:34
1С никаких копий объекта не создает
34 GROOVY
 
13.12.11
15:35
(33) Ну здрасьте. В базе есть запись. При открытии формы мы получаем в понятие "Объект" копию этой записи и с ней работаем.
35 GROOVY
 
13.12.11
15:36
НаборЗаписей на встроенном языке это тоже копия данных регистра "В переменной". Мы же не напрямую с базой работаем, а иначе как быть с транзакциями...
36 H A D G E H O G s
 
13.12.11
15:38
(32) Он хотел сказать "объект в памяти".
37 СвинТуз
 
13.12.11
15:42
(12)
Я извиняюсь ...
Вы профессионала по платформе сдавали?
а то людей учите на спеца ...
разные мысли лезут

может я и ошибаюсь, но там было два вопроса в тему ...

один про "глобальность" другой про флажки
ну ладно не важно ...
38 СвинТуз
 
13.12.11
15:44
еще "13 ошибок" вспоминется знаменитые
в документации вроде явно прописано
но человек видимо слаб и делает ошибки
надо предупредить
39 СвинТуз
 
13.12.11
15:45
хотя все это бурчание ))))
удалюсь
40 СвинТуз
 
13.12.11
15:48
(14)
там лежит не объект вроде
ну не важно
41 GROOVY
 
13.12.11
15:49
(37) Сдавал. Давно. Про "галочки" знаю все. Но топик не про галочки, а про то от куда вызывается подписка.
42 СвинТуз
 
13.12.11
15:51
вроде с клиента
но я нуб
(14)
вроде как прав

в 13 ошибках у Фарида все есть
само выглядит как передергивание проблемы
но показано вроде все четко
и причины и т.д.
43 СвинТуз
 
13.12.11
15:53
проблема вроде возникает именно в толстом клиенте
но я могу и ошибится
я не методист )))
44 acsent
 
13.12.11
15:53
(34) Объект - это не "копия записи". Помоему ты слишком долго учишь 1Су
45 GROOVY
 
13.12.11
15:54
(44) А = Ссылка.ПолучитьОбъект();

Что есть А?
46 СвинТуз
 
13.12.11
15:55
я подробностей не помню
но вроде как в толстом весь код на клиенте идет
а вот подписки на сервере
и когда Вы пхаете туда "объект" ...
47 GROOVY
 
13.12.11
15:55
+45 Не копия записи, а копия объекта. Экземпляр объекта.
48 acsent
 
13.12.11
15:55
Объект - это классический объект из любого языка программирования, инициализированный данными из базы
49 СвинТуз
 
13.12.11
15:56
да ладно
все все знают
просто друг друга не поняли
50 H A D G E H O G s
 
13.12.11
15:57
(49) Кто здесь??!
51 GROOVY
 
13.12.11
16:57
Резюмирую:
В старом жирном клиенте подписка на событие инициализируется вместе с инициализацией объекта.
Там же объект является контекстом формы и при  открытии формы вся инициализация производится по факту на клиенте.
Без галок "Толстый клиент (обычное приложение)" и "Вызов сервера" подписка не инициализируется (что понятно).

Вывод: Поведение самой системы понятно. Не понятна логика разработчиков. От форм зависят серверные (совсем не интерактивные) механизмы. Пичалька. Уже вторая пичалька на эту тему.
Вывод 2: Что бы подписка выполнялась на сервере гарантированно, придется описывать разделение логики допроведения двумя общими модулями и проверками исполнения контекста Если ТолстыйКлиент Тогда и тп. Хотя над последним я еще медитирую...

Как можно так криво и не универсально сделать клиент-серверную логику?!
52 H A D G E H O G s
 
13.12.11
17:29
<<В старом жирном клиенте подписка на событие инициализируется вместе с инициализацией объекта.
Там же объект является контекстом формы и при  открытии формы вся инициализация производится по факту на клиенте.>>

бррр, какая глупость.

Павел, вы похоже правда слишком долго дружите только с 1С -ом.
У вас и мысли стали такие же, 1С-овские.
53 H A D G E H O G s
 
13.12.11
17:30
Вывод 2: Что бы подписка выполнялась на сервере гарантированно, придется описывать разделение логики допроведения двумя общими модулями и проверками исполнения контекста Если ТолстыйКлиент Тогда и тп. Хотя над последним я еще медитирую...

Да, это так.
54 H A D G E H O G s
 
13.12.11
17:30
Логика разработчиков как раз очень очень понятна.
55 GROOVY
 
13.12.11
17:48
(52) Да серьезно, инициализация объекта приводит к инициализации подписки на событие. И без возможности вызова общего клиентского модуля все падает. Повторюсь ___При открытии формы___.  Точно клиентский контекст.
56 H A D G E H O G s
 
13.12.11
17:49
(55) Галочку "вызов сервера" поставь.
57 GROOVY
 
13.12.11
17:49
А дружу долго... Да... Ну уж у кого какая судьба.
58 GROOVY
 
13.12.11
17:50
(56) Стоит галочка... Означает она вызов сервера из контекста клиента.
59 H A D G E H O G s
 
13.12.11
17:54
(58) Когда галочка стоит - в ПриОткрытии - ничего не падает.
Ну да ладно, не в этом соль.
Соль в том, что НЕ "От форм зависят серверные (совсем не интерактивные) механизмы"

Формы здесь не причем, объект документа вообще без форм можно провести.

Просто объект создается на Клиенте.
60 GROOVY
 
13.12.11
17:56
(59) эй! Я могу провести документ на сервере. Например при восстановлении последовательности, регламентным заданием и пр. Причем здесь клиент?! Обработкой в конце концов. И тогда передача параметров и вызов подписки на события будут совсем другие. Я об этом.
61 Rustik666
 
14.12.11
06:29
Всем спасибо....получилось.....

Какие галки стояли:
ВызовСервера
Привелигерованный
Сервер

Какие поставил
ВызовСервера
Клиент(обычное приложение)
Сервер

и заработало!...