Как зафиксировать пользователя, проводившего документ Реализация товаров и услуг?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе разработки и настройки отчетов по продажам часто возникает необходимость проанализировать деятельность сотрудников. Один из самых частых вопросов — как зафиксировать, кто именно выполнил проведение документа РеализацияТоваровУслуг. Давайте разберем эту задачу подробно, рассмотрим стандартные инструменты платформы и программные способы реализации.

Использование стандартного реквизита «Ответственный»

Прежде чем приступать к доработкам конфигурации, проанализируем типовые возможности. В конфигурации 1С:Управление торговлей уже предусмотрен реквизит Ответственный. Именно этот механизм является рекомендуемым для учета работы менеджеров.

Рассмотрим, как это работает:

  1. При первом создании документа система автоматически подставляет текущего пользователя в поле Ответственный.
  2. В отчетах по продажам можно легко сгруппировать данные именно по этому полю.
  3. Для разграничения прав, чтобы менеджеры не могли редактировать документы друг друга, используется механизм RLS (ограничение прав на уровне записей) и Профили групп доступа.

Если ваша задача — закрепить продажу за конкретным менеджером, который ведет сделку, лучшего способа, чем использование штатного реквизита, не найти. Это не требует изменения структуры метаданных и гарантирует корректную работу при обновлениях конфигурации.

Программная фиксация пользователя при проведении

Если бизнес-задача требует фиксации именно того человека, который нажал кнопку «Провести», и это может отличаться от ответственного за документ, нам придется использовать обработчики событий. Разберем, как это реализовать с помощью модуля объекта.

Наиболее подходящим местом для записи текущего пользователя будет событие ПередЗаписью или ОбработкаПроведения. Мы можем использовать свойство ТекущийПользователь из системного перечисления. Реализуем это следующим образом:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Допустим, мы создали собственный реквизит «ПользовательПровел»
    ЭтотОбъект.ПользовательПровел = Пользователи.ТекущийПользователь();
КонецПроцедуры

Однако, при использовании такого подхода, стоит учитывать важные нюансы, с которыми мы можем столкнуться в реальной эксплуатации системы:

Почему доработка — это крайняя мера?

При добавлении новых реквизитов в типовые документы всегда возникает риск усложнения поддержки системы. Каждое изменение в Конфигураторе требует внимания при установке обновлений от вендора (фирмы 1С). Поэтому давайте рассмотрим альтернативные подходы:

  1. Дополнительные реквизиты и сведения: Этот механизм позволяет добавить необходимое поле к документу через интерфейс пользователя (режим «Предприятие»). Такие данные автоматически становятся доступны в Конструкторе настроек отчетов без изменения кода.
  2. Версионирование объектов: Если задача сводится к аудиту (желанию увидеть, кто последний менял документ), воспользуйтесь механизмом Версионирование объектов. Система сама ведет лог всех правок, включая автора изменений. Это гораздо профессиональнее, чем создание собственного регистра для логирования.
  3. Аналитика в регистрах: Если цель — аналитика по продажам, рассмотрите возможность добавления измерения «Менеджер» в регистр накопления Продажи. Это обеспечит высокую производительность отчетов и позволит гибко настраивать аналитику без правки первичных документов.

Итоговые рекомендации

Чтобы успешно справиться с тестовым заданием или реальной задачей учета:

Во-первых, проверьте, не достаточно ли вам стандартного реквизита Ответственный. В большинстве типовых сценариев этого более чем достаточно для построения отчетов.

Во-вторых, если вы решили использовать собственный реквизит, отдайте предпочтение Дополнительным реквизитам. Это сэкономит время на поддержке и обновлении базы.

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

Работая таким образом, вы обеспечите чистоту кода и стабильность учетной системы!

← На главную