Как автоматически заполнять организацию по складу в документе Перемещение товаров в 1С:УТ 11

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

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

Почему в 1С:УТ 11 склад штатно не привязан к организации?

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

Если бы разработчики фирмы "1С" жестко закрепили реквизит Организация в справочнике Склады, это бы сделало невозможным:

  1. Продажу товара организации "А", если он фактически лежит на складе, закрепленном за организацией "Б", без предварительного оформления кучи документов.
  2. Использование единого адресного пространства (ячеек) для разных юрлиц.
  3. Гибкое управление остатками в рамках холдинга.

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

Этап 1: Создание связи Склад — Организация

Поскольку типовой реквизит отсутствует, нам нужно его создать. У нас есть два пути: добавить реквизит через конфигуратор (что потребует снятия с поддержки или использования расширения) или воспользоваться механизмом Дополнительных реквизитов.

Рассмотрим вариант с дополнительными реквизитами как наиболее безопасный:

  1. Перейдем в раздел Администрирование — Общие настройки.
  2. Откроем пункт Дополнительные реквизиты и сведения.
  3. Найдем в списке справочник Склады и нажмем Добавить — Новый.
  4. Наименование укажем "Организация-владелец", а тип значения выберем СправочникСсылка.Организации.
  5. Теперь в карточке каждого склада на вкладке "Дополнительные реквизиты" мы можем указать конкретную организацию.

Этап 2: Реализация автоподстановки через расширение

Теперь нам необходимо заставить документ Перемещение товаров реагировать на выбор склада. Для этого мы создадим расширение конфигурации. Это позволит нам сохранить типовую базу в чистоте и упростит процесс обновления.

Разберем по шагам создание обработчика события:

  1. Создадим новое расширение и добавим в него документ ПеремещениеТоваров и его форму ФормаДокумента.
  2. Найдем на форме элемент СкладОтправитель и создадим для него обработчик события ПриИзменении на клиенте.
  3. В этом обработчике нам нужно обратиться к серверу, чтобы считать значение нашего дополнительного реквизита.

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


&НаКлиенте
Процедура Расш1_СкладОтправительПриИзмененииПосле(Элемент)
    
    // Если склад очистили, ничего не делаем
    Если Не ЗначениеЗаполнено(Объект.СкладОтправитель) Тогда
        Возврат;
    КонецЕсли;
    
    // Вызываем серверную функцию для получения организации
    ОрганизацияСклада = ПолучитьОрганизациюСкладаСервер(Объект.СкладОтправитель);
    
    // Если организация в складе заполнена, подставляем ее в документ
    Если ЗначениеЗаполнено(ОрганизацияСклада) Тогда
        Объект.Организация = ОрганизацияСклада;
    КонецЕсли;
    
КонецПроцедуры

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

Этап 3: Альтернативный метод через группы складов

Рассмотрим ситуацию, когда складов очень много, и привязывать каждый индивидуально трудозатратно. Выясним, как можно упростить логику через иерархию справочника. Мы можем создать группы складов (папки), названные в честь организаций. Например, папка "Склады ООО Торговый Дом" и папка "Склады ИП Иванов".

В этом случае в коде расширения мы будем анализировать родителя выбранного склада. Рассмотрим логику такого решения:


&НаСервереБезКонтекста
Функция ОпределитьОрганизациюПоРодителю(ВыбранныйСклад)
    
    // Получаем наименование родительской группы
    РодительНаименование = ВыбранныйСклад.Родитель.Наименование;
    
    // Ищем организацию по точному совпадению наименования группы и организации
    НайденаяОрганизация = Справочники.Организации.НайтиПоНаименованию(РодительНаименование);
    
    Возврат НайденаяОрганизация;
    
КонецФункции

Такой подход удобен тем, что не требует создания дополнительных реквизитов, но он накладывает жесткие требования к ведению справочника и наименованиям папок.

Важные нюансы и риски автоматизации

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

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

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

Помните, что любые изменения в логике выбора ключевых реквизитов (таких как Склад или Организация) должны сопровождаться тщательным тестированием в цепочке документов от закупки до продажи.

← На главную