В процессе разработки и настройки отчетов по продажам часто возникает необходимость проанализировать деятельность сотрудников. Один из самых частых вопросов — как зафиксировать, кто именно выполнил проведение документа РеализацияТоваровУслуг. Давайте разберем эту задачу подробно, рассмотрим стандартные инструменты платформы и программные способы реализации.
Прежде чем приступать к доработкам конфигурации, проанализируем типовые возможности. В конфигурации 1С:Управление торговлей уже предусмотрен реквизит Ответственный. Именно этот механизм является рекомендуемым для учета работы менеджеров.
Рассмотрим, как это работает:
Ответственный.RLS (ограничение прав на уровне записей) и Профили групп доступа.Если ваша задача — закрепить продажу за конкретным менеджером, который ведет сделку, лучшего способа, чем использование штатного реквизита, не найти. Это не требует изменения структуры метаданных и гарантирует корректную работу при обновлениях конфигурации.
Если бизнес-задача требует фиксации именно того человека, который нажал кнопку «Провести», и это может отличаться от ответственного за документ, нам придется использовать обработчики событий. Разберем, как это реализовать с помощью модуля объекта.
Наиболее подходящим местом для записи текущего пользователя будет событие ПередЗаписью или ОбработкаПроведения. Мы можем использовать свойство ТекущийПользователь из системного перечисления. Реализуем это следующим образом:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Допустим, мы создали собственный реквизит «ПользовательПровел»
ЭтотОбъект.ПользовательПровел = Пользователи.ТекущийПользователь();
КонецПроцедуры
Однако, при использовании такого подхода, стоит учитывать важные нюансы, с которыми мы можем столкнуться в реальной эксплуатации системы:
Если ЗначениеЗаполнено(ЭтотОбъект.ПользовательПровел) Тогда...При добавлении новых реквизитов в типовые документы всегда возникает риск усложнения поддержки системы. Каждое изменение в Конфигураторе требует внимания при установке обновлений от вендора (фирмы 1С). Поэтому давайте рассмотрим альтернативные подходы:
Конструкторе настроек отчетов без изменения кода.Версионирование объектов. Система сама ведет лог всех правок, включая автора изменений. Это гораздо профессиональнее, чем создание собственного регистра для логирования.Продажи. Это обеспечит высокую производительность отчетов и позволит гибко настраивать аналитику без правки первичных документов.Чтобы успешно справиться с тестовым заданием или реальной задачей учета:
Во-первых, проверьте, не достаточно ли вам стандартного реквизита Ответственный. В большинстве типовых сценариев этого более чем достаточно для построения отчетов.
Во-вторых, если вы решили использовать собственный реквизит, отдайте предпочтение Дополнительным реквизитам. Это сэкономит время на поддержке и обновлении базы.
В-третьих, если вы выбрали путь программирования, используйте ПередЗаписью, но обязательно добавьте проверки на то, кто именно инициировал процесс записи документа, чтобы избежать искажения статистики автоматическими операциями системы.
Работая таким образом, вы обеспечите чистоту кода и стабильность учетной системы!