Нужно проконтролировать изменения адресной информации по контрагенту.
Изменение контролируется достаточно просто, перед записью в модуле набора записей считываем предыдущее значение и сравниваем.
Как отследить удаление если записывается пустой набор записей?
Процедура ПередЗаписью(Отказ, Замещение)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Для каждого Запись Из ЭтотОбъект Цикл
Если НЕ ЗначениеЗаполнено(Запись.Объект) Тогда
Отказ = Истина;
СтрокаОтказа = "Не заполнен объект.";
Продолжить;
КонецЕсли;
Если Запись.Объект.ЭтоГруппа Тогда
Отказ = Истина;
СтрокаОтказа = "Нельзя использовать в качестве объекта контактной информации - группу.";
Прервать;
КонецЕсли;
//imt+
Если ТипЗнч(Запись.Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
//проверим модифицированность
МЗ1 = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
МЗ1.Объект = Запись.Объект;
МЗ1.Тип = Запись.Тип;
МЗ1.Вид = Запись.Вид;
МЗ1.Прочитать();
Если МЗ1.Представление <> Запись.Представление Тогда
МЗ = РегистрыСведений._РегистрацияИзменений.СоздатьМенеджерЗаписи();
МЗ.Объект = Запись.Объект;
МЗ.Период = ТекущаяДата();
МЗ.Активность = Истина;
МЗ.Реквизит = Запись.Вид.Наименование;
МЗ.Значение = Запись.Представление;
МЗ.Записать();
КонецЕсли;
КонецЕсли;
//imt-
КонецЦикла;
Если Отказ Тогда
Сообщить(СтрокаОтказа);
КонецЕсли;
модифицированность реквизитов проверял так:
Для Каждого Реквизит Из Источник.метаданные().Реквизиты Цикл
Если Источник[Реквизит.Имя] <> Источник.Ссылка[Реквизит.Имя] Тогда
МЗ = РегистрыСведений._РегистрацияИзменений.СоздатьМенеджерЗаписи();
МЗ.Объект = Источник.Ссылка;
МЗ.Период = ТекущаяДата();
МЗ.Активность = Истина;
МЗ.Реквизит = Реквизит.Имя;
МЗ.Значение = Источник[Реквизит.Имя];
МЗ.Записать();
КонецЕсли;
КонецЦикла;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс