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