Управляемые формы Модифицированность() объектов #736336


#0 by ProDeveloper
В УФ существует проблема - в событии ПередЗаписью в модуле объекта метод Модифицированность всегда возвращает Истина, даже если мы ничего не меняли в объекте. Происходит это из за того, что перед записью начинается транзакция записи. Объект до транзакции <> объекту в транзакции или после транзакции из-за версии данных, которая при записи всегда изменяется. В связи с этим становится невозможным красивая реализация отказа от записи объектов в подписке ПередЗаписью Код в подписке ПередЗаписью вида в УФ теряет свой смысл. Пока что сделал через костыль, тупым перебором реквизитов и ТЧ в цикле, ТЧ сравнивать было лениво, поэтому ТЧ преобразую в строку и сравниваю строковые представления ТЧ. Есть у кого соображения как ещё можно выкрутиться?
#1 by Nuobu
Перенести в модули документов и справочников не подходит?
#2 by Nuobu
Тоесть документов.
#3 by ProDeveloper
А если подумать? А если такой функционал нужен для всех справочников и документов коих в ERP 2.0 превеликое множество? Что неужели будешь править все формы спр-ков и доков? А обновлять потом как? Слив засчитан :)
#4 by DmitrO
"Происходит это из за того, что перед записью начинается транзакция записи" Ну это не из-за транзакции записи непосредственно конечно, а из-за того, что экземпляр объект в УФ получается десериализацией из данных формы, соответственно он всегда модифицирован. А вообще изначально задача-то как стоит? Отказаться от записи в подписке если объект реально не модифицирован в форме? И получить собственно получить исключение?
#5 by ProDeveloper
Изначально задача стоит так "Запретить изменение объектов закаченных из сторонней БД (Oracle)". Соответственно есть РС.СоответсвияОбъектов где живут IDшники(ID Oracle, ID 1C, ЗагруженИзСтороннейБД-булево). Реализованно через подписку на событие - в подписке ПередЗаписью происходит проверка на модификацию объекта, если объект модифицирован и в РС.СоответсвияОбъектов имеется этот объект ID 1C с признаком ЗагруженИзСтороннейБД = истина, тогда отказ.
#6 by DmitrO
тут противоречие в том что: "в форме" и "в подписке" - это не для 1С, они не поддерживают сценарии работы с подписками для целей логики форм. по идее надо в форме перенести признак модифицированности из управляемой формы, например, в дополнительные свойства объекта, чтобы получить его в подписке, но сделать такой перенос можно только в событиях самой формы, соответственно придется залезать в форму. а зачем при этом проверять модифицированность? если загружен просто Отказ и все.. разве нет?
#7 by ProDeveloper
Никаких противоречий нет, ты просто не допонял. Все уже реализованно и работает. Смотри код в . Просто хотелось узнать у людей вдруг кто знает более изящное решение.
#8 by ProDeveloper
Смысла залезать в форму каждого объекта справочника и документа коих в ERP 2.0 превеликое множество не вижу. Не вижу ещё и потому, что с таким подходом получаем гемор при обновлении.
#9 by DmitrO
А если документ загружен (в РС.СоответсвияОбъектов есть соответствие) но не модифицирован, запись должна пройти без отказа?
#10 by ProDeveloper
Да, допустим захотели перепровести документ по той или иной причине. Причем не забывай, что перепровести документ можно не открывая форму документа, тупо из списка.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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