|
Добавил программно реквизит ТЧ на форму. Как мне его получить в подписке? | ☑ | ||
---|---|---|---|---|
0
golem14
18.08.20
✎
12:13
|
Добавил программно реквизит ТЧ на форму.
Как мне его получить в подписке на обработку проведения? Пробовал через ДополнительныеСвойства, но в модуле объекта перед записью этого реквизита уже нет. |
|||
1
Fragster
гуру
18.08.20
✎
12:19
|
нужно в форме в передзаписью в ТекущийОбъект его впихнуть
|
|||
2
golem14
18.08.20
✎
12:24
|
Добавлю что речь идёт про ERP. В модуле формы нет ТекущийОбъект, есть ЭтотОбъект, но у него нет ДополнительныеСвойства. (1)
|
|||
3
Fragster
гуру
18.08.20
✎
12:26
|
Это параметр в обработчике ПередЗаписью и некоторых других
|
|||
4
dmt
18.08.20
✎
12:27
|
ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)
|
|||
5
ГдеСобака Зарыта
18.08.20
✎
12:29
|
Очевидно же, нужно добавить реквизит в объект
|
|||
6
PuhUfa
18.08.20
✎
12:35
|
(0) А что за данные у тебя в реквизите ТЧ и где ты их хранишь когда нет формы документа?
|
|||
7
golem14
18.08.20
✎
13:02
|
(5) да, это было бы намного проще, но не хочется менять типовой объект.
(6) статус, хранится в специальном регистре. |
|||
8
PuhUfa
18.08.20
✎
13:05
|
(7) Ну так и бери его из регистра в обработке проведения
|
|||
9
golem14
18.08.20
✎
13:06
|
(8) неее, хотят еще чтобы можно было вручную менять
|
|||
10
PuhUfa
18.08.20
✎
13:10
|
(9) Ну так пусть меняют. В чем проблема то. Что то у меня складывается подозрение, что ты данные этого реквизиты хочешь записывать в специальный регистр как раз в обработке проведения -)
|
|||
11
golem14
18.08.20
✎
13:17
|
(10) точно так
|
|||
12
Mihasya
18.08.20
✎
13:17
|
(2)
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) ТекущийОбъект.ДополнительныеСвойства.Добавить( ... ) КонецПроцедуры |
|||
13
golem14
18.08.20
✎
13:24
|
Ура, получилось!!!
Всем большое спасибо, вот код: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) ... ТЧТовары = РеквизитФормыВЗначение("Объект.Товары"); ТекущийОбъект.ДополнительныеСвойства.Вставить("ТЧТовары", ТЧТовары.Выгрузить( , "Номенклатура, Характеристика, СтатусЗаявки")); КонецПроцедуры |
|||
14
PuhUfa
18.08.20
✎
13:25
|
(11) А потом запустят, например, восстановление последовательности и чем ты будешь заполнять свой специальный регистр? Или проще.... пользователь заполнил форму документа, ЗАПИСАЛ.... закрыл... открыл... а в твоем реквизите ТЧ пусто... т.к. ты записываешь эти данные при проведении, а его не было.
|
|||
15
Mihasya
18.08.20
✎
13:27
|
(14) Думаю при восстановлении последовательности статус заявки не меняется )) он видимо меняется только интерактивно в форме...
|
|||
16
Aleksandr N
18.08.20
✎
13:34
|
(13) изврат какой-то. объект.товары же. так и получайте через источник товары.
|
|||
17
Aleksandr N
18.08.20
✎
13:35
|
(16) * источник.товары
|
|||
18
golem14
18.08.20
✎
13:36
|
(17) его там нет, так как реквизит был добавлен программно.
|
|||
19
Aleksandr N
18.08.20
✎
13:38
|
(18) Объект.Товары? Не может быть такого.
|
|||
20
golem14
18.08.20
✎
13:38
|
(14) (15) Это очень в точку замечание, но при перепроведении статус отчего вдруг будет менятся? да и кому нужен статус непроведенного документа, а если документ проведен то при записи срабатывает обработка проведения.
|
|||
21
golem14
18.08.20
✎
13:39
|
(19) Объект.Товары.СтатусЗаявки
|
|||
22
ASU_Diamond
18.08.20
✎
13:41
|
(20) ты хочешь прописать сохранение реквизита в модуль проведения, значит у тебя при любом перепроведении будет обращаться к твоей подписке и сохранять реквизит. А раз форма не была открыта, то реквизит у тебя будет пустой.
|
|||
23
FIXXXL
18.08.20
✎
13:53
|
(22) его вообще не будет в доп.свойствах объекта, который выгрузка из ТЧ
такое себе чисто интерактивное редактирование :) |
|||
24
golem14
18.08.20
✎
13:55
|
(22) нет, он устанавливается при проведении, там есть своя логика какой статус поставить. Еще можно и в форме установить статус, тогда именно он запишется в регистр. Ну а если форма не была открыта тут да хороший вопрос, вроде не сложно проверить что он заполнен, но тут есть неопределенность да, спасибо за замечание, может всё по другому переделаю.
|
|||
25
FIXXXL
18.08.20
✎
13:57
|
(24) так на форме или при проведении Статус встает?
|
|||
26
golem14
18.08.20
✎
13:58
|
(25) Вообще задача такая: чтобы устанавливался при проведении, но если что хотим устанавливать вручную в форме.
|
|||
27
FIXXXL
18.08.20
✎
14:01
|
(26) ну тогда при проведении - только незаполненные строки обновлять
сначала из доп.свойств, если они приехали, затем пустые - по логике в коде |
|||
28
golem14
18.08.20
✎
14:09
|
(27) Да, все было бы просто, но при открытии формы статусы считываются из регистра и отображаются на форме, пользователь может поменять как хочет, затем при проведении записываю все статусы как есть обратно в регистр, а которые пустые - по логике, но если форма не была открыта - то все статусы при перепроведении пустые.
|
|||
29
ASU_Diamond
18.08.20
✎
14:49
|
(28) а можно вопрос: а для чего вводить реквизит, который заполняется программно (пока пропустим то, что вручную могут менять)? И зачем его заполнять при проведении? Можно же при открытии по алгоритму прогонять и выводить нужный статус.
|
|||
30
FIXXXL
18.08.20
✎
16:29
|
(28) если пустые - заполняй по логике
пустые после считывания из РС в момент проведения |
|||
31
golem14
19.08.20
✎
05:53
|
(29) Можно и так. Но, дело в том что на статус влияет много разных документов, сложный запрос получается, гораздо производительнее если статус будет хранится в периодическом регистре сведений подчиненном регистратору. Каждый документ пишет в регистр статус. Затем при открытии просто беру срез последних. Всё работало бы идеально, если бы не нужно было иметь возможность править руками в документе.
|
|||
32
ASU_Diamond
19.08.20
✎
06:59
|
(31) так у тебя ещё и регистр периодический? Для чего?
|
|||
33
golem14
19.08.20
✎
07:41
|
(32) Как раз для того чтобы можно было не боятся что кто-то перепроведет документ который раньше в цепочке и изменит статус.
|
|||
34
ASU_Diamond
19.08.20
✎
07:48
|
(33) как это связано?
|
|||
35
golem14
19.08.20
✎
07:55
|
Всё просто. Каждый документ в цепочке делает запись со своим статусом и датой.
при открытии любого документа просто делаю запрос к этому регистру на срез последних на текущую дату и получаю актуальный статус. Если бы регистр был непериодический и просто туда записывался статус, то нужно было бы при проведении любого документа анализировать какой же статус теперь присвоить. |
|||
36
ASU_Diamond
19.08.20
✎
07:58
|
(35) эти статусы где потом используются?
|
|||
37
golem14
19.08.20
✎
08:00
|
(36) в этих же документах, для отслеживания всей цепочки
|
|||
38
ASU_Diamond
19.08.20
✎
08:19
|
(37) тогда не понятно зачем их хранить, кроме тех что вручную поменяли.
Когда добавил реквизит в старых документах (которые были введены до ввода реквизита) как отображались статусы? |
|||
39
golem14
19.08.20
✎
08:24
|
(38) чтобы не определять их сложным запросом при открытии, а быстро считывать из регистра простым запросом.
Раньше статусов по каждой строке ТЧ не было. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |