|
Обмен в ПослеЗаписи() | ☑ | ||
---|---|---|---|---|
0
Artificial
27.07.16
✎
10:25
|
У документа существует обычная и управляемая форма документа. В процедуре ПослеЗаписи() обычной формы есть такой текст:
Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); ОбменДанными.Получатели.Добавить(Узел); ПланыОбмена.ЗарегистрироватьИзменения(Узел, ЭтотОбъект); Как сделать что-то аналогичное в УФ? Авторегистрация в плане обмена запрещена. |
|||
1
Остап Сулейманович
27.07.16
✎
10:30
|
(0) Сделать аналогично в ПослеЗаписиНаСервере()
|
|||
2
Artificial
27.07.16
✎
10:33
|
(1) Не катит. Загвоздка во второй строчке. Программа не знает, что такое "ОбменДанными".
|
|||
3
Остап Сулейманович
27.07.16
✎
10:39
|
(2) Сервер не знает к чему относится вот это вот ваше ОбменДанными. Просто подскажите ему ЭтотОбъект.ОбменДанными и у него все получится.
|
|||
4
Artificial
27.07.16
✎
10:42
|
(3) Написал Объект.ОбменДанными.Получатели.Добавить(Узел);
Ничего не изменилось, ругается, что нет такого поля как ОбменДанными. |
|||
5
Остап Сулейманович
27.07.16
✎
10:43
|
(4) "Объект" нет на сервере. Не сервере есть "ЭтотОбъект".
|
|||
6
Остап Сулейманович
27.07.16
✎
10:43
|
+ (5) Вернее не так. На сервере Объект <> ЭтотОбъект.
|
|||
7
Artificial
27.07.16
✎
10:44
|
(6) Переменная не определена (ЭтотОбъект)
|
|||
8
Остап Сулейманович
27.07.16
✎
10:47
|
(7) Птля... Зайди отладчиком в процедуру ПослеЗаписиНаСервере и найди там переменную с типом ДокументОбъект. Вот с ним и работай.
|
|||
9
aleks_default
27.07.16
✎
10:47
|
(0)Это вообще должно быть в модуле объекта. Тому кто это засунул в форму руки из *опы вырвать
|
|||
10
Остап Сулейманович
27.07.16
✎
10:48
|
+ (8) И вообще ТекущийОбъект передается туда параметром с вызывающей стороны.
Выкладывай вызов процедуры и ее код. |
|||
11
Artificial
27.07.16
✎
10:48
|
(10) &НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи) ПослеЗаписиНаСервере(); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере() Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); Объект.ОбменДанными.Получатели.Добавить(Узел); ПланыОбмена.ЗарегистрироватьИзменения(Узел, Объект); КонецПроцедуры |
|||
12
Artificial
27.07.16
✎
10:49
|
(9) Должно. Но до меня решили, чтоб обмен был только у документов, которые записываются из формы.
|
|||
13
Остап Сулейманович
27.07.16
✎
10:56
|
(11) Стать сюда ПослеЗаписиНаСервере(). Нажать Ctrl-F1. Прочитать за передаваемые параметры.
|
|||
14
Остап Сулейманович
27.07.16
✎
11:00
|
+ (13) Для толстых, жадных и ленивых.
&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) ПослеЗаписиНаСервере(Объект); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(текДокумент) Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); текДокумент.ОбменДанными.Получатели.Добавить(Узел); ПланыОбмена.ЗарегистрироватьИзменения(Узел, текДокумент); КонецПроцедуры |
|||
15
Artificial
27.07.16
✎
11:03
|
(14) оле объекта не обнаружено (ОбменДанными)
текДокумент.ОбменДанными.Получатели.Добавить(Узел); |
|||
16
Остап Сулейманович
27.07.16
✎
11:04
|
(15) Что отладчик показывает для переменной текДокумент?
|
|||
17
Artificial
27.07.16
✎
11:05
|
(16) Не могу отловить. На строку ПослеЗаписиНаСервере(Объект); заходит, потом всё.
|
|||
18
Fragster
гуру
27.07.16
✎
11:05
|
для всех - чтобы зарегить изменения с помощью ПланыОбмена.ЗарегистрироватьИзменения не нужно добавлять ничего в .ОбменДанными.
И вообще это добавление в .ОбменДанными бесполезно, так как "после записи" формы уже после транзакции и в базу ничего не пишется. |
|||
19
Artificial
27.07.16
✎
11:06
|
(18) В обычных формах работает же.
|
|||
20
Fragster
гуру
27.07.16
✎
11:08
|
(19) если и в обычных формах ты удвлишь строки с .обменданными - оно продолжит работать
|
|||
21
Fragster
гуру
27.07.16
✎
11:09
|
за счет ПланыОбмена.ЗарегистрироватьИзменения(Узел, текДокумент);
|
|||
22
Artificial
27.07.16
✎
11:09
|
(21) Хорошо, сейчас попробую.
|
|||
23
Artificial
27.07.16
✎
11:10
|
ПланыОбмена.ЗарегистрироватьИзменения(Узел, текДокумент);
по причине: Недопустимое значение параметра (параметр номер '2') |
|||
24
Fragster
гуру
27.07.16
✎
11:12
|
(23) ну, отладчик и СП у тебя, тчобы посмотреть, что в ТекДокумент и что надо передавать вторым параметром.
|
|||
25
hhhh
27.07.16
✎
11:14
|
(23) ТекДокумент = РеквизитФормыВЗначение("Объект");
|
|||
26
Fragster
гуру
27.07.16
✎
11:15
|
(25) тогда уж Объект.Ссылка лучше
|
|||
27
Fragster
гуру
27.07.16
✎
11:17
|
а еще лучше не плодить транзакций, и кода в формах (ведь провести документ можно и из списка) и добавить код
Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); ОбменДанными.Получатели.Добавить(Узел); в модуль объекта а еще лучше - хранить в константе прямо узел плана обмена и добавить в коде проверку на заполненность этой самой константы (если там продолжать хранить код - то на то, что узел с таким кодом существует) |
|||
28
hhhh
27.07.16
✎
11:19
|
(26) вообще-то везде ДокументОбъект регистрируют. В основном. Но можно и документСсылка. Кто его знает, что ему нужно.
|
|||
29
Artificial
27.07.16
✎
11:19
|
(27) В модуль объекта нельзя, такое условие.
|
|||
30
aleks_default
27.07.16
✎
11:20
|
(27)если так уж надо, можно передать параметр из формы в модуль объекта через допсвойства объекта.,
|
|||
31
Fragster
гуру
27.07.16
✎
11:20
|
(29) ну сделай в подписку на событие объекта
|
|||
32
Fragster
гуру
27.07.16
✎
11:21
|
(28) а нафиг коллекцию преобразовывать, если ссылка уже есть?
|
|||
33
Artificial
27.07.16
✎
11:22
|
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи) ПослеЗаписиНаСервере(Объект); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(Объект) Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); текДокумент = РеквизитФормыВЗначение("Объект"); ПланыОбмена.ЗарегистрироватьИзменения(Узел, текДокумент); КонецПроцедуры Что делать? |
|||
34
Fragster
гуру
27.07.16
✎
11:25
|
(33) выкинуть к херам. послезаписинасерере - отдельное событие формы, а также (18), (27), (31)
|
|||
35
aleks_default
27.07.16
✎
11:27
|
в модуле объекта ПриЗаписи пишешь
Если ДополнительныеСвойства.Свойство("ЗаписьИзФормы") тогда Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Узел = ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить()); ОбменДанными.Получатели.Добавить(Узел); КонецЕсли А в форме ПриЗаписинаСервере текущийОбъект.длополнительныесвойства.Вставить("ЗаписьНаСервере") |
|||
36
aleks_default
27.07.16
✎
11:28
|
но тому кто придумал такое условие, обязательно (9)
|
|||
37
aleks_default
27.07.16
✎
11:29
|
(35)
*текущийОбъект.Дополнительныесвойства.Вставить("ЗаписьИзФормы") |
|||
38
youalex
27.07.16
✎
11:29
|
(9) Вот это вообще шедевральное решение:
"ПланыОбмена.МСФронтУО.НайтиПоКоду(Константы.КодУзлаУО.Получить());" |
|||
39
DrZombi
гуру
27.07.16
✎
11:30
|
(12) Это тоже решается через ДополнительноеСвойство.
|
|||
40
hhhh
27.07.16
✎
11:30
|
(32) я имел в виду то, что сначала было. В вопросе (0).
ТекДокумент.ОбменДанными.Получатели.Добавить(Узел); |
|||
41
Fragster
гуру
27.07.16
✎
11:31
|
(12) т.е. если я помечу на удаление или проведу документ в форме списка - то он не должен становиться на обмен?
|
|||
42
Artificial
27.07.16
✎
11:31
|
(37) По крайней мере запись прошла. Сейчас посмотрим на обмен. Спасибо.
|
|||
43
Artificial
27.07.16
✎
11:31
|
(41) Типа да.
|
|||
44
Fragster
гуру
27.07.16
✎
11:33
|
(43) какая хорошая бомба. через пол года прикольно будет разбираться с неконсистентностью данных.
|
|||
45
Artificial
27.07.16
✎
11:34
|
(44) Желание клиента - закон.
Большое спасибо всем высказавшимся, обмен прошёл. УФ в топку. |
|||
46
Остап Сулейманович
27.07.16
✎
11:42
|
(45) "УФ в топку." Значительно лучше УФ все таки изучить. Там нет ничего заумного.
|
|||
47
Artificial
27.07.16
✎
11:45
|
(46) Бредовости многовато.
|
|||
48
Остап Сулейманович
27.07.16
✎
11:48
|
(47) Нет никакой "бредовости". Достаточно раз и навсегда запомнить, что сервер ничего не знает за клиента. То есть абсолютно ничего и никогда. Все с чем работает сервер должно быть у него или ему передаваться с клиента для обработки вместе с командой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |