Как получить и заполнить склад у пользователя в 1С:Управление торговлей 11.4

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

При переходе с устаревших конфигураций (например, УТ 10.3) на 1С:Управление торговлей 11.4 многие разработчики сталкиваются с неожиданной проблемой: у объекта Пользователи больше нет стандартного реквизита ОсновнойСклад. Попытка обратиться к свойству напрямую, вроде Пользователь.Склад, вызывает ошибку, так как такого поля в базе данных просто не существует.

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

Почему в УТ 11 нет основного склада у пользователя?

Разберем ситуацию с точки зрения архитектуры системы. В последних версиях 1С отказались от жесткой привязки настроек к карточке пользователя. Это сделано для повышения гибкости: один и тот же сотрудник сегодня может работать на «Складе готовой продукции», а завтра — на «Транзитном складе». Вместо статичной настройки система использует адаптивные механизмы и контекстные связи.

Рассмотрим основные способы, которыми программа «понимает», какой склад нужно подставить в новый документ.

Способ 1. Механизм заполнения по статистике

Это основной метод в УТ 11.4. Система анализирует последние действия конкретного пользователя и делает вывод о его предпочтениях. Проанализируем, как это работает программно. В модулях документов при создании (в обработчике ОбработкаЗаполнения) часто вызывается специальный механизм статистики.

Если вы создаете свой документ и хотите, чтобы склад заполнялся «как в типовых», вам необходимо использовать вызов общего модуля ЗаполнениеСвойствПоСтатистикеСервер. Рассмотрим пример кода:


// В модуле объекта вашего документа
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    
    // Сначала выполняем стандартное заполнение (если есть)
    // ...

    // Вызываем механизм подстановки данных по статистике последних введенных документов
    ПараметрыЗаполнения = ЗаполнениеСвойствПоСтатистикеСервер.ПараметрыЗаполнения();
    ПараметрыЗаполнения.ИмяСправочникаДляАнализа = "Склады";
    
    ЗаполнениеСвойствПоСтатистикеСервер.ЗаполнитьСвойстваОбъекта(ЭтотОбъект, ДанныеЗаполнения, ПараметрыЗаполнения);

КонецПроцедуры

Программа проанализирует последние 5–10 документов этого типа, созданных текущим пользователем, найдет наиболее часто встречающийся склад и подставит его в реквизит Склад вашего объекта.

Способ 2. Поиск по последнему введенному документу

Если механизм статистики кажется слишком сложным или избыточным, можно применить упрощенный подход: найти последний созданный пользователем документ и скопировать склад оттуда. Выясним, как реализовать это с помощью запроса.

Проанализируем пример функции, которая возвращает склад из последнего документа ЗаказКлиента для текущего пользователя:


Функция ПолучитьПоследнийСкладПользователя(ТекущийПользователь) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |	ЗаказКлиента.Склад КАК Склад
        |ИЗ
        |	Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |	ЗаказКлиента.Ответственный = &Ответственный
        |	И ЗаказКлиента.Проведен = ИСТИНА
        |УПОРЯДОЧИТЬ ПО
        |	ЗаказКлиента.Дата УБЫВ";
    
    Запрос.УстановитьПараметр("Ответственный", ТекущийПользователь);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если НЕ РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Склад;
    КонецЕсли;
    
    Возврат Справочники.Склады.ПустаяСсылка();
    
КонецФункции

Этот метод надежен, если пользователь работает в рамках одного бизнес-процесса продолжительное время.

Способ 3. Привязка через Соглашения с клиентами

В УТ 11 приоритет заполнения данных часто отдается Соглашению. Если в документе (например, в «Заказе клиента» или «Реализации») выбрано соглашение, программа в первую очередь будет искать склад именно там. Склад в соглашении важнее настроек пользователя.

Рассмотрим порядок действий при автоматизации заполнения:

  1. Проверяем, заполнено ли Соглашение в документе.
  2. Если в Соглашении указан конкретный склад, используем его.
  3. Если склад в соглашении пустой, обращаемся к механизму статистики.

Способ 4. Использование регистра «Настройки пользователей»

Несмотря на отсутствие реквизита в справочнике Пользователи, система БСП (Библиотека стандартных подсистем), на которой построена УТ 11, позволяет хранить произвольные настройки. Для этого используется хранилище настроек или регистры сведений.

Чтобы программно получить настройку, которую пользователь мог сохранить вручную (через форму «Мои настройки»), можно использовать функцию:

ОбщегоНазначения.ЗначениеНастройкиПользователя(ИмяНастройки)

Однако помните, что для склада такая настройка в типовой УТ 11 по умолчанию не предусмотрена для всех документов сразу. Она чаще встречается в специализированных рабочих местах, таких как РМК (Рабочее место кассира) или Приемка/Отгрузка на ордерном складе.

Способ 5. Реализация собственного «Основного склада» (рекомендация для разработчика)

Если бизнес-заказчик настаивает на наличии жестко заданного основного склада, лучшим решением будет использование Расширения конфигурации. Разберем по шагам, как это сделать правильно:

  1. Создайте новое расширение.
  2. Добавьте в него новый Регистр сведений, например, ДопНастройкиПользователей.
  3. В качестве измерения укажите Пользователь (тип СправочникСсылка.Пользователи), а в качестве ресурса — Склад (тип СправочникСсылка.Склады).
  4. В модуле вашего нового документа в процедуре ОбработкаЗаполнения добавьте обращение к этому регистру.

Такой подход считается более «чистым» с точки зрения архитектуры 1С, так как вы не меняете структуру типового справочника Пользователи, что облегчит дальнейшие обновления конфигурации.

Подведем итоги

Мы выяснили, что прямого свойства «Склад» у пользователя в УТ 11.4 не существует. Для решения задачи заполнения склада мы рекомендуем:

Помните, что автоматизация заполнения склада существенно ускоряет работу менеджеров и снижает количество ошибок при вводе первичной документации.

← На главную