Где можно посмотреть, кто и когда (и, если возможно, как) изменял документы?

Где можно посмотреть, кто и когда (и, если возможно, как) изменял документы?

(8) CoverG, методы разные бывают. Порекомендованный ula1c "Регистрирует все изменения сразу во внешней инф. базе, не влияя на размер основной инф. базы". Только сие для 1с8. Но, вероятней всего, есть аналоги и для 7.

В случае крайней необходимости (если изменять "внутренний" код конфигурации не рекомендуется) можно и самому ole робота организовать (на любом языке умеющем ole-можно даже скриптами), анализирующего вносимые изменения с определенным интервалом и отчеты для "чтения" базы робота.

  • Скопировать ссылку
  • Перейти

Если есть острая необходимость в последующем отслеживании изменений то добавляем в код (можно воспользоваться услугами программиста): ЗаписьЖурналаРегистрации(<Коммент>,<ТипСобытия>,<Событие>,<Объект>,<Категория>)

И растет только лог.

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

В глобальном модуле. Обрати внимание на "Изменения от" в каждом документе будет указанно когда и кто последний раз редактировал документ.

//****************************************************************************** // глКонтрольДатыДокумента(ПереданКонтекст, НачальнаяДатаДокумента) // // Параметры: // ПереданКонтекст - контекст документа,из которого вызвана процедура // НачальнаяДатаДокумента - дата документа до изменения. // // Возвращемое значение: // 1 - если документу был присвоен новый номер; // 0 - если документу не был присвоен новый номер. // // Описание: // Функция определяет ситуацию, когда при изменении своей даты документ // оказывается в другом периоде нумерации документов, проверяет уникальность // номера документа, и, в противном случае, пытается присвоить документу // новый уникальный номер. // Для работы функции должна быть объявлена глобальная переменная модуля // формы документа НачальнаяДатаДокумента. В процедуре ПриОткрытии // в эту переменную должна быть записана дата документа. // Функция глКонтрольДатыДокумента() вызывается из процедуры ПриЗаписи. // В процедуре ПриЗаписи проверяется возвращаемое значение, и, если // оно равно 1 (то есть, документу присвоен новый номер), статус возврата // устанавливается в 0, то есть документ не записывается, а происходит возрат // к редактированию документа. // Функция глКонтрольДатыДокумента(ПереданКонтекст, НачальнаяДатаДокумента) Экспорт Перем ФлагПрисвоенияНомера; // для возвращаемого значения

// Назначенную для данного вида документов периодичность смены номера // определяем из метаданных. ПериодСменыНомера = Метаданные.Документ(ПереданКонтекст.Вид()).ПериодичностьНомера;

// В зависимости от установленной периодичности смены номеров, // определяем разность старой и новой датами документа. // В данном случае конкретная величина разности не важна, // важен сам факт ее наличия. Если ПериодСменыНомера = "Год" Тогда РазностьДат = НачГода(НачальнаяДатаДокумента)-НачГода(ПереданКонтекст.ДатаДок);

ИначеЕсли ПериодСменыНомера = "Квартал" Тогда РазностьДат = НачКвартала(НачальнаяДатаДокумента)-НачКвартала(ПереданКонтекст.ДатаДок);

ИначеЕсли ПериодСменыНомера = "Месяц" Тогда РазностьДат = НачМесяца(НачальнаяДатаДокумента)-НачМесяца(ПереданКонтекст.ДатаДок);

ИначеЕсли ПериодСменыНомера = "День" Тогда РазностьДат = НачальнаяДатаДокумента-ПереданКонтекст.ДатаДок; Иначе РазностьДат = 0; КонецЕсли;

Если РазностьДат <> 0 Тогда // В результате изменения даты документ "ушел" в другой период // смены номера. Возможные ситуации: // 1) в этом периоде уже существуют документы, и номер документа // стал неуникален; // 2) номер документа - большой, и за-за этого в последовательности // номеров образовалась дыра.

// Все операции проверки номера выполняем с "копией" документа. Дубликат = СоздатьОбъект("Документ."+ПереданКонтекст.Вид()); Дубликат.Новый(); Дубликат.НомерДок = ПереданКонтекст.НомерДок; Дубликат.ДатаДок = ПереданКонтекст.ДатаДок;

// Попробуем присвоить новый номер. // Вызов метода должен учитывать особенности нумерации // конкретного вида Дубликат.УстановитьНовыйНомер(СокрЛП(Константа.ПрефиксИБ) + СокрЛП(ПереданКонтекст.ЮрЛицо.ПрефиксНомеровДокументов));

// Если новый номер не равен старому, значит, // назначение номера прошло успешно. Если ( Дубликат.НомерДок <> ПереданКонтекст.НомерДок ) Тогда

// Запоминаем новый номер и проверяем его на уникальность НовыйНомерДок = Дубликат.НомерДок; Если Дубликат.НайтиПоНомеру(Дубликат.НомерДок,Дубликат.ДатаДок)=0 Тогда

// Если номер уникальный, выдаем запрос о необходимости // назначить документу новый номер Если Вопрос( "Дата документа была "+?(РазностьДат>0, "уменьшена", "увеличена") + " более чем на " + Нрег(ПериодСменыНомера)+"."+РазделительСтрок+ "Для документов вида """+ПереданКонтекст.ПредставлениеВида()+""" каждый "+Нрег(ПериодСменыНомера)+" нумерация начинается заново."+РазделительСтрок+ "Присвоить новый номер?","Да+Нет", 60) = "Да" Тогда ПереданКонтекст.НомерДок = НовыйНомерДок;

// Новую дату документа запомнаем в качестве начальной даты - // в случае возможных последующих проверок. НачальнаяДатаДокумента=ПереданКонтекст.ДатаДок;

// Устанавливаем возвращаемое значение ФлагПрисвоенияНомера=1;

КонецЕсли; КонецЕсли; // Активизируем номер докутента ПереданКонтекст.Активизировать("НомерДок"); КонецЕсли; Если ФлагПрисвоенияНомера=0 тогда ПереданКонтекст.Ответственный = ПереданКонтекст.Ответственный+"Изменения от "+Строка(ТекущаяДата())+" "+ТекущееВремя()+", выполнил(а) "+глПользователь.Наименование+РазделительСтрок+";";//ЛокНч КонецЕсли; Возврат ФлагПрисвоенияНомера;

📎📎📎📎📎📎📎📎📎📎