Универсальная надстройка по хранению истории изменения реквизитов документов, реквизитов ТЧ документов

09.03.2010 12:51 [09.03.2010 00:00] Stimcool 7

Кофигурации: 1C: Предприятие 8
Конфигурация для 1С: Предприятие 8.1

Аналог версионирования в УПП, только сделан проще и записи значений реквизитов - в текстовом виде. Внедряется в любую конфигурацию.

1. Зачем это нужно

Стандартный журнал регистрации в 1С фиксирует только изменения объектов, без указания конкретного реквизита и значения реквизита. А как быть, если хочется узнать, например, кто и когда в документе изменил склад, изменил количество материала в табличной части и удалил строку из табличной части? Собственно для этого и был написан данный модуль.


2. Как это работает

Из процедуры ПередЗаписью() модуля объекта вызывается процедура общего модуля, в которой сравниваются реквизиты документа и реквизиты табличных частей документа при открытии и при записи, и происходит запись в РС только тех значений, которые различаются, с соответствующим видом операции(Добавление, Изменение, Удаление). Сравнение табличных частей происходит полным соединением таблиц( До и После записи) в запросе по ключевым колонкам.


3. Ключевые колонки ТЧ

Ключевые колонки – гарантия того, что в табличной части не будет повторяющихся строк.
Если все-таки будут – ищите другие пути.
Ключевые колонки – это колонки, по которым происходит сравнение ТЧ документов(при открытии и при записи).
Например, если у вас ТЧ вида:


Материал Количество Цена Сумма

и вы знаете, что в одной табличной части никогда не будет одинаковых материалов – выбираете одну ключевую колонку «Материал». Если будут одинаковые материалы, но с разными ценами – ключевых колонок должно быть две: «Материал,Цена». Можно указать ключевыми колонками все 4, и в таком случае не должно быть полностью одинаковых строк в документе(собственно, в такой записи нет никакой необходимости).
Ключевые поля указываются через запятую в вызове процедуры
ФиксацияРеквизитовДокумента(ДокОбъект, СписокКлючевыхПолей)
, где ДокОбъект- это ЭтотОбъект документа, СписокКлючевыхПолей – это те ключевые поля, в разрезе которых будет происходить сравнение таблиц До и После записи. Указывается строкой, перечислением(через запятую) колонок с указанием номера табличной части. («Материал1,Цена1», если две табличной части: «Материал1,Цена1,Тара2». Тара2 – означает, что у второй табличной части нас интересует только колонка «Тара»)
Записи измененных значений в РС записываются в виде строки.

1. Иванов создает документ Приходная

1. Иванов создает документ Приходная

2. Иванов создает документ Расходная

2. Иванов создает документ Расходная

3.Петров редактирует Приходную

3.Петров редактирует Приходную

4. Петров редактирует расходную

4. Петров редактирует расходную

5. Но мы все видим!(ч1)

5. Но мы все видим!(ч1)

6. Но мы все видим!(ч2)

6. Но мы все видим!(ч2)




Комментарии (9)

Вкл. прямой порядок комментариев

Для добавления комментария необходимо зарегистрироваться или авторизоваться.
Логин :
Пароль :
Забыли пароль?
10.
+ -
rasswet 15.04.2010 10:06
не пробовал как работает, но сама суть мне нравится. и описание очень понятное. и примеры приведены. спасибо за качественное оформление smile:)
9.
+ -
Stimcool 11.03.2010 13:31
ок, доделаю.учту все замечаю. smile:!:
8.
+ -
Enot5467 11.03.2010 08:29
http://infostart.ru/public/59386/
Обработчики фоновые. При проведении нагрузка на систему минимальная. Все на подписчиках. Упр.блокировки. Конвертация в ХМЛ и нормализация данных опционально и при необходимости можно выбирать где и как запускать
Работает несколько месяцев - проблем нет
7.
+ -
MoneG2 11.03.2010 05:52
1) Разумно внедрять ТОЛЬКО через подписку на события;
2) Разумно использовать XML вместо "текстового представления";
3) Разумно анализировать намного позже записи документа (например, неким отчетом), т.к. возрастает время "записи" документов. Однако, в рамках "ноу-хау" статьи анализ метаданных документа перед каждой записью можно "простить", но опять-таки на маленькой базе.
4)
а) "..фиксирует только изменения объектов, без указания конкретного реквизита и значения реквизита..." Вопрос: зачем указывать какие-то "ключевые поля", если фиксируется только изменение некоторого (любого) реквизита ?
б) Состав "ключевых полей" должен определяться автоматически. Пользователь "имеет право" даже не подозревать о версионировании.
5) При больших объемах (рано или поздно это случится) ) желательно использовать ХранилищеЗначения для уменьшения кол-ва ресурсов и дальнейшего "сжатия" РС.
6.
+ -
Dolly_EV 10.03.2010 12:20
На "боевой" базе проверялось? с какой скоростью растет размер за счет заполнения регистра "КонтрольИзмененийДокументов"?
5.
+ -
sevaseva 10.03.2010 08:39
smile:?: какой программой прочитать файл "история"
4.
+ -
danilo.skiman 10.03.2010 07:30
просто подписку сделать надо, зачем в каждый документ тыкать!!! 8-0
3.
+ -
artbear 09.03.2010 17:06
(2) Да, не обратил внимание, что указаны 6 миниатюр smile:(
Без ключевых колонок плохо.
Значит, каждый док нужно вручную прописывать smile:(
2.
+ -
Stimcool 09.03.2010 16:09
(1) открой все миниатюры, две последних - отчет.
"Если не указывать ключевые колонки, будет работать?" - нет, не будет.

Ответили: (3)

Оценка сообщества

7

Поставьте плюс, если вы рекомендуете данную публикацию к прочтению и использованию.
Плюс добавляет публикацию в Мои рекомендации.

Рекомендую Не тратить время
Если рейтинг упадет до -5, то публикация автоматически скроется.

См. также:

УПРАВЛЕНЧЕСКИЙ УЧЕТ И ФИНАНСЫ » Делопроизводство и документооборот