Имя: Пароль:
1C
1С v8
Отследить удаление записи регистра сведений. Как?
0 imtade2
 
18.09.11
20:23
Нужно проконтролировать изменения адресной информации по контрагенту.
Изменение контролируется достаточно просто, перед записью в модуле набора записей считываем предыдущее значение и сравниваем.
Как отследить удаление если записывается пустой набор записей?
1 imtade2
 
18.09.11
20:24
Процедура ПередЗаписью(Отказ, Замещение)
   Если ОбменДанными.Загрузка Тогда
       Возврат;
   КонецЕсли;
   Для каждого Запись Из ЭтотОбъект Цикл
       Если НЕ ЗначениеЗаполнено(Запись.Объект) Тогда
           Отказ = Истина;
           СтрокаОтказа = "Не заполнен объект.";
           Продолжить;
       КонецЕсли;
       Если Запись.Объект.ЭтоГруппа Тогда
           Отказ = Истина;
           СтрокаОтказа = "Нельзя использовать в качестве объекта контактной информации - группу.";
           Прервать;
       КонецЕсли;
       //imt+
       Если ТипЗнч(Запись.Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
           //проверим модифицированность
           МЗ1 = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
           МЗ1.Объект = Запись.Объект;
           МЗ1.Тип = Запись.Тип;
           МЗ1.Вид = Запись.Вид;
           МЗ1.Прочитать();
           Если МЗ1.Представление <> Запись.Представление Тогда
               МЗ = РегистрыСведений._РегистрацияИзменений.СоздатьМенеджерЗаписи();
               МЗ.Объект = Запись.Объект;
               МЗ.Период = ТекущаяДата();
               МЗ.Активность = Истина;
               МЗ.Реквизит = Запись.Вид.Наименование;
               МЗ.Значение = Запись.Представление;
               МЗ.Записать();
           КонецЕсли;  
       КонецЕсли;
       //imt-
   КонецЦикла;
   
   Если Отказ Тогда
       Сообщить(СтрокаОтказа);
   КонецЕсли;
   
КонецПроцедуры
2 imtade2
 
18.09.11
20:48
ап
3 GROOVY
 
18.09.11
20:51
ПЕредЗаписью()

Если ЭтотОбъект.Количество() = 0 Тогда
4 imtade2
 
18.09.11
20:52
(3)
проблема в том, что у объекта есть только отбор по реквизиту объект. не понятно какой вид контактной информации был удален.
5 GROOVY
 
18.09.11
20:54
Думаю как то через доп.информацию можно извернуться, готовый сценарий не предложу.
6 imtade2
 
18.09.11
20:58
(5) спасибо
еще вопрос: как грамотно проверить табличную часть на модифицированность?
7 imtade2
 
18.09.11
20:58
модифицированность реквизитов проверял так:
   Для Каждого Реквизит Из Источник.метаданные().Реквизиты Цикл
       Если Источник[Реквизит.Имя] <> Источник.Ссылка[Реквизит.Имя] Тогда
           МЗ = РегистрыСведений._РегистрацияИзменений.СоздатьМенеджерЗаписи();
           МЗ.Объект = Источник.Ссылка;
           МЗ.Период = ТекущаяДата();
           МЗ.Активность = Истина;
           МЗ.Реквизит = Реквизит.Имя;
           МЗ.Значение = Источник[Реквизит.Имя];
           МЗ.Записать();  
       КонецЕсли;
   КонецЦикла;