Кто исправил первичку в 1С
3615
12
Есть такая разработка: Бизнес-Плюс:Журнал изменений
http://infostart.ru/projects/3112/

Кто использует это у себя в работе??? Стоит ли покупать и есть глюки???
Может самому стоит написать такое же.

P.S. Есть контора с Четырьмя филиалами. Народу хватает. Шалавливых ручек тоже хватает. Директор поставил задачу по изменению документов. В связи с этим и спрашиваю.
АФМ
Я думаю что можно и самому. На ПриЗаписи первички поставить какой то контроллер и счастье. Чтобы восстанавливать версии документа я бы делал сохранение в базу в виде хранилищаЗначения, ну или на сторонний ресурс в виде xml
Дима553
Да можно и самому. У меня подобная разработка была на 7.7 написана.
Много где у моих клиентов стоит и работает. Просто работы сейчас много и тратить время на разработку просто некогда.
Вот и интересуюсь отзывами, может у кого стоит подобная разработка.
А купить то ее не проблема. 9000 на сегодня не ообо большие деньги.
АФМ
Да можно конечно.... только база будет пухнуть в несколько раз быстрее.. Либо инфу журнала раз в месяц-два обрезать и архивировать
craxx
А что делать, если бухгалтер говорит что нетрогала документ, а я по логам вижу что ее работа, как доказать.

P.S.
Каждый косяк имеет ФИО.
АФМ
Логи предъявить
и желательно не только ей, а еще ее начальству
АФМ
Да, иногда бываеют ситуации, когда всем пользователям охота камеру позади поставить и монитор с клавиатурой снимать...

Есть у меня такая разработка, но что то учитывая озвученные вами 9 тыс - вам что то посложнее нужно чем у меня есть, т.к. модуль который этим занимается у меня всего 161 строку, как то дороговато за 9 тыс руб 161 строку кода покупать.
Дима553
Под что модуль написан? Под 7 или 8?
Дима553
да кстати
есть же замечательные проги скринлоггеры и кейлоггеры.. которые гораздо дешевле озвученных сумм. тут уж никто не отвертится
Дима553
Под 7.7 выкладываю вобщее обозрение

Процедура Log(Конт,Рекв) Экспорт
Док=СоздатьОбъект("Документ");
Если ПустоеЗначение(Конт.ТекущийДокумент()) = 1 Тогда
//Сообщить("Нет его.");
Возврат;
КонецЕсли;

Если Док.НайтиДокумент(Конт.ТекущийДокумент()) = 0 Тогда
Возврат;
КонецЕсли;

// С реквизитами шапки все просто и пушисто. Проблемы позже будут.
МетаД=Метаданные.Документ(Конт.Вид());
Для нн = 1 по МетаД.РеквизитШапки() Цикл
РеквИД=МетаД.РеквизитШапки(нн).Идентификатор;
СтароеЗначение=Док.ПолучитьАтрибут(РеквИД);
НовоеЗначение=Конт.ПолучитьАтрибут(РеквИД);
Если СтароеЗначение НовоеЗначение Тогда
ЗаписьЖурналаРегистрации("# Изменился реквизит "+СокрЛП(РеквИД)+" старое значение "+СокрЛП(СтароеЗначение)+" новое значение "+СокрЛП(НовоеЗначение),,,Конт.ТекущийДокумент(),);
КонецЕсли;
КонецЦикла;

//А вот теперь проблемы. ТАБЛИЧНАЯ ЧАСТЬ. Посмотрим как ее лучше сделать.
Если СокрЛП(Рекв) ="" Тогда
Возврат;
КонецЕсли;
ТабНовая=СоздатьОбъект("ТаблицаЗначений");
ТабСтарая=СоздатьОбъект("ТаблицаЗначений");
СписокНовая=СоздатьОбъект("СписокЗначений");
СписокСтарая=СоздатьОбъект("СписокЗначений");
Конт.ВыгрузитьТабличнуюЧасть(ТабНовая);
Док.ВыгрузитьТабличнуюЧасть(ТабСтарая);
ТабНовая.УдалитьКолонку(1);
ТабСтарая.УдалитьКолонку(1);

