|
Управляемые формы, присвоение реквизиту документа ссылки на сам документ. | ☑ | ||
---|---|---|---|---|
0
uncknow
19.06.12
✎
16:34
|
Задача:
Создан документ, еще не записан. Необходимо заполнить реквизит документа ссылкой на сам документ. Какие есть простые способы решить эту задачу?: 1. Не записывая документ. 2. Записывая документ. =) |
|||
1
zak555
19.06.12
✎
16:36
|
какой глубокий смысл в этом ?
|
|||
2
mikecool
19.06.12
✎
16:36
|
хреновая задача, имхо
|
|||
3
Stim
19.06.12
✎
16:36
|
"Необходимо заполнить реквизит документа ссылкой на сам документ"
пятнично! |
|||
4
mikecool
19.06.12
✎
16:37
|
+2 ибо у него и так есть Ссылка
|
|||
5
Dionis Sergeevich
19.06.12
✎
16:39
|
по ссылке получить объект и присвоить реквизиты самого документа и документа полученного по ссылке
|
|||
6
uncknow
19.06.12
✎
16:43
|
Неужто такая простая задача всех в ступор завела? :))
Для обычного режима задача не стоит и выведенного яйца :) |
|||
7
Fragster
гуру
19.06.12
✎
16:44
|
(6) для необычного - всё так же
|
|||
8
DSSS
19.06.12
✎
16:44
|
Присоединяюсь к (1)
|
|||
9
uncknow
19.06.12
✎
16:45
|
(7) Документ.Реквизит = Объект.Ссылка ?
|
|||
10
zak555
19.06.12
✎
16:45
|
(9) нахрена ?
|
|||
11
uncknow
19.06.12
✎
16:47
|
(1) Документ расчетов.
|
|||
12
Stim
19.06.12
✎
16:48
|
(11) расскажи задачу полностью, мб отговорим тебя от такого поступка
|
|||
13
zak555
19.06.12
✎
16:48
|
(11) ???
|
|||
14
Fragster
гуру
19.06.12
✎
16:50
|
нормальная задача... если идет цепочка документов, которая начинается со счета, при этом всю цепочку можно выбрать по одному реквизиту
|
|||
15
uncknow
19.06.12
✎
16:50
|
(12)(13) Да уже просто из принципа интересно.
(All) Сам Документ является документом расчетов. |
|||
16
Smallrat
19.06.12
✎
16:51
|
В модуле объекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если ЭтотОбъект.ЭтоНовый() Тогда мСсылкаНового = ЭтотОбъект.ПолучитьСсылкуНового(); Если НЕ ЗначениеЗаполнено(мСсылкаНового) Тогда мСсылкаНового = Документы[ЭтотОбъект.Метаданные().Имя].ПолучитьСсылку(); КонецЕсли; Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ПолучитьСсылкуНового()) Тогда ЭтотОбъект.УстановитьСсылкуНового(мСсылкаНового); КонецЕсли; КонецЕсли; Если НЕ ЗначениеЗаполнено(Договор) Тогда Если ЭтоНовый() Тогда СсылкаНаДокумент = мСсылкаНового; Иначе СсылкаНаДокумент = Ссылка; КонецЕсли; КонецЕсли; КонецПроцедуры
|
|||
17
zak555
19.06.12
✎
16:51
|
(14) так у вновь создаваемого док есть реквизит на докОсновании, где ссылка заранее определена
|
|||
18
fisher
19.06.12
✎
16:51
|
(9) Ну и плюс УстановитьСсылкуНового().
Хитрость только в доступе к объекту из модуля формы на сервере. Сначала нужно распаковать объект из основного реквизита формы через РеквизитФормыВЗначение, сделать с объектом чего надо, а потом запаковать его обратно в реквизит (через ЗначениеВРеквизитФормы). |
|||
19
Smallrat
19.06.12
✎
16:52
|
упс
Если НЕ ЗначениеЗаполнено(Договор) Тогда заменить на Если НЕ ЗначениеЗаполнено(СсылкаНаДокумент ) Тогда |
|||
20
Fragster
гуру
19.06.12
✎
16:52
|
(17) а у самого первого? так можно сделать сквозной реквизит, по которой и первый документ будет выбираться
|
|||
21
uncknow
19.06.12
✎
16:52
|
(16) Это Управляемое приложение
|
|||
22
Fragster
гуру
19.06.12
✎
16:53
|
(20)+ если вводить 3-й документ на основании второго - то реквизит с первым документом будет свой, а одкОснование - свой
|
|||
23
uncknow
19.06.12
✎
16:53
|
(18) Это решение я знаю :)
|
|||
24
fisher
19.06.12
✎
16:54
|
(18) + Или делать назначение ссылки и присвоение её реквизиту в ПриЧтенииНаСервере(), когда объект еще напрямую доступен.
(23) А в чем проблема тогда? |
|||
25
uncknow
19.06.12
✎
16:56
|
(24) Да как-то не кошерно, хочется попроще :))
|
|||
26
fisher
19.06.12
✎
16:58
|
(25) А в чем ты видишь принципиальную разницу с обычными формами? Там кашерно было, а тут некашерно?
|
|||
27
uncknow
19.06.12
✎
17:00
|
В обычных формах можно сразу получить ссылку на вновь созданный объект, это если мне память не изменяет =)
|
|||
28
fisher
19.06.12
✎
17:01
|
(27) Без записи и УстановитьСсылкуНового()? Изменяет.
|
|||
29
uncknow
19.06.12
✎
17:04
|
(28) Возможно старый совсем стал :)
|
|||
30
zak555
19.06.12
✎
17:04
|
(20) зачем первому реквизит ?
|
|||
31
mistеr
19.06.12
✎
17:04
|
(0)
1. Пока документ не записан, ссылки на него нет (в курсе?) 2. Если документ записан, ссылка в реквизите Ссылка (в курсе?). |
|||
32
mistеr
19.06.12
✎
17:05
|
(25) Не кошерно у вас спроектировано.
|
|||
33
fisher
19.06.12
✎
17:06
|
(31) Пока документ не записан, ему можно явно назначить ссылку с которой он будет записан (в курсе?)
|
|||
34
uncknow
19.06.12
✎
17:06
|
(31) Если бы не знал, тему бы не открывал :))
|
|||
35
uncknow
19.06.12
✎
17:08
|
(33) Интересно, в процедуре ПередЗаписьюНаСервере получится сделать?
|
|||
36
mistеr
19.06.12
✎
17:10
|
(34) Тогда задачу поставьте внятно.
(33) В курсе, что это меняет? Если бы это устраивало ТС, "тему бы не открывал". |
|||
37
mistеr
19.06.12
✎
17:13
|
(34) Вопрос в лоб: зачем документу копия уже имеющегося реквизита?
|
|||
38
uncknow
19.06.12
✎
17:13
|
(36) Да куда уж внятнее :)
|
|||
39
uncknow
19.06.12
✎
17:14
|
(37) В реквизите документа должна быть ссылка на сам документ
|
|||
40
fisher
19.06.12
✎
17:14
|
(35) Вообще-то, в любой момент получится.
|
|||
41
uncknow
19.06.12
✎
17:14
|
(17) А можно поподробнее?
|
|||
42
uncknow
19.06.12
✎
17:15
|
(40) В любой момент придется гонять форму в объект и обратно. А ПриЗаписиНаСервере уже есть объект.
|
|||
43
mistеr
19.06.12
✎
17:16
|
(39) "Так начальник сказал"?
|
|||
44
fisher
19.06.12
✎
17:18
|
(42) ПриЗаписиНаСервере отлично подходит под "любой момент". И это не единственное событие, где есть объект.
Но все-таки ты расскажи, зачем тебе дублировать функционал системного поля "Ссылка"? Или в чем отличие? |
|||
45
uncknow
19.06.12
✎
17:22
|
(44) Да чтож вы все к постановке задачи цепляетесь :))
Торговля, регистр сведений взаиморасчеты, документ расчетов. Убыл, позже буду. Может кто что подробнее расскажет, так как за Управляемый Интерфейс взялся недавно. С Уважением... :) |
|||
46
fisher
19.06.12
✎
17:35
|
(45) Я цепляюсь, потому что хочу вернуть взорванные мозги на место (вот не могу сообразить нафига это надо, хоть ты тресни). Что рассказывать подробнее - непонятно. Уже вроде все вдоль и поперек проехали несколько раз.
|
|||
47
Smallrat
19.06.12
✎
18:37
|
(46) вот например договора, которые вводятся на основании друг-друга (доп. соглашения). У договоров есть реквизит ОсновнойДоговор - который обозначает начало цепочки. При запросах часть данных берется из основного договора - соответственно, чтобы не мучаться, у основного договора реквизит ОсновнойДоговор заполнен им самим. Также очень просто выбирать всю цепочку разом - все документы, у которых ОсновнойДоговор = основному договору документа.
|
|||
48
Infsams654
19.06.12
✎
19:12
|
(47) - с этим-то все понятно (При запросах ... данных берется из уже записанных объектов), непонятно для чего нужен реквизит - ссылка незаписанного документа.
|
|||
49
Smallrat
19.06.12
✎
19:19
|
(48) сложно сказать ) я знаю что бывает затык как поставить при записи ссылку на сам, еще не записанный, документ - подумал что у ТС проблемы с этим и притащил решение в (16).
|
|||
50
mistеr
19.06.12
✎
19:52
|
(47) Чтобы не мучаться?
ГДЕ ОсновнойДоговор = &ОсновнойДоговор ИЛИ Ссылка = &ОсновнойДоговор Это мучение? |
|||
51
Smallrat
19.06.12
✎
20:31
|
(50) есть еще интерактивные отборы в формах списка и т.д.
да и вообще, это логично же, что если есть реквизит, который означает принадлежность к цепочке, то у первого документа в цепочке признак принадлежности тоже должен быть заполнен, по краййней мере мне так думается. |
|||
52
yukon
19.06.12
✎
20:44
|
Управляемое/неуправляемое - да какая разница?
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) СсылкаНового = Документы.Документ.ПолучитьСсылку(Новый УникальныйИдентификатор()); УстановитьСсылкуНового(СсылкаНового); ДокументОснование = СсылкаНового; КонецПроцедуры |
|||
53
mistеr
19.06.12
✎
21:26
|
(51) Логично, если *так* решил разработчик. От смысла "цепочки" зависит. В примере с договорами, *для меня* не логично, что основной договор является доп. соглашением к самому себе. :)
|
|||
54
chaplin-che
19.06.12
✎
21:44
|
Да бред какой-то, если просто подумать логически "зачем нужна ссылка, которой в базе еще нет" она ни на что не влияет, нигде не учавствует. Если надо что-то доделать - доделываем в момент записи, когда ссылка уже есть.
|
|||
55
Defender aka LINN
19.06.12
✎
21:59
|
(18) Для этого вообще-то ПередЗаписьюНаСервере есть
|
|||
56
experimentator76
19.06.12
✎
22:29
|
(54) бывает что ссылка нужна УЖЕ, а сам объект в базу будет записан позже
вообще все записи надо делать один раз и в конце обработки так надо... |
|||
57
chaplin-che
21.06.12
✎
20:01
|
(56) Не бывает такого, что объекту самому нужна ссылка о самом себе перед записью. Есть пример?
|
|||
58
EvgeniuXP
21.06.12
✎
20:18
|
(0) копай ПолучитьУникальный UID, его же и записывай.
|
|||
59
EvgeniuXP
21.06.12
✎
20:20
|
(57) но бывают случаи, когда нужно создать другой объект и ссылаясь на этот, который еще не записан.
UID вам в помощь. |
|||
60
chaplin-che
21.06.12
✎
20:33
|
(59) А если этот, основной будет не записан в итоге? Т.е. получается запись будет единовременной, согласны? А раз так, опять говорю, что ссылка не нужна логически, с этим не поспорить.
|
|||
61
Defender aka LINN
21.06.12
✎
22:50
|
(57) Справочники "номенклатура" и "Контрагенты" в УТ
|
|||
62
IamAlexy
21.06.12
✎
23:01
|
(57) контрагенты в любой типовой..
реквизит "головной контрагент" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |