Files
cursor-1c/анализ ТЗ.md

151 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Резюме критики ТЗ: учёт номерной тары
**Дата:** 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`.*