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