При заполнении базы данных часто возникает задача привязать номенклатурные позиции к конкретным ячейкам, секциям или стеллажам на складе. При попытке выполнить эту операцию с помощью типовой обработки с ИТС Загрузка данных из табличного документа пользователи сталкиваются с тем, что в справочнике Номенклатура поле места хранения попросту отсутствует. Проанализируем архитектуру хранения этих сведений в конфигурации 1С:Управление торговлей 10.3 и разберем по шагам, как правильно загрузить топологию склада и привязку товаров.
В конфигурации 1С:Управление торговлей 10.3 справочное адресное хранение реализовано не через реквизиты самой номенклатуры, а с помощью отдельной структуры метаданных:
МестаХранения — подчинен справочнику Склады (в нем хранятся наименования стеллажей, рядов, ячеек или полок для каждого конкретного склада).МестаХраненияНоменклатуры — независимый непериодический регистр, который связывает конкретную позицию товара со складом и ячейкой, а также определяет приоритет размещения.Поскольку одна и та же позиция номенклатуры может храниться на разных складах в разных ячейках, прямого реквизита у элемента номенклатуры нет. Именно поэтому попытки найти это поле в групповой обработке справочника Номенклатура или настроить его прямую загрузку не дают результата. Рассмотрим практические способы решения этой задачи.
Типовая обработка Загрузка данных из табличного документа позволяет загружать информацию не только в справочники, но и в регистры сведений. Выполним загрузку по шагам без написания программного кода.
Этап 1: Создание элементов топологии склада
МестаХранения.Владелец — в качестве значения выберем нужный элемент справочника Склады (или настроим поиск по наименованию склада).Наименование.Этап 2: Привязка номенклатуры к местам хранения
МестаХраненияНоменклатуры.Номенклатура — сопоставляем с колонкой файла (поиск по коду, артикулу или наименованию);
- Склад — указываем склад-получатель;
- МестоХранения — сопоставляем с колонкой наименования ячейки, обязательно указав владельца (тот же склад), чтобы поиск происходил корректно;
- Приоритет — числовое значение (например, 1), если используется ранжирование мест.Если требуется выполнить загрузку номенклатуры и сразу зафиксировать место хранения за один проход, воспользуемся функционалом вычисляемых выражений в обработке загрузки. Для этого в режиме загрузки справочника Номенклатура добавим служебную колонку с типом Вычислять и пропишем программный код записи в регистр сведений.
Посмотрим на пример программного кода для обработчика:
МенеджерЗаписи = РегистрыСведений.МестаХраненияНоменклатуры.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Склад = НужныйСклад;
МенеджерЗаписи.Номенклатура = ТекущийОбъект.Ссылка;
МенеджерЗаписи.МестоХранения = СсылкаНаМестоХранения;
МенеджерЗаписи.Приоритет = 1;
МенеджерЗаписи.Записать(Истина);
При таком подходе при записи каждого элемента номенклатуры система автоматически формирует соответствующую запись в регистре сведений МестаХраненияНоменклатуры.
Разберем важные нюансы, которые необходимо учитывать при работе с местами хранения в УТ 10.3:
МестаХранения без указания конкретного склада в поле Владелец.Если требуется хранить информацию о полке или ряде исключительно как строковый комментарий без привязки к справочнику складов, можно использовать механизм дополнительных реквизитов и сведений:
СвойстваОбъектов с типом «Строка» (например, «Адрес на складе»).ЗначенияСвойствОбъектов.Этот вариант проще в загрузке, однако он не будет автоматически подтягиваться в типовые складские печатные формы, ориентированные на регистр МестаХраненияНоменклатуры.