diff --git a/анализ ТЗ.md b/анализ ТЗ.md new file mode 100644 index 0000000..e4f1b83 --- /dev/null +++ b/анализ ТЗ.md @@ -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`.*