Как правильно спроектировать учет приборов в сервисном центре на 1С: Справочник или Документ?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При разработке конфигураций для сервисных центров, ремонтных мастерских или отделов технического обслуживания (ТОИР) разработчики часто сталкиваются с фундаментальной дилеммой: в каком объекте метаданных хранить информацию о ремонтируемых приборах? На первый взгляд может показаться заманчивым создать единый документ "Прибор", который будет содержать всю информацию о поступлении, процессе ремонта и выдаче. Однако на практике такой подход быстро приводит к архитектурному тупику.

В этой статье мы подробно разберем, почему противопоставление справочника и документа является ложным, как правильно распределить функции между объектами метаданных 1С и построить надежную структуру учета, способную выдерживать масштабирование и повторные обращения клиентов.

В чем опасность логики «Прибор как документ»?

Рассмотрим ситуацию, когда разработчик решает хранить ремонтируемый прибор в виде документа (например, Документ.Прибор). При этом проведение документа означает выдачу прибора клиенту, а дата документа — дату его приема. На первый взгляд, это кажется логичным: у прибора есть жизненный цикл, и после выдачи он нам больше "не интересен".

Проанализируем последствия такого решения:

  1. Потеря истории при повторных обращениях. Если клиент принесет тот же самый ноутбук или телефон через полгода с новой проблемой или по гарантии, система воспримет его как абсолютно новый объект. Мы потеряем сквозную историю обслуживания конкретного физического экземпляра. Выяснить, кто из мастеров выполнял предыдущий ремонт и какие детали были установлены, будет крайне сложно.
  2. Нарушение транзакционной логики 1С. Использование статуса проведения документа для обозначения физической выдачи устройства — это серьезный архитектурный антипаттерн. В платформе 1С проведение документа предназначено исключительно для фиксации изменений в регистрах (финансовых, складских, взаиморасчетов). Если вам потребуется временно распроводить или перепроводить документы задним числом, логика статусов сломается.
  3. Сложности с анализом рентабельности и затрат. Без сквозного аналитического разреза в виде элемента справочника невозможно корректно списать запчасти на конкретный прибор и оценить себестоимость конкретного ремонта.

Классическая трехзвенная архитектура учета в 1С

В профессиональной разработке и тиражных решениях 1С (например, в решениях класса ТОИР или ERP) эта задача решается четким разделением сущностей на три уровня: Справочники, Документы и Регистры.

Выясним назначение каждого элемента в этой цепочке:

1. Справочники (Физические сущности)

Для хранения информации о самих приборах используются справочники. При этом структуру рекомендуется делать двух- или трехступенчатой:

  1. Справочник Номенклатура — хранит общие сведения о моделях техники (например, "Смартфон Samsung Galaxy S23", "Материнская плата Asus Rog"). Это общая карточка без привязки к конкретному экземпляру.
  2. Справочник СерииНоменклатуры (или подчиненный справочник СерийныеНомера) — хранит информацию о конкретном физическом приборе с его уникальным заводским серийным номером (S/N).
  3. Справочник ОбслуживаемыеОбъекты (или "Принимаемая техника") — это связующий элемент. Он указывает, какой конкретно прибор (серия номенклатуры) принадлежит какому контрагенту (клиенту). Именно к этому элементу будет привязываться вся история ремонтов.

2. Документы (Хозяйственные операции)

Документы не должны заменять собой приборы. Документы фиксируют события, происходящие с приборами во времени. Разберем стандартную цепочку документов:

  1. ПриемкаВРемонт (или "Заказ-наряд") — фиксирует факт поступления устройства от клиента, его комплектность, заявленные неисправности и предварительную стоимость.
  2. ВыполнениеРемонта — отражает работу мастера, диагностику, а также списывает со склада использованные запчасти и расходные материалы.
  3. ВыдачаИзРемонта — фиксирует передачу исправного прибора клиенту, подписание акта выполненных работ и оплату.

3. Регистры (Состояние и аналитика)

Для оперативного получения информации о том, где сейчас находится прибор и что с ним происходит, используются регистры. Вся история изменений записывается именно туда при проведении документов.

Проектирование регистров для отслеживания жизненного цикла

Вместо того чтобы хранить статус ремонта прямо в реквизитах прибора или документа приемки, мы создадим периодический регистр сведений СостоянияПриборов.

Структура регистра сведений:

Рассмотрим пример кода для записи нового состояния прибора при проведении документа:


Процедура УстановитьСостояниеПрибора(ДокументСсылка, Прибор, НовоеСостояние) Экспорт
    МенеджерЗаписи = РегистрыСведений.СостоянияПриборов.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ДокументСсылка.Дата;
    МенеджерЗаписи.Прибор = Прибор;
    МенеджерЗаписи.Состояние = НовоеСостояние;
    МенеджерЗаписи.ДокументДвижения = ДокументСсылка;
    МенеджерЗаписи.Записать(Истина);
КонецПроцедуры

Использование регистра позволяет нам в любой момент времени легко получить текущее состояние любого прибора с помощью метода среза последних:


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

Как организовать уникальные идентификаторы и штрихкодирование?

При приемке прибора в сервисный центр ему часто присваивается внутренний уникальный номер (например, номер обращения + порядковый номер прибора в ремонте), который распечатывается на наклейке со штрихкодом. Где правильно его хранить?

Важно разделять две сущности:

  1. Заводской серийный номер (S/N) — это неизменяемая характеристика железки, она пишется в карточку справочника СерииНоменклатуры один раз на всю жизнь прибора.
  2. Внутренний идентификатор обращения (Штрихкод наклейки) — это транзитная сущность. Прибор может прийти в ремонт множество раз за свою жизнь, и каждый раз наклейка со штрихкодом будет новой. С точки зрения архитектуры, привязывать этот временный штрихкод напрямую к карточке прибора в справочнике — ошибка.

Правильным решением будет создание регистра сведений ШтрихкодыПриборовВРемонте. Измерениями регистра будут выступать ДокументПриемки (Заказ-наряд) и Прибор, а ресурсом — строковый Штрихкод (уникальный идентификатор текущего обращения). При сканировании штрихкода в процессе ремонта система мгновенно определит, в рамках какого именно заказ-наряда этот прибор сейчас находится у мастера.

Группировка приборов для выполнения однотипных работ

На практике часто возникает необходимость сгруппировать разные приборы из разных заявок для выполнения однотипных задач (например, мастер берет в работу сразу пять ноутбуков разных клиентов на замену термопасты).

Поскольку наши приборы — это элементы справочника, мы можем легко организовать их группировку с помощью специального документа — ГрупповойРемонт (или "Маршрутный лист"). В табличную часть этого документа подбираются ссылки на конкретные приборы из справочника. При проведении этот документ делает движения по регистру состояний, переводя выбранные приборы в статус "В групповой работе", а по завершении — распределяет общую трудоемкость и затраченные мастером материалы на себестоимость ремонта каждого отдельного прибора.

Таким образом, использование классической структуры "Справочник (для сущности) + Документ (для операции) + Регистр (для состояния)" гарантирует стабильность базы данных, быстродействие системы и неограниченные аналитические возможности для построения отчетов любой сложности.

← На главную