В практике работы с конфигурацией 1С:Управление торговлей (редакция 11) часто возникает управленческая задача: жестко разделить каналы оптовых и розничных продаж. Одной из типичных проблем является возможность менеджеров оформлять документ Реализация товаров и услуг (РТУ) со склада, который имеет тип Розничный магазин. Несмотря на то что склад помечен как розничный, система по умолчанию позволяет выбрать его в оптовых документах продажи. В этой статье мы подробно разберем, почему так происходит, и рассмотрим все доступные способы введения запрета на такие операции.
Прежде чем переходить к блокировкам, проанализируем методологию, заложенную разработчиками в 1С:УТ 11 и 1С:ERP. С точки зрения системы, Розничный магазин — это склад, на котором товары могут учитываться по розничным ценам и который связан с кассой ККМ. Однако законодательство и бизнес-логика часто предполагают ситуации, когда розничная точка может продать товар юридическому лицу по безналичному расчету. В этом случае оформляется именно Реализация товаров и услуг, а не чек ККМ.
Именно поэтому «штатной галочки» в настройках склада, которая бы одним нажатием выключала возможность использования склада в РТУ, не существует. Система предоставляет гибкость, которая в определенных условиях (как в случае автора вопроса) становится избыточной и требует доработки или специфической настройки.
Если нам необходимо ограничить выбор склада для конкретных пользователей (например, менеджеров по оптовым продажам), мы можем воспользоваться механизмом групп доступа. Это так называемый «облегченный RLS», который работает быстрее стандартного ограничения на уровне записей.
Разберем этот процесс по шагам:
В результате, когда менеджер создаст документ Реализация товаров и услуг и нажмет на выбор склада, он просто не увидит розничные магазины в списке. Это наиболее элегантный штатный способ решения проблемы без изменения программного кода.
Проанализируем ситуацию: документ РТУ обычно работает с оптовыми ценами, заданными в соглашении с клиентом. Розничный склад работает со своим Розничным видом цен. Мы можем настроить систему так, что проведение документа станет невозможным по экономическим причинам:
Этот метод является косвенным и не дает 100% гарантии, так как менеджер может обладать правами на ручное изменение цен, но в совокупности с другими мерами он помогает выстроить правильную цепочку работы.
Как показывает практика (и опыт автора темы на форуме), самым надежным способом для файловых баз, где включение RLS нежелательно из-за падения производительности, является использование расширения конфигурации. Мы можем добавить проверку типа склада непосредственно при попытке проведения или записи документа.
Рассмотрим пример логики, которую можно реализовать в расширении для документа РеализацияТоваровУслуг. Нам необходимо перехватить процедуру ОбработкаПроверкиЗаполнения или ПередЗаписью.
Пример кода на языке 1С (в модуле объекта расширения):
&После("ОбработкаПроверкиЗаполнения")
Процедура Расш1_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Проверяем, что склад заполнен
Если ЗначениеЗаполнено(Объект.Склад) Тогда
// Получаем тип склада из реквизитов складской территории
ТипСклада = ОбщийНазначение.ЗначениеРеквизитаОбъекта(Объект.Склад, "ТипСклада");
// Если тип склада - Розничный магазин, прерываем проведение
Если ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин Тогда
ТекстСообщения = "Продажа через 'Реализацию товаров и услуг' с розничного склада запрещена!";
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "Объект.Склад");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Использование расширения позволяет не снимать основную конфигурацию с поддержки и при этом гарантированно блокирует нежелательные действия пользователей. Мы рекомендуем проверять именно ТипСклада, так как это системное перечисление, которое однозначно идентифицирует магазин.
Выясним, как еще можно воздвигнуть барьер на пути некорректной продажи. Если на складе используется ордерная схема документооборота при отгрузке, то создание РТУ — это лишь распоряжение на отгрузку. Чтобы товар фактически списался и ушел со склада, кладовщик должен создать документ Расходный ордер на товары.
Мы можем настроить права так, что работники розничного склада будут видеть и обрабатывать распоряжения только из документов Чек ККМ или Заказ клиента с определенными статусами. В этом случае менеджер сможет выписать РТУ, но склад ее никогда не «увидит» и не отгрузит. Однако это организационный метод, который требует дисциплины и может привести к накоплению «зависших» распоряжений в системе.
Важно помнить о настройках Интеркампани (передачи между организациями). Если в вашей базе настроена возможность продажи товара, принадлежащего другой организации, система может автоматически пытаться подобрать остатки с розничных складов других юрлиц. При внедрении запрета на продажу через расширение, обязательно протестируйте, как ведет себя система в схемах «Интеркампани», чтобы не заблокировать легитимные операции перемещения и перепродажи между своими фирмами.
Мы проанализировали ситуацию и выяснили, что стандартного переключателя для решения этой задачи в 1С:УТ 11.4 нет. Выбор метода зависит от ваших приоритетов:
Помните, что любые ограничения в системе должны сопровождаться обучением персонала, чтобы пользователи понимали, почему их действия блокируются и как правильно оформить продажу через рабочее место кассира (РМК), если склад является розничным.