Имя: Пароль:
1C
 
Добавил программно реквизит ТЧ на форму. Как мне его получить в подписке?
,
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) чтобы не определять их сложным запросом при открытии, а быстро считывать из регистра простым запросом.
Раньше статусов по каждой строке ТЧ не было.