#0
by Скользящий
На меня повесили отслеживание работы пользователей в программе. Повесили давно, но руки на постоянку не доходили. Пока приходится открывать по тупому все документы за скажем неделю, и смотреть, куда вбивали данные, и зачем. Отчетом можно посмотреть остатки на конкретных складах, и сделать выводы. Но все равно, доля ручного труда преобладает. Вы мне щас скажете, что это не работа программиста, но я не совсем прог, я еще и экономикой занимаюсь и б/у. Мне это интересно, но хотелось бы повысить эффективность проверки. Добавляю запреты на сохренение документов без введения данных в важных полях. Хочу запретить ручные операции, все только документами. Вопрос, есть ли отчеты и внешние обработки, анализирующие конкретные реквизиты документов, введены ли туда данные или пропущены. Обработки анализирующие активность конкретного пользователя в программе, по видам документов и датам. И вообще любые обработки подобного же типа. Я изначально формулирую вопрос расширенно, поскольку я заранее не знаю что может пригодиться.
#2
by Rovan
Для этого надо ввести механизм, который пишет все изменения куда-то - например в журнал регситраций.
#6
by Скользящий
Если поконкретнее... Ситуация такая. Есть 3 филиаловские базы. В них ежедневно вбивают данные. Я хочу чтобы они ежедневно присылали выгрузку. И ежедневно видеть аналитику, кто, что куда конкретно вводил. А потом звонить, и ставить раком тех, кто вводит неправильно. Если вручную, то мне полдня придется 3 базы смотреть.
#9
by Воинствующий кролик
И ещё странно: зачем отслеживать всё, что вводили, чтобы найти то, что вводили неправильно? Не проще ли сперва по неким критериям определять от, что введено неправильно, а потом разбираться - кто это ввёл.
#10
by France
н-да... самое лучше решение, отказаться от столь высококвалифицированной работы - эт работа не для тупых 1С-ников совмещающих функции экономиста и бухгалтера..
#11
by Скользящий
Да, спасибо, что напомнил. Хотелось бы отслеживать случаи редактирования документов задним числом.
#14
by France
случаи редактирования задним числом надо запретить раз и навсегда, а не сидет и искать в журналах регистрации, "кто, где, когда"..
#17
by Воинствующий кролик
Да вот, тоже, как хотел сказать. И по поводу прочих ошибок - аналогично. А то почему-то сделают дыру в заборе и сидят, воров караулят...
#19
by Скользящий
Главная проблема, в удаленности филиалов. Короче, так. Типа отчета. Такой то пользователь ввел такие то документы. В этих документах такие то данные. Будет ясно кто работает в программе, кто ваньку валяет. Есть справочники например материалов, складов, кто мусор в справочники пишет. Хочу чтобы в конфе вели БДДС, это означает, что данные должны вводиться правильно, правильно указывать субконто, например, или выбирать нужную статью в документах например. Я думаю, подобные отчеты делались для директоров и главбухов, поэтому и спрашиваю.
#21
by Rovan
(+18) Я нашел для 7-ки подобную. Надо ? (Только смотри - надо будет вызовы этой процедуры ставить ВО ВСЕ доки)
#23
by Rovan
Лови // Записать в журнал регистрации изменения в документе //-------------------------------------------------------------------- Процедура глЗаписатьПротоколИзмененийДокумента(Конт) Экспорт Изменения = 0; Если Конт.Выбран = 1 Тогда В = Конт.Вид; Док = СоздатьОбъект("Документ"); Док.НайтиДокумент(Конт.ТекущийДокумент); // Общие Для Сч = 1 По Метаданные.ОбщийРеквизитДокумента Цикл Рекв = Метаданные.ОбщийРеквизитДокумента(Сч).Идентификатор; Попытка Если Док.ПолучитьАтрибут(Рекв) <> Конт.ПолучитьАтрибут(Рекв) Тогда БылоСтало = " с <" + СокрЛП(Док.ПолучитьАтрибут(Рекв)) + "> на <" + СокрЛП( Конт.ПолучитьАтрибут( Рекв )) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. " + СокрЛП(Рекв) + БылоСтало,,, Конт.ТекущийДокумент,2); Изменения = 1; КонецЕсли; Исключение КонецПопытки; КонецЦикла; // Шапка Для Сч = 1 По Метаданные.Документ(В).РеквизитШапки Цикл Рекв = Метаданные.Документ(В).РеквизитШапки(Сч).Идентификатор; Попытка Если Док.ПолучитьАтрибут(Рекв) <> Конт.ПолучитьАтрибут(Рекв) Тогда БылоСтало = " с <" + СокрЛП(Док.ПолучитьАтрибут(Рекв)) + "> на <" + СокрЛП( Конт.ПолучитьАтрибут( Рекв )) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. " + СокрЛП(Рекв) + БылоСтало,,, Конт.ТекущийДокумент,2); Изменения = 1; КонецЕсли; Исключение КонецПопытки; КонецЦикла; // Табличная часть Если Конт.КоличествоСтрок <> Док.КоличествоСтрок Тогда ЗаписьЖурналаРегистрации("Изм.количество строк ",,,Конт.ТекущийДокумент,2); КонецЕсли; Если Конт.КоличествоСтрок < 100 Тогда Конт.ВыбратьСтроки; Пока Конт.ПолучитьСтроку = 1 Цикл Для Сч = 1 По Метаданные.Документ(В).РеквизитТабличнойЧасти Цикл Рекв = Метаданные.Документ(В).РеквизитТабличнойЧасти(Сч).Идентификатор; Док.ВыбратьСтроки; Пока Док.Получитьстроку = 1 Цикл Если Док.НомерСтроки <> Конт.номерСтроки Тогда Продолжить КонецЕсли; Попытка Если Док.ПолучитьАтрибут(Рекв) <> Конт.ПолучитьАтрибут(Рекв) Тогда БылоСтало = " (стр." + Конт.НомерСтроки + ") c <" + СокрЛП( Док.ПолучитьАтрибут(Рекв)) + "> на <" + СокрЛП( Конт.ПолучитьАтрибут(Рекв)) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. " + СокрЛП(Рекв) + БылоСтало,,, Конт.ТекущийДокумент, 2 ); Изменения = 1; КонецЕсли; Исключение КонецПопытки; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры
#26
by Скользящий
Я так понимаю, это работает при изменении доков задним числом, или для всех вновь вводимых. А процедуру глЗаписатьПротоколИзмененийДокумента(Конт) - ее нужно во все процедуры при записи вставлять, я правильно понял?
#27
by Rovan
Да, в ПриЗаписи. При всех записях доков - если были изменения, то они фиксируются, но конечно только интерактивные изменения. И кстати помни, что твоя конфа перестает быть ТИПОВОЙ. //-------------------------------------------------------------------- // Записать в журнал регистрации изменения в справочнике //-------------------------------------------------------------------- Процедура глЗаписатьПротоколИзмененийСправочника(Конт) Экспорт Если Конт.Выбран = 1 Тогда В = Конт.Вид; Спр = СоздатьОбъект("Справочник."+В); Спр.НайтиЭлемент(Конт.ТекущийЭлемент); Если Спр.Код <> Конт.Код Тогда БылоСтало = " c <" + СокрЛП(Спр.ПолучитьАтрибут("Код")) + "> на <" + СокрЛП(Конт.ПолучитьАтрибут("Код")) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. Код" + БылоСтало,,,Конт.ТекущийЭлемент,2); КонецЕсли; Если Спр.Наименование <> Конт.Наименование Тогда БылоСтало = " c <" + СокрЛП(Спр.ПолучитьАтрибут("Наименование")) + "> на <" + СокрЛП(Конт.ПолучитьАтрибут("Наименование")) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. Наименование" + БылоСтало,,, Конт.ТекущийЭлемент,2); КонецЕсли; Для Сч = 1 По Метаданные.Справочник(В).Реквизит Цикл Рекв = Метаданные.Справочник(В).Реквизит(Сч).Идентификатор; Если Метаданные.Справочник(В).Реквизит(Сч).Периодический = 1 Тогда Если Спр.ПолучитьАтрибут(Рекв).Получить(РабочаяДата) <> Конт.ПолучитьАтрибут(Рекв) Тогда БылоСтало = " c < " + СокрЛП(Спр.ПолучитьАтрибут(Рекв).Получить(РабочаяДата)) + "> на <" + СокрЛП(Конт.ПолучитьАтрибут(Рекв)) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. " + СокрЛП(Рекв) + БылоСтало,,, Конт.ТекущийЭлемент,2); КонецЕсли; Иначе Если Спр.ПолучитьАтрибут( Рекв ) <> Конт.ПолучитьАтрибут( Рекв ) Тогда БылоСтало = " c <" + СокрЛП( Спр.ПолучитьАтрибут( Рекв )) + "> на <" + СокрЛП( Конт.ПолучитьАтрибут( Рекв )) + ">"; ЗаписьЖурналаРегистрации("Изм.рекв. " + СокрЛП(Рекв) + БылоСтало,,, Конт.ТекущийЭлемент, 2 ); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
#28
by Скользящий
ТНХ! Конфа и так не типовая, поздно пить боржоми. Я не понял, она для новых доков работает? или только при изменении существующих?
#29
by Rovan
Для новых было не нужно - там и так событие идет в ЖР, что док сохранен. Но если хочешь, сделай и для новых сам - нужны небольшие доработки в алгоритм.
#30
by ШтушаКутуша
решение есть,я готов,причем в конфе НИЧЕГО менять не надо,но я бескорыстно люблю деньги,если надо то стукнись в асю
#31
by Скользящий
Еще вопрос, в филиалах Центральные базы, + периферийные на складах.Таким макаром (23, 27) я все изменения добавлю в журнал регистрации. Мне присылают выгрузки из центральных, в выгрузке естессно mlg файла нет. Я сделаю чтобы в здесь была периферийная, которая ежедневно обновляется из регионов файлами выгрузки. Опять таки mlg файл отстуствует. Пользователей учить добавлять этот файл смысла нет - забыть могут. Как решить такую проблему?
#32
by Скользящий
Я тоже бескорыстно люблю деньги, и готов с частью расстаться, если эта часть не слишком большая, и если есть за что. В асе тебя нет.
#38
by France
в 8.0 сделали выгрузку журнала регистрации в xml.... - впечатлило скорость анализа, вернее, можно забыть термин "скорость".
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- выполнить действия кнопки командной панели формы
- v7: Можно ли отслеживать нажатие клавиш в 1С
- Как лучше отслеживать статус изменения константы
- ЗУП: Почему вид расчета может не вытеснять другой по периоду действия?
- Как отслеживать историю размера системной базы tempdb?
- Создание пользователей Win Serv 2008 R2 Ent по списку пользователей 1С из 1С
- v7: Список активных пользователей
- Можно ли из 1С отслеживать android устройство?
В этой группе 1С
- Восстановление dbf
- Конфигурация для авиа-агенства
- Забыл. Как добавить в таблицу новое поле
- Не открывается отчет. Я в шоке
- ЗиК 255 и проводки
- Почему-то не работает ПолучитьСтрокуПоНомеру?
- заполнить таблицу значений документа извне
- "1С Предприятие" SQL версия релиз 7.70.025 ошибка. Help !!!
- Какая обработка запускается при запуске 1С?
- Rom-mail зависает при пересылке письма с вложением
- А как обработку внешнюю паролем закрыть?
- Как узнать код последнего введенного элемента справочника
- можно ли обойтись без контроллера домена?
- Как правильно изменять счет отнесения затрат по амортизации
- Как получить контекст формы сформированного отчета из документа
- Как редактировать данные во внешнем файле *.dbf (XBase)
- Приход регистра с отрицательным значением
- ТиС. Ведомость по партиям. Надо бы в разрезе складов.
- Корректный перенос данных из Бух и ТиС в Комплексную
- Теряются первые нули при выгрузке в Эксель помогите....