ТабНовая.ВыбратьСтроки();
Пока ТабНовая.ПолучитьСтроку() = 1 Цикл
НомСтр=0;
НомКол=0;
СписокНовая.УдалитьВсе();
СписокСтарая.УдалитьВсе();
Если ТабСтарая.НайтиЗначение(ТабНовая.ПолучитьЗначение(ТабНовая.НомерСтроки,Рекв),НомСтр,НомКол) = 0 Тогда
ТабНовая.Выгрузить(СписокНовая,ТабНовая.НомерСтроки,ТабНовая.НомерСтроки);
ЗаписьЖурналаРегистрации("# Добавлена строка : "+СокрЛП(СписокНовая.ВСтрокуСРазделителями()),,,Конт.ТекущийДокумент(),);
Иначе
ТабНовая.Выгрузить(СписокНовая,ТабНовая.НомерСтроки,ТабНовая.НомерСтроки);
ТабСтарая.Выгрузить(СписокСтарая,НомСтр,НомСтр);
Если СокрЛП(СписокНовая.ВСтрокуСРазделителями()) СокрЛП(СписокСтарая.ВСтрокуСРазделителями()) Тогда
ЗаписьЖурналаРегистрации("# Изменена строка(была):"+СокрЛП(СписокСтарая.ВСтрокуСРазделителями()),,,Док.ТекущийДокумент(),);
ЗаписьЖурналаРегистрации("# Изменена строка(стала):"+СокрЛП(СписокНовая.ВСтрокуСРазделителями()),,,Конт.ТекущийДокумент(),);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТабСтарая.ВыбратьСтроки();
Пока ТабСтарая.ПолучитьСтроку() = 1 Цикл
НомСтр=0;
НомКол=0;
СписокСтарая.УдалитьВсе();
Если ТабНовая.НайтиЗначение(ТабСтарая.ПолучитьЗначение(ТабСтарая.НомерСтроки,Рекв),НомСтр,НомКол) = 0 Тогда
ТабСтарая.Выгрузить(СписокСтарая,ТабСтарая.НомерСтроки,ТабСтарая.НомерСтроки);
ЗаписьЖурналаРегистрации("# Удалена строка : "+СокрЛП(СписокСтарая.ВСтрокуСРазделителями()),,,Конт.ТекущийДокумент(),);
КонецЕсли;
КонецЦикла;
КонецПроцедуры


Во вложении файл, который ставится в глобальный модуль.
Вызов производится в процедуре ПриЗаписи.
С указанием главного поля, по которому производится поиск.

Так в документе Реализация вызов будет выглядеть
Log(Контекст,"Номенклатура");

Это я писал в 2001 году.
craxx
Согласен есть, но это не то.
А под 8.1 напишу ка я сам. Хоть директор и сказал что если устроит, то купим, но мне не нравится ответ :

Valet 17.12.2008 12:42:45

Будет ли считаться изменением, если пользователь изменит сортировку табличной части (справочника или документа).
И как модуль отреагирует на это?
Посчитает что данные во всех строках поменялись?
[+]: Мать Тереза hit bazilio
3.
+ -
der_kicker 17.12.2008 13:09:30

(2) спасибо за вопрос:улыб:да, зафиксируются изменения во всех строках табличной части
[+]: bazilio

Вот это то и не нравится. Моя обработка в 7.7 не фиксировала изменения если тупа отсортировали табличную часть.
АФМ
//Будет ли считаться изменением, если пользователь изменит сортировку табличной части (справочника или документа).
И как модуль отреагирует на это?
//
если документ, справочник после этого записан - то однозначно необходимо зафиксировать.
имхо конечно
но - к приему инвентарка.
5-10 тыс позиций (условно)
табличную часть отсортировали по артикулам - с бумажным (подписанным) вариантом уже не сходится.
ну или расходка, или перемещение.
АФМ
Как-то приходилось делать "Быструю сверку баз" для 8.1 (архивная - рабочая или центральная - периферийная)
общая идея - создавать по набору реквизитов уникализитор

Тут попроще, хотя тот алгоритм позволит ускорить работу

для 8-ки можно использовать подписку на события; только ещё вопрос: "нужно отлавливать и интерактивные изменения и групповые обработки"?

С ТЧ, думаю, просто при анализе пересортировывать под свой шаблон (Цена, Номенклатура, ...)

Задачка не такая простая. В логе хранить и искать будет сложновасто, имхо ...; Миграция лога из ПБ-ЦБ, ЦБ-ПБ проходит?