Имя: Пароль:
1C
 
Почему в типовых глобальные процедуры для модуля объекта не популярны?
,
0 Бешеный заяц
 
22.08.19
17:44
В процедуру документа "ОбработкаЗаполнения" требуется передать параметр, на основании которого при записи документа необходимо создать запись в независимом регистре сведений, в самом объекте хранить значение негде, доп реквизит мутить под каждый чих тоже,остаётся в модуле документа объявить переменную в которую смогу поместить значение своего параметра и в дальнейшим в процедуре приЗаписи счетать его и сделать всё что мне удобно.Смотрю остальные модули документов и вижу что подобного сейчас некто не делает.
Вопрос возник, как быть? куда параметр поместить чтобы потом им воспользоваться? с современной конфой ERP только столкнулся и не хотелось бы откровенно гов..кодить.
1 Euguln
 
22.08.19
17:48
Возможно поможет:
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ДополнительныеСвойства (AdditionalProperties)
Использование:
Только чтение.
Описание:
Тип: Структура.
Может использоваться в тех случаях, когда необходимо хранить некоторые значения, связанные с объектом, на время выполнения некоторых операций, без изменения объекта. Например, при обработке событий в подписке на события.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
2 shuhard
 
22.08.19
17:48
(0) [в самом объекте хранить значение негде, доп реквизит мутить под каждый чих тоже] - дык у объекта для этого есть ДополнительныеСвойства, например:
ОбъектСклад.ДополнительныеСвойства.Вставить("ПропуститьОбновлениеФлагаКонтроляОперативныхОстатков");
3 shuhard
 
22.08.19
17:48
(2) +1
код из типовой ERP
4 Бешеный заяц
 
22.08.19
17:51
(3) ок спасибо
5 Бешеный заяц
 
23.08.19
08:58
поднимаю тему, не получилось данное действо. когда форма открывается все параметры в "ДополнительныеСвойства" живы, при записи уже в свойствах ничего нет.
может какие особенности есть? форма открывается через ОткрытьФорму туда же параметры передаю.
данные в дополнительные свойства помещаю в процедуре обработка заполнения ДополнительныеСвойства.Вставить("ДокументЗаказа", ДокументЗаказа);
6 Бешеный заяц
 
23.08.19
09:16
еще раз отладчиком глянул, самое начало процедуры Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
в "ДополнительныеСвойства" пусто
7 Бешеный заяц
 
23.08.19
09:18
предполагаю если объект не записан время жизни "ДополнительныеСвойства" пока выполняется код
8 Провинциальный 1сник
 
23.08.19
09:22
В управляемых формах глобальные переменные модуля существуют только в контексте серверного вызова и между вызовами обнуляются. Их можно использовать, чтобы не плодить параметры для передачи данных между процедурами в пределах одного вызова сервера, и только. Для того же, чтобы хранить данные между серверными вызовами, они должны быть сериализуемыми (за исключением багоюза с _пока удачными_ попытками сериализовать несериализуемое через структуру).
9 mikecool
 
23.08.19
09:24
(5) хз, что ты там делаешь
но ДополнительныеСвойства объекта живы на всей цепочке, пока жив объект, включая запись, проведение, подписки на события
10 Бешеный заяц
 
23.08.19
09:30
(8) как мне ссылку на объект "пронести" между серверными вызовами грамотно? получаю параметр из обработки заполнения и сохранить необходимо до процедуры при записи.
(9) Типовой документ в ERP "ПриобретениеТоваровУслуг" точка остановка на процедуре "ПередЗаписью"  ДополнительныеСвойства пустые хотя когда форма открывалась значения были причем не только мои.
Может причина в том что объект не записан? или это не важно. открытие формы происходит через переопрееляемую команду?
11 Бешеный заяц
 
23.08.19
09:36
если использовать "ЭтотОбъект" ? ЭтотОбъект.ДополнительныеСвойства
Или это без разницы?
12 FIXXXL
 
23.08.19
09:51
(10) сделай уже реквизит формы
13 Cyberhawk
 
23.08.19
10:08
(9) "живы на всей цепочке, пока жив объект" // Правильно. Именно поэтому заполнение доп. свойств в сценарии открытия формы, где вызывается в т.ч. и обработка заполнения, будут живы до первого ухода на клиент (открытие формы).
Потом при каждом серверном вызове объект уже создается новый.
14 Cyberhawk
 
23.08.19
10:09
Одним из правильных сценариев для автора: в ПриСозданииНаСервере зачитывать доп. свойства и сохранять их в программно создаваемый реквизит формы, а в ПередЗаписьюНаСервере класть обратно в объект.
15 Бешеный заяц
 
23.08.19
10:42
(14) не совсем понял, при создании еа сервере считываю параметры которые переданы параметром в ОткрытьФорму,
после создаю программно реквизит и сохраняю нужное значение, когда нажимаем записать отрабатывает ПередЗаписьюНаСервере где мы достаём нужное нам значение, тут непонятно куда кладем "ДополнительныеСвойства" же не доступны?
16 Cyberhawk
 
23.08.19
10:43
(15) "ПередЗаписьюНаСервере где мы достаём нужное нам значение, тут непонятно куда кладем "ДополнительныеСвойства" же не доступны?" // Параметры-то этого обработчика посмотри
17 Бешеный заяц
 
23.08.19
10:47
(16) а понял спасибо
18 Вафель
 
23.08.19
10:51
на уф объект живет не долго и во время формы его нет (если не приложить отдельных усилий)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.