Имя: Пароль:
1C
 
Описание оповещения , обычные формы
,
0 Likons
 
14.01.20
13:06
День добрый , коллеги.
В очередной раз , прошу совета )

Есть внешняя обработка , в ней на форме есть таблица значений , с параметром ТолькоПросмотр. При клике на конкретную колонку я создаю документ определенного типа , но не записываю.
Основная задача заключается в том , что бы определить записал ли пользователь этот документ или нет. Если записал - то необходимо перезаполнить таблицу значений в обработке.
Пытаюсь организовать сие действо таким образом :

// Создание документа
                        ДокПеремещение = Документы.ПеремещениеТоваров.СоздатьДокумент();
            ДокПеремещение.Заполнить(ТекДанные.СсылкаЗаказ);
            ФормаПеремещения = ДокПеремещение.ПолучитьФорму("ФормаДокумента");
            ФормаОбработки = ОбработкаОбъект.ЭтотОбъект.ПолучитьФорму("Форма");
            ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ФормаОбработки,Параметры);
            ОткрытьФорму(ФормаПеремещения,,,,,,ОповещениеПриЗакрытии);
// Создание документ

// Обработка для оповещения

Процедура ДляОповещения (Результат , Параметры) Экспорт
    ОбновитьТаблицы();    
КонецПроцедуры

// обработка для оповещения

При попытке запуска , ошибок никаких не выдает , но и процедура ДляОповещения не отрабатывает (
Подскажите пожалуйста , что я не так делаю (
Спасибо )
1 Likons
 
14.01.20
13:09
P.S.
Прошу прощения , в этой строке :
ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ФормаОбработки,Параметры);
Нет , последнего аргумента "Параметры" , добовлял от безысходности ) она выглядит так :
ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ФормаОбработки);
2 RomaH
 
naïve
14.01.20
13:13
ОповещениеПриЗакрытии - это свойство формы
3 polosov
 
14.01.20
13:14
У формы документа есть событие "После записи"
Вставь туда
Оповестить("МойПрефикс_ОбновитьТаблицуДокументов");

В обработке оповещения формы обработки лови оповещение и обновляй ТЧ
4 Likons
 
14.01.20
13:17
(2) (3) Думал об этом , но , к сожалению , нет возможности менять конфигурацию (
5 RomaH
 
naïve
14.01.20
13:18
+(2)  - не угадал

процедура должна отработать, но только после закрытия открытой формы?
6 Likons
 
14.01.20
13:23
(5) именно.
Т.е. если только что созданный документ был записан - то обновлять таблицу , если не был записан - не обновлять.
Нужно , что бы обработка ждала закрытия формы.
7 RomaH
 
naïve
14.01.20
13:28
(6) должно работать
8 RomaH
 
naïve
14.01.20
13:31
ФормаОбработки = ОбработкаОбъект.ЭтотОбъект.ПолучитьФорму("Форма");
            ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ФормаОбработки,Параметры);

вот это смущает
ты пытаешься привязать процедуру хз откуда

уверен что оно так должно работать?

либо ОМ либо форма клиентского приложения вроде

а у тебя ФормаОбработки  какого типа?
9 Likons
 
14.01.20
14:05
(8) а что значит "тип формы обработки"?
Пробовал передавать так :
ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ОбработкаОбъект.ЭтотОбъект,Параметры);
результат тот же (
10 RomaH
 
naïve
14.01.20
14:10
ЭтаФорма
11 FIXXXL
 
14.01.20
14:14
(0) чем тебе должен помочь такой вызов? как ты проверишь факт записи документа?
12 RomaH
 
naïve
14.01.20
14:18
(11) ДокПеремещение.Ссылка будет заполнена
13 Likons
 
14.01.20
14:23
(10) так тоже пробовал передавать , результат тот же (
14 Likons
 
14.01.20
14:23
(11) (12) да , как то так )
15 RomaH
 
naïve
14.01.20
14:29
мать, у тебя Вариант синтаксиса: По форме
16 Likons
 
14.01.20
15:19
(15) погуглил на этот счет. А разве можно открыть форму несохраненного документа с вариантом синтаксиса "По имени" ?
пробую так :
                        ПараметрыФормы = Новый Структура("Ключ", ДокПеремещение.Ссылка);
            ОткрытьФорму("Документ.ПеремещениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,,,,,ОповещениеПриЗакрытии);
но ссылки на документ на момент открытия у меня то нет еще (
17 RomaH
 
naïve
14.01.20
15:28
... в порядке бреда

ДокПеремещение = Документы.ПеремещениеТоваров.СоздатьДокумент();
ДокПеремещение.Заполнить(ТекДанные.СсылкаЗаказ);

дальше записать и запомнить версию

в параметрах в ключ передать ссылку

после закрытия сравнить версию - если другая - значит записан
если та  же - удалить

но это криво-косо и костыли
надо смотреть в сторону открытия "объекта", но это вроде никак
18 RomaH
 
naïve
14.01.20
15:29
(16) ну ты же открыл
19 Likons
 
14.01.20
15:33
(18) получилось таким образом :

            ДокПеремещение = Документы.ПеремещениеТоваров.СоздатьДокумент();
            ДокПеремещение.Заполнить(ТекДанные.СсылкаЗаказ);
            ФормаПеремещения = ДокПеремещение.ПолучитьФорму("ФормаДокумента");
            ФормаОбработки = ОбработкаОбъект.ЭтотОбъект.ПолучитьФорму("Форма");
            ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ЭтаФорма);
            ПараметрыФормы = Новый Структура("Ключ", ДокПеремещение);
            ОткрытьФорму("Документ.ПеремещениеТоваров.Форма.ФормаДокумента",ПараметрыФормы,,,,,ОповещениеПриЗакрытии);

Но , процедура "ДляОповещения" все равно не отработала (

"дальше записать и запомнить версию" - не вариант , часто будут случаи , когда записывать документ не нужно вовсе.
20 polosov
 
14.01.20
15:33
(18) Рисуй свою форму документа во внешней обработке. Пусть с ней пользователь работает, а ты документы будешь создавать сам.
21 Likons
 
14.01.20
15:50
(20) тоже не вариант , к сожалению ( на форме документа много всяких нужных неэкспортных штук (
22 Likons
 
15.01.20
10:59
я тут не давно , не знаю , надо ли апать темы , на всякий случа АП)
23 pechkin
 
15.01.20
11:01
юзай владельца и обработку выбора.
оповещения не работают в ОФ
24 Ёпрст
 
15.01.20
11:05
(23) работают
25 RomaH
 
naïve
15.01.20
11:31
(19) фишка в том, что 1С не озаботились написать обработку ошибок как для ОписаниеОповещения так и для ОткрытьФорму

ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ДляОповещения",ЭтаФорма);

у тебя тип не верный в первом параметре
26 RomaH
 
naïve
15.01.20
11:33
+(25) - во втором параметре
27 pechkin
 
15.01.20
11:35
(26) а какой должен быть 2 параметр?
28 RomaH
 
naïve
15.01.20
11:35
а конфу править нельзя?
(27) а СП открой и почитай
29 RomaH
 
naïve
15.01.20
11:36
+(25)... хотя... а зачем ты обработку на ОФ делаешь? - делай на УФ
30 Ёпрст
 
15.01.20
11:47
Если открываемая форма документа - ОФ, то ты сам должен озаботится, и в ней ВыполнитьОбработкуОповещения сделать..
Хотя, это всё в ОФ не нужно
31 Likons
 
15.01.20
11:56
(25) а какой нужен ? Если смущает , что я передаю строку - так это норм , так и должно быть , если не ошибаюсь. Или о чем речь ?
32 RomaH
 
naïve
15.01.20
11:57
ТипЗнч(ЭтаФорма)    Форма    Тип
33 RomaH
 
naïve
15.01.20
11:57
а должно быть?
34 Likons
 
15.01.20
11:58
(28) (29) Конфу править , к сожалению нельзя ( а можно делать обработку на УФ , если конфа на ОФ и платформа 8.2 ?
35 Likons
 
15.01.20
11:59
(33) должен быть модуль , наверное , но в типовых примерах видел , что передавали именно обьект (
Как тогда передать именно модуль ?(
36 Likons
 
15.01.20
12:00
(23) а есть примеры ? или что погуглить ?
37 pechkin
 
15.01.20
12:02
(36) см (23)
38 RomaH
 
naïve
15.01.20
12:08
должно быть одно из трех
"ФормаКлиентскогоПриложения" <> "Форма"
... ну и далее по СП
39 ptiz
 
15.01.20
12:43
(0) ОбработкаЗаписиНовогоОбъекта() - смотрел?
40 ptiz
 
15.01.20
12:45
ФормаПеремещения = ДокПеремещение.ПолучитьФорму("ФормаДокумента", ЭтаФорма);
...
и лови в форме в обработчике ОбработкаЗаписиНовогоОбъекта()