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