Передать переменную из формы в процедуру ПередЗаписью модуля объекта #803389


#0 by Dmitriy_Kolesnikov
Есть очень тяжелая процедура ПередЗаписью, поэтому не хочу делить её функционал на две части - ту, что в форме и ту, что в модуле документа. Задача - передать таблицу значений из формы документа в ПередЗаписью модуля документа. Какие есть варианты?
#1 by h-sp
через ДополнительныеСвойства. Ваш ко.
#2 by Dvoe4nik
временное хранилище?
#3 by Irbis
Делить "тяжёлую процедуру" правильно! Желательно на процедурки, которыми можно пользоваться и из формы и из модуля. Не сейчас, так в дальнейшем всё равно придётся.
#4 by Dmitriy_Kolesnikov
там не поделишь. Есть ТЗ, которая формируется при открытии формы, затем меняется и передается обратно в ДокументОбъект при записи. При этом хитро обрабатывается, что-то идет в ТЧ, но многие данные пишутся в "подчиненные" документы. если разделить синхронизацию ТЗ с ТЧ документа - нарушится целостность данных. ещё нашел вариант - экспортная переменная в ДокументОбъект. Пробую.
#5 by Irbis
Налицо кривизна проектирования, и опять же налицо время устранения этой кривизны. Затраты на сохранение кривого решения уже даже разработчику кажутся излишними. Вам нужно крепко подумать.
#6 by Dmitriy_Kolesnikov
есть управляющий нетиповой документ, который создает, изменяет и контролирует штук 50 типовых документов. Что тут криво? Ящетаю, лезть напрямую в типовые регистры - ещё кривее. А с учетом того, что речь идет о финансовых документах, на которые завязан используемый типовой функционал - тем более. Сочинять своё СписаниеБезналичныхДенежныхСредств с блекджеком и шлюхами - значительно хуже.
#7 by Irbis
Криво именно то, что один документ редактирует другой. Это не по феншую. Если не хотим лезть в чужие регистры, используем свои и, желательно, в рамках отдельной собственной подсистемы.
#8 by FIXXXL
почему ТЗ не хранится как ТЧ документа?
#9 by Dmitriy_Kolesnikov
там автоматизируется создание большого количества платежек, например. А у документа СБДС есть много реквизитов, которые связаны с работой системы Клиент-Банк. Мне проще автоматизировать создание типовых документов по своим шаблонам, чем глубоко лезть в типовые механизмы. чтобы исключить дублирование данных. Каждое число хранится в базе только один раз, в каком-то одном документе. Если же оно нужно в форме другого документа - то берется из места хранения при открытии формы.
#10 by Dmitriy_Kolesnikov
Господа, я чота туплю, подскажите. Модуль формы, Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект имеет тип УправляемыеФормыСтруктура и в нем нет ДополнительныеСвойства. Почему нет, когда все остальные реквизиты и табличные части есть?
#11 by Dmitriy_Kolesnikov
ДокументОбъект = РеквизитФормыВЗначение("Объект"); и там всё есть.
#12 by lexasan
Тут может возникнуть проблема с тем, что нужно записывать именно вот этот объект - РеквизитФормыВЗначение("Объект"). Если запись вызывается методом формы Записать, то доп. сведения будут пустые, потому что объект может переполучается заново в модуле объекта.
#13 by drcrasher
что происходит в форме, должно оставаться в форме
#14 by h-sp
можно в типовой посмотреть. у них дополнительные свойства работают.
#15 by lodger
гнать тз в тч уже предлагали?
#16 by Dmitriy_Kolesnikov
вся запись происходит в процедуре Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Соответственно, я использую ТекущийОбъект.ДополнительныеСвойства.вставить("тзРаспределениеС", тзРаспределениеС);
#17 by lexasan
Так в итоге получилось передать или нет?
#18 by 1dvd
ты кажется сайтом ошибся. Тебе сюда:
#19 by Dmitriy_Kolesnikov
критикуешь - предлагай. А вешать ярлыки, не разобравшись, умеет любой дурак.
#20 by Dmitriy_Kolesnikov
да, всё через структуру ДокументОбъект.ДополнительныеСвойства - и туда, и обратно. Очень удобно.
#21 by 1dvd
Как ты себе представляешь программную запись документа без участия пользователя и без создания формы?
#22 by Dmitriy_Kolesnikov
леХко. ПередСохранением в модуле формы передаем измененные ТЧ обратно через ДополнительныеСвойства. В ПередСохранением модуля объекта: смотрим, есть ли измененная ТЗ в ДополнительныеСвойства. Если нет: копируем её из ТЧ, добавляем недостающие колонки, заполняем их автоматически. Всё это легкие операции, производятся в памяти, без запросов к БД. А потом уже проверяем, сравниваем и т. д. Могу целиком привести код, но его очень много.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С