Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Помогите разобраться с контекстом формы

Помогите разобраться с контекстом формы
Я
   vde69
 
18.07.18 - 13:11
преамбула:
1. УФ объекта, у объекта есть ТЧ "Расшифровка", в реквизите формы Объект.Расшифровка добавлена колонка СуммаПлатежаТекущая (в самом обьекте в ТЧ такой колонки нет)
2. есть команда объекта, вынесена на форму.

теперь магические действия:
1. что либо изменяю на форме (она становится модифицированой, со звездочкой),
2. жму на команду, при этом платформа сама вызывает процедуру записи объекта из формы выполняется полностью все процедуры как обьекта так и формы
3. только тут отладчик попадает в модуль команды, там я поставил только "Оповестить"
4. это оповещение нормально приходит в мою форму и там я принудительно заполняю поле реквизита СуммаПлатежаТекущая значение 55
5. после этого в форме реквизит СуммаПлатежаТекущая обнуляется

чего я только не пробовал, и ЭтаФорма.Прочитать() и ОбновитьОтображениеДанных() нифига не помогает... замер производительности не видит никакого постороннего кода после п.5

у меня только одно предположение, что выполнение команды происходит в каком-то отдельном контексте и этот контекст передается форме и ее процедурам, а после завершения команды форма получает старый контекст.

вполне возможно, что я не прав, но тогда растолкуйте что происходит и что делать....
 
 
   Вафель
 
1 - 18.07.18 - 13:14
нужно заполнять "ПослеЗаписиНаСервере"
   vde69
 
2 - 18.07.18 - 13:18
там все сделано, суть проблемы в том, что ПослеЗаписиНаСервере выполняется и там реквизит заполнен, но по окончании выполнения КОМАНДЫ он очищается (возвращается к старому контексту)
   lodger
 
3 - 18.07.18 - 13:19
(2) а зачем вы записываете объект ради выполнения команды формы? отказаться от записи никак?
   Вафель
 
4 - 18.07.18 - 13:20
(2) в твоем алгоритме такого нет
   vde69
 
5 - 18.07.18 - 13:23
(3) это делаю не я а платформа, это у них такая неожиданная фича.... любая команда если получает на вход модифицированый объект его записывает автоматом.

(0) единственно как мне пока удалось вывернутся - через ПодключитьОбработчикОжидания после выполнения команды и в нем принутительно заполнить нужные мне поля. Но это как-то через жопу...
   Вафель
 
6 - 18.07.18 - 13:25
(5) можено делать команды на заполнение объекта (без записи). кури БСП
   vde69
 
7 - 18.07.18 - 13:25
(4) самое интересное если я просто жму записать - все ок, а вот если жму команду - обнуляет (точнее не заполняет в моем контексте а заполняет где-то в другом контексте)
   vde69
 
8 - 18.07.18 - 13:26
(6) если тип параметра команды ДокументСсылка - то нельзя
   Вафель
 
9 - 18.07.18 - 13:29
(8) команды в БСП - это восвсем не платформенные команды
   Вафель
 
10 - 18.07.18 - 13:29
ну а так похоже на ошибку платформы. Пиши в 1с
 
 Рекламное место пустует
   Новиков
 
11 - 18.07.18 - 14:04
Приведи или весь код, или демо-cf.
   lodger
 
12 - 18.07.18 - 14:27
(5) "неожиданная фича" - команда формы или конфы? пробовали менять параметры? свойства команды?
имхо, команда "сложи а и б положи в ц" в контексте открытого объекта никогда и не требовала предварительной записи.
   Deon
 
13 - 18.07.18 - 14:34
(0) А флажок "Изменяет данные" у команды стоит же? Платформа же в этом случае, вроде, перечитывает данные формы после выполнения твоей команды
   Tonik992
 
14 - 18.07.18 - 14:37
(0) обнуление этого реквизита - это нормально и правильно.
Потому что после записи объект перечитывается и Объект на форме обновляется.. А у самого объекта нету ваших добавленных реквизитов/колонок, поэтому они становятся незаполненными. Все ваши вручную добавленные колоночки, реквизиты очищаются правильным образом..
ПослеЗаписиНаСервере() вам надо перезаполнять эти поля, вот и всё.
   Tonik992
 
15 - 18.07.18 - 14:43
и кстате в (1) уже советовали сделать. Никакая это не ошибка 1С.
Создайте прямо сейчас пустую конфу, документ с ТЧ. А на форме в эту ТЧ добавьте реквизит..
Попробуйте этот добавленный реквизит заполнить, и после этого записать/провести документ. Увидите, что значение реквизита будет очищено.
Никакой ошибки тут нет.
   Eiffil123
 
16 - 18.07.18 - 15:10
(14) +1
   Вафель
 
17 - 18.07.18 - 15:12
Но тс утверждает, что в после записи все заполнено
   Новиков
 
18 - 18.07.18 - 15:19
Именно поэтому нужен или весь код, или cf-демо, т.к. тут, Вафель прости, но явна где-то вафля какая-то сказочная.
   vde69
 
19 - 18.07.18 - 15:23
(13) проверил - "Изменяет данные" не помогает
(14) ПослеЗаписи - у меня стоит обработчик который заполняет этот реквизит, этот обработчик нормально отрабатывает и в модуле команды отладчиком видно, что все поля и реквизиты заполнены правильно.

а вот как только команда отработала - реквизиты меняются... при этом никакого кода не выполняется...
   Tonik992
 
20 - 18.07.18 - 15:24
(17) Я думаю ТС неуглядел куда-то..
Максимум что может быть - это расширение, не более.
Никакого "подмена" контекста не может быть в процедура ПослеЗаписиНаСервере().
   vde69
 
21 - 18.07.18 - 15:24
(18) у меня копипаст из 1с в инет не работает, не могу дать весь код...
   Tonik992
 
22 - 18.07.18 - 15:25
(19) А что еще за модуль команды?
   Вафель
 
23 - 18.07.18 - 15:25
а при чтении объекта вызывается?
   vde69
 
24 - 18.07.18 - 15:26
(20) еще раз, вопрос не в ПослеЗаписи

а в перед ОбработкаКоманды !!!! именно тогда и возникает не понятная ситуация.
   dezss
 
25 - 18.07.18 - 15:27
(24) тю...так ты делаешь Оповестить, при этом данные меняются и они перезаполняются на форме
   dezss
 
26 - 18.07.18 - 15:28
(25) + перезаполняй в обработке оповещения
   vde69
 
27 - 18.07.18 - 17:10
(23) точно !


добавил в форму

Процедура ПриЧтенииНаСервере()
  СкопироватьДанныеОбхектаВДанныеФормы()// тут идет заполнение реквизита

КонецПроцедуры


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует