|
Передать переменную из формы в процедуру ПередЗаписью модуля объекта | ☑ | ||
---|---|---|---|---|
0
Dmitriy_
Kolesnikov 21.08.17
✎
11:07
|
Есть очень тяжелая процедура ПередЗаписью, поэтому не хочу делить её функционал на две части - ту, что в форме и ту, что в модуле документа.
Задача - передать таблицу значений из формы документа в ПередЗаписью модуля документа. Какие есть варианты? |
|||
1
h-sp
21.08.17
✎
11:09
|
(0) через ДополнительныеСвойства. Ваш ко.
|
|||
2
Dvoe4nik
21.08.17
✎
11:13
|
(0) временное хранилище?
|
|||
3
Irbis
21.08.17
✎
11:29
|
Делить "тяжёлую процедуру" правильно! Желательно на процедурки, которыми можно пользоваться и из формы и из модуля.
Не сейчас, так в дальнейшем всё равно придётся. |
|||
4
Dmitriy_
Kolesnikov 21.08.17
✎
11:42
|
(3) там не поделишь. Есть ТЗ, которая формируется при открытии формы, затем меняется и передается обратно в ДокументОбъект при записи. При этом хитро обрабатывается, что-то идет в ТЧ, но многие данные пишутся в "подчиненные" документы. если разделить синхронизацию ТЗ с ТЧ документа - нарушится целостность данных.
(1) ещё нашел вариант - экспортная переменная в ДокументОбъект. Пробую. |
|||
5
Irbis
21.08.17
✎
11:45
|
(4) Налицо кривизна проектирования, и опять же налицо время устранения этой кривизны. Затраты на сохранение кривого решения уже даже разработчику кажутся излишними. Вам нужно крепко подумать.
|
|||
6
Dmitriy_
Kolesnikov 21.08.17
✎
11:59
|
(5) есть управляющий нетиповой документ, который создает, изменяет и контролирует штук 50 типовых документов.
Что тут криво? Ящетаю, лезть напрямую в типовые регистры - ещё кривее. А с учетом того, что речь идет о финансовых документах, на которые завязан используемый типовой функционал - тем более. Сочинять своё СписаниеБезналичныхДенежныхСредств с блекджеком и шлюхами - значительно хуже. |
|||
7
Irbis
21.08.17
✎
12:02
|
(6) Криво именно то, что один документ редактирует другой. Это не по феншую. Если не хотим лезть в чужие регистры, используем свои и, желательно, в рамках отдельной собственной подсистемы.
|
|||
8
FIXXXL
21.08.17
✎
12:03
|
(6) почему ТЗ не хранится как ТЧ документа?
|
|||
9
Dmitriy_
Kolesnikov 21.08.17
✎
14:41
|
(7) там автоматизируется создание большого количества платежек, например. А у документа СБДС есть много реквизитов, которые связаны с работой системы Клиент-Банк. Мне проще автоматизировать создание типовых документов по своим шаблонам, чем глубоко лезть в типовые механизмы.
(8) чтобы исключить дублирование данных. Каждое число хранится в базе только один раз, в каком-то одном документе. Если же оно нужно в форме другого документа - то берется из места хранения при открытии формы. |
|||
10
Dmitriy_
Kolesnikov 21.08.17
✎
14:45
|
Господа, я чота туплю, подскажите.
Модуль формы, Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Объект.ДополнительныеСвойства.Свойство("тзРаспределение") и Объект.ДополнительныеСвойства.тзРаспределение.Количество() > 0 тогда Объект.Распределение.Загрузить(Объект.ДополнительныеСвойства.тзРаспределение); КонецЕсли; Объект имеет тип УправляемыеФормыСтруктура и в нем нет ДополнительныеСвойства. Почему нет, когда все остальные реквизиты и табличные части есть? |
|||
11
Dmitriy_
Kolesnikov 21.08.17
✎
15:21
|
(10)
ДокументОбъект = РеквизитФормыВЗначение("Объект"); и там всё есть. |
|||
12
lexasan
21.08.17
✎
15:32
|
(11) Тут может возникнуть проблема с тем, что нужно записывать именно вот этот объект -
РеквизитФормыВЗначение("Объект"). Если запись вызывается методом формы Записать, то доп. сведения будут пустые, потому что объект может переполучается заново в модуле объекта. |
|||
13
drcrasher
21.08.17
✎
15:49
|
(0) что происходит в форме, должно оставаться в форме
|
|||
14
h-sp
21.08.17
✎
16:10
|
(12) можно в типовой посмотреть. у них дополнительные свойства работают.
|
|||
15
lodger
21.08.17
✎
17:27
|
(0) гнать тз в тч уже предлагали?
|
|||
16
Dmitriy_
Kolesnikov 21.08.17
✎
20:14
|
(12) вся запись происходит в процедуре
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Соответственно, я использую ТекущийОбъект.ДополнительныеСвойства.вставить("тзРаспределениеС", тзРаспределениеС); |
|||
17
lexasan
22.08.17
✎
12:32
|
(16) Так в итоге получилось передать или нет?
|
|||
18
1dvd
22.08.17
✎
12:41
|
ты кажется сайтом ошибся. Тебе сюда: http://govnokod.ru/
|
|||
19
Dmitriy_
Kolesnikov 28.08.17
✎
11:55
|
(18) критикуешь - предлагай.
А вешать ярлыки, не разобравшись, умеет любой дурак. |
|||
20
Dmitriy_
Kolesnikov 28.08.17
✎
11:56
|
(17) да, всё через структуру ДокументОбъект.ДополнительныеСвойства - и туда, и обратно.
Очень удобно. |
|||
21
1dvd
28.08.17
✎
12:41
|
(19) Как ты себе представляешь программную запись документа без участия пользователя и без создания формы?
|
|||
22
Dmitriy_
Kolesnikov 28.08.17
✎
21:21
|
(21) леХко.
ПередСохранением в модуле формы передаем измененные ТЧ обратно через ДополнительныеСвойства. В ПередСохранением модуля объекта: смотрим, есть ли измененная ТЗ в ДополнительныеСвойства. Если нет: копируем её из ТЧ, добавляем недостающие колонки, заполняем их автоматически. Всё это легкие операции, производятся в памяти, без запросов к БД. А потом уже проверяем, сравниваем и т. д. Могу целиком привести код, но его очень много. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |