Добавить анализ ТЗ.md

This commit is contained in:
2026-10-07 13:00:01 +00:00
parent ff571a92f4
commit d7942c94a9
+150
View File
@@ -0,0 +1,150 @@
# Резюме критики ТЗ: учёт номерной тары
**Дата:** 07.10.2026
**Исходный документ:** `work/ТЗ-учет-номерной-тары.md`
**Конфигурация:** ВесоваяАК (`ves2020`), версия на момент анализа 0.0.3.21
ТЗ в целом читаемое и привязано к реальным именам (`экзТипыФасовки`, `КоличествоМест`, `агк_ОбменВесоваяБЭКЗ`). Главная проблема — **этап A смешивает фиксацию экземпляров в отгрузке и полноценный учёт остатков**, при этом ряд решений оставлен «на реализацию», хотя уже влияет на данные и приёмку.
Важно: в исходниках `ves2020` объекты и логика уже есть (ТЧ, регистр, движения, проверка обмена), а в ИБ через MCP регистр на момент разбора не находился — постановка и факт могут расходиться. ТЗ стоит либо перевести в статус «as-built / сверка», либо явно пометить, что ещё не внедрено.
---
## Критично (менять в постановке)
### 1. Регистр остатков без прихода
Сейчас: РН остатков + только **Расход** по РНК, приход — этап B, минусы не блокировать.
Это даёт хронические отрицательные остатки. Когда на B включат константу и отбор «только с остатком», либо всё «пусто», либо всё «в минусе» — нужна миграция/ввод остатков.
**Доработка ТЗ (выбрать одно и зафиксировать):**
| Вариант | Суть |
|--------|------|
| **A′ (рекомендую)** | На этапе A: справочник + ТЧ в РНК + права + изоляция БЭКЗ. Регистр и движения — только вместе с приходом на B |
| **A″** | Регистр создать, но **не писать движения** до B |
| **A‴** | Движения писать, но явно: «технический минус допустим» + обязательный сценарий выравнивания **до** включения константы |
Критерий К5 в текущем виде закрепляет худший вариант без оговорки про B.
### 2. Измерение `Контрагент` в ключе остатка
В РНК есть `Контрагент` (владелец зерна), `Покупатель`, `Получатель`, `ПунктРазгрузки`. ТЗ берёт «ПунктРазгрузки, иначе Получатель» — без бизнес-смысла.
Остаток «на складе/весовой» и «у контрагента» — разные модели. В одном ключе с `Склад`/`Весовая` это конфликтует с будущим приходом.
**Зафиксировать в §4.3 / §9:**
- что учитываем: тара **на складе отгрузки** или **у грузополучателя**;
- формулу контрагента и поведение, если оба пусты (запрет проведения / пустое измерение);
- для каких `ВидОперации` РНК режим номерной тары вообще действует.
Пока смысл неясен — **не включать `Контрагент` в измерения** (оставить реквизитом движения или отложить до B).
### 3. Избыточность `ТипФасовки` в измерениях
Экземпляр уже подчинён типу фасовки. Дубль в ключе остатка → риск рассинхрона при смене владельца у элемента.
**Предложение:** измерение убрать; тип брать из владельца `НомернаяТара` или только в отчётах.
---
## Высокий приоритет (дыры приёмки)
### 4. Обмен БЭКЗ (К6)
«Правка только ТЧ не регистрирует» — узко и хрупко:
- не сказано про другие планы (`ПоВесовым`, УФ и т.д.);
- нет приёмки «на узле обмена нет новой регистрации»;
- не описано, что будет, если документ всё же уйдёт в выгрузку (ТЧ в правилах нет).
**Дописать в §5.6:**
1. только `агк_ОбменВесоваяБЭКЗ` или все планы РНК;
2. механизм: правила регистрации, не `АвтоЗаполнение = Ложь` «на удачу»;
3. сценарий: изменить только ТЧ → проверить регистрацию на тестовом узле;
4. новые объекты **не** включать в состав плана.
### 5. Права — матрица неполная
Есть признак (только `ПолныеПрава`) и роль справочника. Нет:
- кто заполняет ТЧ в РНК (`Весовая_Весовщик`?);
- права на регистр (чтение/изменение);
- как ограничить изменение булева реквизита (права на реквизит vs `ТолькоПросмотр` на форме — в 1С это разные вещи);
- RLS по организации/весовой для нового регистра.
**Добавить таблицу «объект × роль × действие»** до реализации прав.
### 6. `КоличествоМест` ↔ ТЧ
Число — не обязательно целое; места могут пересчитываться из веса; синхронизация только на форме не ловит запись без UI.
**Зафиксировать:**
- при режиме номерной тары `КоличествоМест` — целое ≥ 1 (иначе запрет проведения) — убрать «на реализации»;
- синхронизация/проверки в модуле объекта, не только в форме;
- при уменьшении мест — удалять **незаполненные** с конца, заполненные — с подтверждением;
- при смене `ТипФасовки` / снятии признака — очистка ТЧ с вопросом (один выбранный UX).
### 7. Константа без поведения
Создавать `экзИспользоватьОстаткиНомернойТары` на A без эффекта — путаница для админов.
**Либо не создавать до B, либо не выводить в интерфейс** и явно в К7: «заготовка, UI не меняет».
---
## Средний приоритет
| Тема | Что дописать |
|------|----------------|
| Двойной расход одной тары в разных РНК | На A: запрет / предупреждение / ничего — сейчас только дубль внутри одного документа |
| Уникальность в справочнике | Уникальность наименования в пределах владельца + индекс/контроль при Excel |
| Excel | xls/xlsx, лист, строка заголовка, кодировка, «создать vs обновить», лимит строк, права на обработку |
| Копирование / ввод на основании РНК | копировать ТЧ или очищать |
| Печать | номерная тара в печатных формах — да/нет (вне A — явно) |
| Имена | синоним регистра = синоним справочника → путаница в отчётах; развести |
| К4 | «запись/проведение» — проверки только при **проведении** или ещё при записи |
| Срок 07.10.2026 = дата документа | обновить статус этапа A (done / in progress / postponed) |
---
## Предлагаемая правка структуры ТЗ
1. **§1.2** — разделить критерии: «фиксация в документе» vs «остатки»; К5 либо смягчить, либо перенести на B.
2. **§3** — этап A′ без движений по регистру (или A‴ с явной политикой минусов).
3. **§4.3** — таблица «модель остатков» + решение по `Контрагент`/`ТипФасовки`; ресурс `Количество` — целое, точность 0.
4. **§4.4** — константу вынести из Must этапа A.
5. **§5.3** — закрыть открытые ветки из §9 (места = 0, смена типа, дробь).
6. **§5.6** — измеримый тест К6 + другие планы обмена.
7. **§7** — добавить: двойной расход; дробные места; смена типа с заполненной ТЧ; права весовщика на ТЧ; константа не влияет на выбор.
8. **§9** — превратить «рекомендации» в **принятые решения** или вопросы заказчику.
9. **Шапка** — статус относительно кода в `ves2020` / версии ИБ.
---
## Минимальный Must для этапа A (если цель — «в отгрузке указать номера»)
1. Признак у типа фасовки.
2. Справочник + Excel.
3. ТЧ в РНК: видимость, N = места, без дублей, отбор по владельцу, проверки при проведении.
4. Матрица прав.
5. Изоляция от БЭКЗ с приёмкой на узле.
Регистр, константа, отчёт, отбор по остаткам — **один пакет на B** с согласованной аналитикой.
---
## Вопросы заказчику (без ответа — не закрывать регистр)
1. Тара после отгрузки числится **на складе** или **у контрагента**? Нужен ли возврат?
2. Можно ли одну номерную тару отгрузить дважды, пока нет прихода?
3. Режим нужен для всех видов операций РНК или только для части?
4. Достаточно ли на A записи номеров в документе **без** регистра остатков?
---
*Основано на критическом разборе ТЗ от 07.10.2026; сверка имён — MCP `user-1c` / исходники `ves2020`.*