@startuml
skinparam shadowing false
skinparam classFontSize 11
skinparam dpi 300
skinparam monochrome true
package "Справочники" {
class Номенклатура {
+ Наименование
+ ВидНоменклатуры
+ Артикул
}
class ПричиныБрака {
+ Наименование
+ Описание
}
class Подразделения {
+ Наименование
+ ЭтоГруппа
}
class Склады {
+ Наименование
+ ТипСклада
}
class Сотрудники {
+ ФИО
+ Должность
}
class ВидыНоменклатуры {
+ ГотоваяПродукция
+ Полуфабрикат
+ Комплектующие
+ СырьеИМатериалы
+ Брак
}
}
package "Документы" {
class ПоступлениеПродукции {
+ Дата
+ Номер
+ Подразделение
+ Склад
+ Сотрудник
--
+ Продукция : ТабличнаяЧасть
}
class ВыявлениеБрака {
+ Дата
+ Номер
+ Подразделение
+ Склад
+ Сотрудник
--
+ Брак : ТабличнаяЧасть
+ ПечатнаяФорма()
+ QRКод : Картинка
}
}
package "Регистры" {
class БракПродукции {
+ Период
+ Подразделение
+ Склад
+ Номенклатура
+ ПричинаБрака
+ Количество
}
}
package "Обработки" {
class ЗагрузкаИзExcel {
+ ЗагрузитьДанные()
}
class ГенерацияQRКода {
+ СгенерироватьQR()
+ СохранитьВФайл()
}
}
' ==================== Связи ====================
Номенклатура "1" --> "1" ВидыНоменклатуры : имеет
ВыявлениеБрака "1" *-- "0..*" Номенклатура : "Брак.Номенклатура"
ВыявлениеБрака "1" *-- "0..*" ПричиныБрака : "Брак.ПричинаБрака"
ПоступлениеПродукции "1" --> "0..*" Номенклатура : "Продукция.Номенклатура"
БракПродукции --> Подразделения
БракПродукции --> Склады
БракПродукции --> Номенклатура
БракПродукции --> ПричиныБрака
' Движения
ВыявлениеБрака ..> БракПродукции : "формирует движения"
ПоступлениеПродукции ..> БракПродукции : "может формировать"
' Обработки
ЗагрузкаИзExcel --> Номенклатура : "загружает"
ЗагрузкаИзExcel --> ПричиныБрака : "загружает"
ГенерацияQRКода --> ВыявлениеБрака : "генерирует для"
note right of ВыявлениеБрака
<b>Основной документ</b>
Печать + QR-код
end note
note right of ЗагрузкаИзExcel
Импорт из Excel
с поддержкой видов номенклатуры
end note
@enduml