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