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