|
Не обновляется представление ссылки в форме документа | ☑ | ||
---|---|---|---|---|
0
Invis91
22.08.13
✎
14:20
|
Всем добрый день!
Есть 2 документа, напр., документ1, документ2. И в эти документы ссылаются друг на друга, т.е. документ1.реквизит1 = документ2, документ2.реквизит2 = документ1. При записи нового документа1 должен автоматически создаться документ2 и перекрестные вышеперечисленные ссылки должны проставиться. Что собственно делаю я: Документ 1. Модуль объекта: перем СсылкаНаДокумент2; Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) СсылкаНаДокумент2= Документы.Документ2.ПолучитьСсылку(Новый УникальныйИдентификатор); Реквизит1 = СсылкаНаДокумент2; КонецПроцедуры Процедура ПриЗаписи(Отказ) Документ2 = Документы.Документ2.СоздатьДокумент(); Документ2.Дата = Дата; Документ2.Реквизит2 = Ссылка; Документ2.УстановитьСсылкуНового(СсылкаНаДокумент2); Документ2.Записать(); КонецПроцедуры И вот в чем беда: на форме документа1 в поле реквизит1 указано след.: "<Объект не найден> (608:8b24bb620c3bc86040d492ee186db145)". На самом деле объект создан и записан (см. при записи), если нажать на лупу у поля реквизит1, то открывается документ2. Все как надо, но ссылка отображается как "объект не найден". Если закрыть и открыть документ заново - то представление ссылки обновляется и в реквизите1 мы видим "документ2 N123 от..." ЭтаФорма.Обновить() и ЭтаФорма.Прочитать() не помогает. |
|||
1
Infsams654
22.08.13
✎
15:17
|
(0) а зачем так-то ?
проще Процедура ПослеЗаписи(Отказ) Документ2 = Документы.Документ2.СоздатьДокумент(); Документ2.Дата = Дата; Документ2.Реквизит2 = Ссылка; Документ2.Записать(); Реквизит1 = Документ2.Ссылка; Записать(); КонецПроцедуры |
|||
2
Infsams654
22.08.13
✎
15:20
|
(1) + сорри, тут еще надо проверить, не пустой ли Реквизит1, а то зациклит
|
|||
3
Infsams654
22.08.13
✎
15:49
|
(0) ну что, смысл понятен, как дела ? Да еще в ПослеЗаписи параметра нет, это я скопипастил ненароком
|
|||
4
Invis91
22.08.13
✎
15:59
|
Ну так тоже можно сделать, я об этом тоже думал, но это уже костыли напоминает) чисто с эстетической точки зрения не хочется документ дважды записывать,ведь все что надо уже есть, необходимо всего-лишь обновить представление ссылки, а как этот сделать - ума не приложу)
|
|||
5
luns
22.08.13
✎
16:14
|
этаформа.обновить()?
|
|||
6
Infsams654
22.08.13
✎
16:18
|
(4) не знай, УстановитьСсылкуНового больший костыль. По крайней мере, как-то давно в 8.1 тоже с этим парился. В типовых крайне редко встречается. Не знай, может в новых платформах это должно и работать, сомневаюсь, однако...
|
|||
7
Infsams654
22.08.13
✎
16:20
|
(6) + даже, если сделал УстановитьСсылкуНового, как форма без записи в базе достанет эту ссылку ?
|
|||
8
Infsams654
22.08.13
✎
16:22
|
(7) + вернее объект, которого по этой ссылке в базе нет
|
|||
9
Invis91
22.08.13
✎
16:31
|
(5) это было первое, что попробовал - не помогает
(7) если я перезапишу документ хоть 100 раз интерактивно, не закрывая формы, все равно будет отображаться <объект не найден>. Вообщем, представление ссылки не обновляется, пока форму не закроешь-откроешь. Как мне кажется, что что-то подобное я в типовых видел, но где - сейчас не вспомню |
|||
10
Infsams654
22.08.13
✎
16:37
|
(9) "если я перезапишу документ хоть 100 раз интерактивно, не закрывая формы" - вот тут ты не прав, если объект в базе, то по (5).этаформа.обновить() - точно отобразит
|
|||
11
Invis91
22.08.13
✎
16:42
|
(10) повторюсь, этаформа.обновить() - это было первое, что я попробовал. Не обновляет эта процедура представление ссылки никак. Даже если я нажму в панели документа типовую кнопку "перечитать" - тоже ничего не произойдет, как был объект не найден, так и останется.
|
|||
12
Infsams654
22.08.13
✎
16:43
|
(9) плюнь ты на УстановитьСсылкуНового. Запиши Документ1, в событии ПослеЗаписи создай Документ2, назначив в его реквизите ссылку на Документ1, запиши Документ2. После чего, перезапиши Документ1 с реквизитом на Документ1.
И все будет в шоколаде этаформа.обновить() |
|||
13
Infsams654
22.08.13
✎
16:44
|
(12) перезапиши Документ1 с реквизитом на Документ2
|
|||
14
Infsams654
22.08.13
✎
16:46
|
(11) ОбновитьОтображениеДанных()
|
|||
15
Invis91
22.08.13
✎
16:51
|
(12) да просто самому уже интересно, можно ли это вообще реализовать
(14) у меня обычные формы, не уф, так что этаформа.обновить() |
|||
16
Kayen
22.08.13
✎
16:58
|
ОповеститьОбИзменении(<Ссылка>) - где ссылка это документ который был изменён.
|
|||
17
Invis91
22.08.13
✎
17:03
|
(16) у меня обычное поле ввода на совершенно обычной форме документа, причем не уф.
ОповеститьОбИзменении (NotifyChanged) Описание варианта метода: Уведомляет динамические списки на клиенте об изменении одного объекта базы данных или одной записи регистра. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |