Как организовать работу с ячейками в 1С:УНФ, если складов много, а ячейка по умолчанию только одна?

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

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

Понимание архитектуры адресного хранения в УНФ

Прежде чем переходить к решениям, проанализируем, как 1С:УНФ работает с ячейками. Важно понимать, что это справочное хранение. В отличие от полноценных WMS-систем (как в 1С:ERP или 1С:УТ), программа не ведет жесткий остаток в разрезе ячеек на уровне бухгалтерских регистров (для сверки данных можно использовать сравнение регистров «Запасы на складах» и «Запасы и затраты»). Она лишь хранит информацию о том, где товар должен лежать или где он был зафиксирован последними документами.

Поле Ячейка в карточке номенклатуры — это всего лишь «подсказка» для автоматического заполнения документов. При выборе товара в приходную накладную система смотрит в этот реквизит и подставляет значение в строку. Проблема возникает тогда, когда на Складе №1 товар лежит в ячейке «А1», а на Складе №2 — в ячейке «Б5». Типовая конфигурация не позволяет хранить эти разные значения в одной карточке товара.

Способ 1. Использование штатных возможностей (без программирования)

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

  1. Перейдем в раздел Настройки — Еще больше возможностей — Склад.
  2. Убедимся, что флаг Ячейки включен.
  3. Включим опцию Разрешить склады в табличных частях. Это позволит в одном документе (например, в Приходной накладной) распределять товар по разным складам и, соответственно, разным ячейкам.

При использовании этого метода алгоритм работы будет следующим: мы выбираем товар, система подставляет ячейку из карточки (если она там есть), а кладовщик или менеджер вручную меняет её на нужную в зависимости от выбранного склада. Рассмотрим ситуацию, когда товар не помещается в одну ячейку. В этом случае мы рекомендуем использовать функцию разбиения строк. Нажимаем правой кнопкой мыши на строку с товаром, выбираем «Разбить строку», указываем количество для второй части и выбираем для нее другую ячейку.

Способ 2. Создание системы соответствий через расширение (для программистов)

Если ручной ввод недопустим и требуется автоматизация, проанализируем техническое решение, предложенное опытными разработчиками. Суть заключается в создании нового объекта метаданных, который будет хранить связку Организация + Склад + Номенклатура = Ячейка.

Разберем по шагам, как это реализовать:

Шаг 1. Создание регистра сведений. Создадим в расширении новый непериодический регистр сведений, например, МестаХраненияНоменклатуры.

Настроим измерения регистра:

Настроим ресурсы регистра:

Шаг 2. Настройка интерфейса. Вынесем этот регистр в интерфейс карточки номенклатуры или создадим отдельную форму для заполнения этих данных. Теперь для каждой позиции товара мы сможем четко прописать: «Для Организации А на Складе Х использовать Ячейку 1».

Шаг 3. Доработка подбора и заполнения. Теперь нам необходимо перехватить событие добавления товара в документ. Рассмотрим пример кода, который можно разместить в расширении для формы документа (например, ПриходнаяНакладная) в процедуре, отвечающей за обработку выбора номенклатуры:


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

Эту функцию мы вызываем в момент подбора товара. Если запрос возвращает заполненную ячейку, мы подставляем её в строку документа вместо стандартного реквизита из справочника Номенклатура.

Почему в списке номенклатуры поле «Ячейка» часто оказывается пустым?

Выясним причину популярной проблемы: пользователь выводит через «Изменить форму» колонку Ячейка в список товаров, но она не заполняется. Это происходит потому, что вы выводите реквизит самой карточки. Если вы не заполнили его (так как решили использовать разные склады), колонка будет пустой.

Чтобы видеть реальное распределение остатков по ячейкам, проанализируем ситуацию: в УНФ данные о фактическом нахождении товара хранятся в регистре накопления ЗапасыПоЯчейкам. Чтобы увидеть их в списке, типовыми средствами можно использовать правую панель «Остатки», но она показывает данные только до уровня складов. Для детального просмотра необходимо открывать отчет «Остатки по ячейкам».

Практические советы по работе с несколькими ячейками

Рассмотрим ситуацию, когда пришел большой объем товара, и он физически не влезает в одну ячейку. В УНФ это решается следующими способами:

Подводя итог, можно сказать: хотя 1С:УНФ «из коробки» ограничивает нас одной ячейкой по умолчанию, гибкость платформы позволяет либо адаптировать бизнес-процессы под ручное уточнение (через разбиение строк), либо внедрить автоматическое определение мест хранения через создание собственного регистра сведений в расширении. Это небольшое изменение значительно повышает точность складского учета в компаниях с разветвленной структурой складов и несколькими юридическими лицами.

← На главную