![]() |
![]() |
![]() |
|
Регистрация изменений в справочнике | ☑ | ||
---|---|---|---|---|
0
Rovan
гуру
13.10.04
✎
09:19
|
Я таки сделал эту процедуру. Вот она сама:
Процедура глЗаписатьПротоколИзмененийСправочника(Конт, ИмяПоля = "", ТабЧасть = Неопределено, НомерСтрокиТЧ = 0 ) Экспорт Если ИмяПоля <> "" Тогда Если ТабЧасть <> Неопределено Тогда Если НомерСтрокиТЧ < 1 или НомерСтрокиТЧ > Конт[ТабЧасть].Количество() или НомерСтрокиТЧ > Конт.Ссылка[ТабЧасть].Количество() Тогда Возврат; КонецЕсли; НовоеЗначение = Конт[ТабЧасть][НомерСтрокиТЧ-1][ИмяПоля]; СтароеЗначение = Конт.Ссылка[ТабЧасть][НомерСтрокиТЧ-1][ИмяПоля]; Иначе НовоеЗначение = Конт[ИмяПоля]; СтароеЗначение = Конт.Ссылка[ИмяПоля]; КонецЕсли; Если НовоеЗначение <> СтароеЗначение Тогда ЗаписьЖурналаРегистрации( "Данные.Изменение", УровеньЖурналаРегистрации.Информация, "Справочник." + Конт.Метаданные().Имя, Конт.Ссылка, ?( ТабЧасть = Неопределено, "", "ТабЧасть: " + ТабЧасть + ", стр №" + НомерСтрокиТЧ + ", " ) + "Поле <" + ИмяПоля + "> С <" + СтароеЗначение + "> на <" + НовоеЗначение + ">" ); КонецЕсли; Возврат; КонецЕсли; Если ПустоеЗначение( Конт ) или ПустоеЗначение( Конт.Ссылка ) или Конт.ЭтоНовый() Тогда Возврат; КонецЕсли; глЗаписатьПротоколИзмененийСправочника(Конт, "Код" ); глЗаписатьПротоколИзмененийСправочника(Конт, "Наименование" ); Для каждого КонкретныйРеквизит из Конт.Метаданные().Реквизиты Цикл глЗаписатьПротоколИзмененийСправочника(Конт, КонкретныйРеквизит.Имя ); КонецЦикла; Для каждого ТекТаблЧасть из Конт.Метаданные().ТабличныеЧасти Цикл БылоСтрок = Конт.Ссылка[ТекТаблЧасть.Имя].Количество(); СталоСтрок = Конт[ТекТаблЧасть.Имя].Количество(); Для СчетСтрок = 1 по Макс( БылоСтрок, СталоСтрок ) Цикл Если СчетСтрок > БылоСтрок Тогда ЗаписьЖурналаРегистрации( "Данные.Изменение", УровеньЖурналаРегистрации.Информация, "Справочник." + Конт.Метаданные().Имя, Конт.Ссылка, "ТабЧасть: " + ТекТаблЧасть.Имя + ", Добавлена строка № " + СчетСтрок ); ИначеЕсли СчетСтрок > СталоСтрок Тогда ЗаписьЖурналаРегистрации( "Данные.Изменение", УровеньЖурналаРегистрации.Информация, "Справочник." + Конт.Метаданные().Имя, Конт.Ссылка, "ТабЧасть: " + ТекТаблЧасть.Имя + ", Удалена строка № " + СчетСтрок ); Иначе Для каждого КонкретныйРеквизит из Конт.Метаданные().ТабличныеЧасти[ТекТаблЧасть.Имя].Реквизиты Цикл глЗаписатьПротоколИзмененийСправочника( Конт, КонкретныйРеквизит.Имя, ТекТаблЧасть.Имя, СчетСтрок ); КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры В любом справочнике пишем: Процедура ПередЗаписью(Отказ) глЗаписатьПротоколИзмененийСправочника( ЭтотОбъект ); КонецПроцедуры Кому надо - берите. Если найдете ошибки - говорите. |
|||
1
Волшебник
13.10.04
✎
09:36
|
ПустоеЗначение - это что за функция? Типа ЗначениеНеЗаполнено из типовой?
|
|||
2
Rovan
гуру
13.10.04
✎
09:50
|
//По привычке из 7-ки
Функция ПустоеЗначение(вхЗначение) Экспорт Возврат обЗначениеНеЗаполнено( вхЗначение ); КонецФункции //Встроенная в торговлю Функция обЗначениеНеЗаполнено(Значение) Экспорт Результат = Ложь; ТипЗначения = ТипЗнч(Значение); // Сначала примитивные типы Если Значение = Неопределено Тогда Результат = Истина; ИначеЕсли Значение = NULL Тогда Результат = Истина; ИначеЕсли ТипЗначения = Тип("Строка") Тогда Если СокрЛП(Значение) = "" Тогда Результат = Истина; КонецЕсли; ИначеЕсли ТипЗначения = Тип("Число") Тогда Если Значение = 0 Тогда Результат = Истина; КонецЕсли; ИначеЕсли ТипЗначения = Тип("Дата") Тогда Если Значение = Дата('00010101') Тогда Результат = Истина; КонецЕсли; ИначеЕсли ТипЗначения = Тип("Булево") Тогда Результат = Ложь; // Булево будем считать не пустым // Для остальных будем считать значение пустым, если оно равно // дефолтному значению своего типа Иначе Если Значение = Новый(ТипЗначения) Тогда Результат = Истина; КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции // обЗначениеНеЗаполнено() |
|||
3
Волшебник
13.10.04
✎
09:52
|
И от старой привычки "Конт" тоже нужно избавляться.
Доработай процедуру на документы и все планы, цены ей не будет! Планы счетов, планы видов характеристик, планы обмена, планы видов расчета. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |