Часто возникает необходимость закрывать просроченные заказы клиентов. Часто менеджеры забывают либо не считают нужным следить за своими открытыми заказами, однако практически никогда не забывают поставить товары в резерв. Как следствие - затоваривание склада и прочие прелести.
Доработка состоит из двух частей: расширение для расчета даты закрытия и блокирования просроченного закрытого заказа рядовым менеджерам и подключаемой обработки для собственно закрытия заказов.
Порядок подключения:
1) добавляем расширение (отвечает за реквизит даты закрытия и права на редактирование)
2) создаем дополнительный реквизит списка заказов клиентов, называем его "СрокДействия" (наименование используется в коде, перфекционисты могут самостоятельно исправить этот недочет), тип значения - дата. Выставляем любое условие доступности, возвращающее истину, и содержащее в себе пометку "ЭтоРеквизитСрокДействия" (без кавычек). Я использовал условие "Адрес доставки" не равен "ЭтоРеквизитСрокДействия". Это делается для ограничения доступности реквизита срока действия рядовым менеджерам на действующих заказах.
3) создаем группу пользователей "Редактирование сроков действия заказов" и профиль "Редактирование сроков действия заказов" (здесь наименование не критично). В профиле разрешаем роль "Продажи"-"ЗПЗ редактирование срока действия заказа", в группу добавляем пользователей, которые могут редактировать закрытые заказы, в т.ч. открывать их.
4) Добавляем дополнительную внешнюю обработку (содержит процедуру определения просроченных заказов и их закрытие), назначаем расписание работы единственной команды - по будням, например в полдень (чтобы успели разнести банковские выписки). Эта часть реализована обработкой, т.к. нет возможности внести в расширение регламентное задание.
Принцип действия:
При первой записи заказа выставляется срод действия заказа - дата, когда заказ закроется. Учитываются только полные рабочие (или предпраздничные) дни. Заказы с кодом валюты 643 действуют 3 рабочих дня, остальные - 5 рабочих дней. Например для рублевого заказа от 18 марта 19 года срок действия будет выставлен 22 марта, для заказа от 21 марта - срок действия 27 марта.
Редактирование срока действия заказа доступно только пользователям с разрешенной ролью "ЗПЗ редактирование срока действия заказа". Изменение даты заказа не влияет на срок действия заказа.
В назначенное время определяются просроченные заказы, по которым не было движений товара или денег, и во всех их строках выставляется признак отмены, а также выставляется признак закрытия в состояния заказа.
Заказ, в котором все строки отменены открывается на только просмотр всем, кроме имеющим роль "Полные права" или "ЗПЗ редактирование срока действия заказа". Для открытия заказа достаточно снять признак отмены с любой строки.
Код минимален и открыт. Проверено на 1С:Предприятие 8.3 (8.3.13.1513) и Управление торговлей, редакция 11 (11.4.6.207)
15.07.19 исправлено замещение свойства ТолькоПросмотр в случае выставления его в других местах
28.02.20 добавлено заполнение причины закрытия в случае использования этой функциональной опции (причина закрытия создается автоматически); добавлена очистка этапов оплаты при закрытии заказа; принудительно отключен подключение обработчика ожидания "УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов" (проверено на 8.3.15.1830, УТ 11.4.10.62)