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

Добавил программно реквизит ТЧ на форму. Как мне его получить в подписке?

Добавил программно реквизит ТЧ на форму. Как мне его получить в подписке?
Я
   golem14
 
18.08.20 - 12:13
Добавил программно реквизит ТЧ на форму.
Как мне его получить в подписке на обработку проведения?
Пробовал через ДополнительныеСвойства, но в модуле объекта перед записью этого реквизита уже нет.
   Fragster
 
1 - 18.08.20 - 12:19
нужно в форме в передзаписью в ТекущийОбъект его впихнуть
   golem14
 
2 - 18.08.20 - 12:24
Добавлю что речь идёт про ERP. В модуле формы нет ТекущийОбъект, есть ЭтотОбъект, но у него нет ДополнительныеСвойства. (1)
   Fragster
 
3 - 18.08.20 - 12:26
Это параметр в обработчике ПередЗаписью и некоторых других
   dmt
 
4 - 18.08.20 - 12:27
ПередЗаписьюНаСервере(<Отказ>, <ТекущийОбъект>, <ПараметрыЗаписи>)
   ГдеСобакаЗарыта
 
5 - 18.08.20 - 12:29
Очевидно же, нужно добавить реквизит в объект
   PuhUfa
 
6 - 18.08.20 - 12:35
(0) А что за данные у тебя в реквизите ТЧ и где ты их хранишь когда нет формы документа?
   golem14
 
7 - 18.08.20 - 13:02
(5) да, это было бы намного проще, но не хочется менять типовой объект.
(6) статус, хранится в специальном регистре.
   PuhUfa
 
8 - 18.08.20 - 13:05
(7) Ну так и бери его из регистра в обработке проведения
   golem14
 
9 - 18.08.20 - 13:06
(8) неее, хотят еще чтобы можно было вручную менять
   PuhUfa
 
10 - 18.08.20 - 13:10
(9) Ну так пусть меняют. В чем проблема то. Что то у меня складывается подозрение, что ты данные этого реквизиты хочешь записывать в специальный регистр как раз в обработке проведения -)
   golem14
 
11 - 18.08.20 - 13:17
(10) точно так
   Mihasya
 
12 - 18.08.20 - 13:17
(2)

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    ТекущийОбъект.ДополнительныеСвойства.Добавить( ... )

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

Если бы регистр был непериодический и просто туда записывался статус, то нужно было бы при проведении любого документа анализировать какой же статус теперь присвоить.
   ASU_Diamond
 
36 - 19.08.20 - 07:58
(35) эти статусы где потом используются?
   golem14
 
37 - 19.08.20 - 08:00
(36) в этих же документах, для отслеживания всей цепочки
   ASU_Diamond
 
38 - 19.08.20 - 08:19
(37) тогда не понятно зачем их хранить, кроме тех что вручную поменяли.
Когда добавил реквизит в старых документах (которые были введены до ввода реквизита) как отображались статусы?
   golem14
 
39 - 19.08.20 - 08:24
(38) чтобы не определять их сложным запросом при открытии, а быстро считывать из регистра простым запросом.
Раньше статусов по каждой строке ТЧ не было.


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