Как вывести информацию о складской ячейке в список номенклатуры 1С:УНФ

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

При работе в 1С:Управление нашей фирмой (УНФ) версии 1.6 пользователи часто сталкиваются с ситуацией, когда при включенном адресном или справочном хранении в списке товаров колонка Ячейка остается пустой. Это происходит даже в том случае, если через меню Изменить форму данное поле добавлено в видимую область. Стоит отметить, что сама по себе организация адресного хранения — это первый шаг, и для его упрощения можно использовать помощники для генерации ячеек склада — для этого подойдёт обработка для закрепления складских ячеек за номенклатурой в 1С:УНФ. Давайте разберем природу проблемы с отображением этих ячеек, проанализируем архитектуру хранения данных в программе и рассмотрим несколько способов решения этой задачи.

Почему стандартное поле Ячейка остается пустым

Для начала выясним причину такого поведения системы. В конфигурации 1С:УНФ справочник Номенклатура имеет встроенный реквизит Ячейка (или ОсновнаяЯчейка). Именно его мы видим в списке доступных полей при настройке формы. Однако фактические данные о том, где лежит товар, могут храниться двумя разными способами:

  1. Как реквизит карточки: Это статичное поле, которое заполняется вручную в карточке товара на вкладке «Хранение». Если оно не заполнено в каждой карточке, колонка в списке будет пустой.
  2. В регистре сведений «Размещение номенклатуры»: Если на складе используется справочное хранение, система записывает связи «Товар — Склад — Ячейка» в отдельную таблицу (регистр). Список номенклатуры по умолчанию «не заглядывает» в этот регистр, так как это может замедлить работу программы.

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

Способ 1. Заполнение основной ячейки в карточке товара

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

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

Способ 2. Модификация запроса динамического списка

Если нам необходимо видеть актуальные данные из системы хранения (из регистра), нам придется познать механизм работы с динамическими списками. Динамический список — это программный объект, который выбирает данные из базы по определенному запросу. Чтобы добавить в него данные из регистра, необходимо изменить этот запрос.

Проанализируем шаги, которые должен выполнить программист:

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

Пример логики запроса будет выглядеть следующим образом:


ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Артикул КАК Артикул,
    СправочникНоменклатура.Наименование КАК Наименование,
    ЕСТЬNULL(РазмещениеНоменклатуры.Ячейка, "Не указана") КАК РабочаяЯчейка
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатуры.СрезПоследних КАК РазмещениеНоменклатуры
        ПО РазмещениеНоменклатуры.Номенклатура = СправочникНоменклатура.Ссылка

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

Способ 3. Использование расширений конфигурации

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

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

Способ 4. Альтернативные рабочие места

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

Выясним, как ее использовать:

  1. Откройте список номенклатуры.
  2. Включите отображение правой панели (если она скрыта).
  3. В настройках панели выберите отчет Остатки по ячейкам.

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

Также рекомендуем обратить внимание на форму Прайс-листы. В настройках формирования прайс-листа можно гибко добавлять дополнительные колонки, включая места хранения. Многие менеджеры используют именно эту форму как основное рабочее место для быстрого поиска товаров и их адресов на складе. Кроме того, существуют и более комплексные решения, которые представляют собой полноценный интерфейс для отображения информации об остатках и оборотах, объединяющий в себе функции отчетов и списков для максимального удобства — есть панель отображения остатков и резервов в форме подбора номенклатуры.

Резюме

Мы выяснили, что пустая колонка в списке — это не ошибка, а особенность архитектуры 1С:УНФ. Для вывода информации о ячейках выберите наиболее подходящий вам путь: простой (заполнение основной ячейки в карточке), технический (правка запроса динамического списка через расширение) или аналитический (использование встроенных контекстных отчетов).

← На главную