При работе в программах линейки 1С часто возникает задача закрепить за конкретной номенклатурной позицией определенный склад. Например, когда скоропортящиеся продукты должны по умолчанию приходить на холодильный склад, а строительные материалы — на открытую площадку. В этом материале мы подробно разберем, как устроена логика работы со складами в 1С:Управление торговлей (редакции 11.4 и 11.5), какие штатные механизмы можно использовать и как реализовать автоподстановку склада при ручном вводе документов.
В типовом функционале конфигурации 1С:Управление торговлей в самой карточке справочника Номенклатура отдельное реквизитное поле «Склад по умолчанию» отсутствует. Это осознанное архитектурное решение разработчиков 1С, так как торговое предприятие может закупать один и тот же товар на разные региональные склады или распределительные центры в зависимости от логистической цепочки.
Тем не менее, в системе предусмотрено несколько механизмов, позволяющих автоматизировать подстановку склада при формировании документов. Проанализируем эти варианты подробно.
Если задача заключается в том, чтобы система сама определяла склад при автоматическом расчете и формировании заказов поставщикам, воспользуемся функционалом подсистемы поддержания запасов и обеспечения потребностей.
Разберем по шагам, как настроить привязку склада через схемы обеспечения:
Как это работает: При запуске обработки Формирование заказов по потребностям программа анализирует остатки, минимальные/максимальные запасы и установленные схемы обеспечения. В результате автоматический Заказ поставщику будет сформирован именно на тот склад, который зафиксирован в схеме обеспечения.
Ограничение метода: Данный механизм идеально подходит для автоматизированного расчета, однако он не сработает, если менеджер открывает пустой документ «Заказ поставщику» или «Приобретение товаров и услуг» и добавляет строки вручную.
Выясним, как подставлять склад на уровне документа с помощью коммерческих условий работы с контрагентами.
Если определенная номенклатурная группа поставляется конкретным контрагентом на выделенный склад, мы можем зафиксировать это в соглашении:
Ограничение метода: Склад из соглашения заполняет шапку документа. Если в одном документе от одного поставщика поступают товары, предназначенные для разных складов, разделить их по строкам табличной части в автоматическом режиме штатно не получится.
Рассмотрим наилучшее практическое решение для ситуаций, когда менеджеры вносят документы вручную и требуется, чтобы при выборе товара в табличной части сразу заполнялась колонка Склад.
Для реализации этого сценария без снятия базы с поддержки выполним два простых шага.
Номенклатура.Для автоматической подстановки значения из созданного дополнительного реквизита программист 1С может добавить небольшое расширение конфигурации. Разберем пример кода, обрабатывающего событие изменения номенклатуры в табличной части документа:
&НаКлиенте
Процедура Расш1_ТоварыНоменклатураПриИзмененииПосле(Элемент)
СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
Если СтрокаТЧ = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
ЦелевойСклад = ПолучитьОсновнойСкладНоменклатуры(СтрокаТЧ.Номенклатура);
Если ЗначениеЗаполнено(ЦелевойСклад) Тогда
СтрокаТЧ.Склад = ЦелевойСклад;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОсновнойСкладНоменклатуры(СсылкаНоменклатура)
// Имя свойства доп. реквизита
ИмяСвойства = "ОсновнойСкладЗакупки";
СкладЗначение = Справочники.Склады.ПустаяСсылка();
// Получение значения дополнительного реквизита
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Значение КАК Склад
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка
| И НоменклатураДополнительныеРеквизиты.Свойство.Имя = &ИмяСвойства";
Запрос.УстановитьПараметр("Ссылка", СсылкаНоменклатура);
Запрос.УстановитьПараметр("ИмяСвойства", ИмяСвойства);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СкладЗначение = Выборка.Склад;
КонецЕсли;
Возврат СкладЗначение;
КонецФункции
Мы проанализировали существующие подходы к привязке номенклатуры к складу в 1С:Управление торговлей 11: