Доброго дня всем.
Столкнулся со следующей задачей.
Есть самописная конфигурация на основе бухгалтерии.
Делается сложная обработка для одновременной работы с различными объектами.
Собственно задача. У управляемой формы есть одновременно несколько реквизитов типа СправочникОбъект, при этом ни один из них не является основным. Все имеют на форме связанные поля, могут изменять данные и у всех стоит соответствующий признак. При изменении пользователем данных должна происходить запись объекта на сервере. Факт изменения пользователем данных проверяется с помощью флага ЭтаФорма.Модифицированность. Каким образом на сервере или на клиенте можно определить [I]какой именно[/I] объект был модифицирован?
У объектов на клиенте свойство Модифицированность отсутствует.
Попытался проверить это свойство на сервере следующим способом:
[CODE]
&НаСервере
Контрагент = РеквизитФормыВЗначение("Потребитель");
Если Контрагент.Модифицированность Тогда
Контрагент.Записать();
КонецЕсли;
Договор = РеквизитФормыВЗначение("ДоговорПотребителя");
Если Договор.Модифицированность Тогда
Договор.Записать();
КонецЕсли;
[/CODE]
При обращении к Контрагент.Модифицированность платформа мгновенно схлопывается без сообщений об ошибке.
Каким образом можно узнать, какой из объектов был изменен пользователем. Разумеется, кроме использования собственных флагов на каждое поле формы.
(2) Насчет метода косяк понятен. Исправил на Модифицированность(), вылеты пропали, но результат и правда всегда Истина. Сделаю программно массив, как предложил (3) и буду туда записывать, другого варианта не вижу.
Всем спасибо, вопрос исчерпан.
Закон Брукера: Даже маленькая практика стоит большой теории.