# ТЗ на доработку: учёт номерной тары **Дата:** 07.10.2026 **Конфигурация:** ВесоваяАК (`ves2020`) **Версия конфигурации (на момент анализа):** 0.0.3.21 **Область:** учёт номерной тары при отгрузке (Расходная накладная) **Тип работ:** новая функциональность (метаданные + форма/проведение документа) Документ сформирован по постановке заказчика с уточнением имён объектов по текущим исходникам/ИБ. Правки в конфигурацию этим документом не вносятся. --- ## 1. Цель и критерии успеха ### 1.1. Цель Обеспечить учёт индивидуальной (номерной) тары при отгрузке по Расходной накладной: - вести справочник экземпляров номерной тары в разрезе типа фасовки; - при признаке «номерная тара» у типа фасовки — обязательно фиксировать конкретные экземпляры в документе; - отражать расход в регистре накопления остатков; - не регистрировать изменения ТЧ номерной тары на выгрузку в БЭКЗ (на текущем этапе). ### 1.2. Критерии приёмки | № | Критерий | Как проверить | |---|----------|---------------| | К1 | У `экзТипыФасовки` есть реквизит «Номерная тара» (Булево); просмотр всем, изменение — только Полные права | Роли / форма элемента | | К2 | Создан справочник номерной тары с владельцем `экзТипыФасовки`, длина наименования 25; есть загрузка из Excel по выбранному владельцу | Метаданные + сценарий загрузки | | К3 | Создан РН остатков «Учет номерной тары» с заданным составом; регистратор — `РасходнаяНакладная` | Метаданные регистра | | К4 | В РНК при заполненном `ТипФасовки` с признаком «Номерная тара» отображается ТЧ, число строк = `КоличествоМест`, заполнение обязательно, выбор ограничен владельцем | UI + проведение с ошибкой при пустых/неполных строках | | К5 | При проведении формируются движения расхода (Количество = 1 на строку); при отмене проведения / пометке на удаление движения снимаются без дублей при повторном проведении | Остатки регистра до/после | | К6 | Изменение только ТЧ «Учет номерной тары» не приводит к регистрации документа в плане обмена `агк_ОбменВесоваяБЭКЗ` | Узлы обмена / регистрация изменений | | К7 | Константа/настройка «Использовать остатки номерной тары» создана; в РНК пока выбор всех элементов по владельцу (без отбора по остаткам) | Константа + форма выбора | | К8 | П.6 (документ «Приход номерной тары», отчёт о движении) — вне срока до 07.10.2026, допускается отдельной задачей | Согласование сроков | --- ## 2. Фактический контекст конфигурации (as-is) | Объект в постановке | Факт в конфигурации | |---------------------|---------------------| | Справочник «Тип фасовки» | `Справочник.экзТипыФасовки` (синоним: «Типы фасовки») | | Реквизит «Тип фасовки» в РНК | `Документ.РасходнаяНакладная.ТипФасовки` → `Справочник.экзТипыФасовки` | | «Количество мест» | `КоличествоМест` (вкладка «Данные для печати» → «Дополнительные», страница `ГруппаДанныеДляПечатиСтраницаДополнительные`) | | Организация / Подразделение / Весовая / Склад | `Организация`, `ПодразделениеОрганизации`, `Весовая`, `Склад` | | Пункт разгрузки / Получатель | `ПунктРазгрузки` («Пункт разгрузки (Контрагент)»), `Получатель` («Контрагент (Получатель)») | | Вкладка «Данные для печати» | страница формы `ГруппаДанныеДляПечати` | | Полные права | роль `ПолныеПрава` | | Весовщики | роль `Весовая_Весовщик` (и при необходимости `Весовая_ВесовщикRLS`) | | Обмен с БЭКЗ | план обмена `агк_ОбменВесоваяБЭКЗ` (в составе есть `Document.РасходнаяНакладная`) | | Существующий справочник `экзТара` | **не** использовать: это «Тара» (номенклатура/вес), уже связан реквизитом `экзТипыФасовки.Тара`. Номерная тара — отдельный объект | **Предлагаемые имена новых объектов** (префикс `экз` — по домену фасовки/тары; `PREFIX` в `.dev.env` пуст): | Назначение | Имя метаданных | Синоним | |------------|----------------|---------| | Признак в типе фасовки | `экзТипыФасовки.НомернаяТара` | Номерная тара | | Справочник экземпляров | `Справочник.экзНомернаяТара` | Номерная тара | | Роль учёта | `Роль.экзУчетНомернойТары` | Учет номерной тары | | Регистр накопления | `РегистрНакопления.экзУчетНомернойТары` | Учет номерной тары | | ТЧ документа | `РасходнаяНакладная.УчетНомернойТары` | Учет номерной тары | | Настройка | `Константа.экзИспользоватьОстаткиНомернойТары` | Использовать остатки номерной тары | | Документ прихода (этап 2) | `Документ.экзПриходНомернойТары` | Приход номерной тары | Имена допускается скорректировать при реализации при согласовании, смысл и связи — по таблицам ниже. --- ## 3. Объём работ по этапам ### Этап A — к 07.10.2026 (обязательный) Пункты постановки **1–5**: признак в типе фасовки, справочник номерной тары (+ загрузка Excel), регистр, доработка РНК (форма, проверки, движения), настройка «Использовать остатки…» (заготовка под будущее). ### Этап B — позже (не до 07.10.2026) Пункт постановки **6**: документ «Приход номерной тары», отчёт о движении номерной тары, включение отбора выбора в РНК по остаткам при включённой настройке. --- ## 4. Требования к метаданным и правам ### 4.1. Справочник `экзТипыФасовки` (Типы фасовки) Добавить реквизит: | Свойство | Значение | |----------|----------| | Имя | `НомернаяТара` | | Синоним | Номерная тара | | Тип | Булево | | По умолчанию | Ложь | | Размещение на форме | форма элемента `ФормаЭлементаУправляемая` | **Права на реквизит:** - просмотр — всем ролям, имеющим доступ к справочнику; - изменение — только роль `ПолныеПрава` (остальным — только просмотр значения). > Не путать с существующим реквизитом `Тара` (`СправочникСсылка.экзТара`). ### 4.2. Справочник `экзНомернаяТара` (Номерная тара) | Свойство | Значение | |----------|----------| | Владелец | `Справочник.экзТипыФасовки` | | Использование подчинения | Элементам | | Наименование | строка, длина **25** | | Код | по принятому в проекте шаблону справочников (допустимо короткий код / автонумерация) | | Иерархия | нет | **Права:** | Действие | Кто | |----------|-----| | Просмотр / чтение | всем (как минимум ролям контура весовой с доступом к НСИ) | | Добавление / изменение / пометка удаления | новая роль `экзУчетНомернойТары` («Учет номерной тары») + `ПолныеПрава` | Роль включить в нужные профили групп доступа отдельно (вне кода — администрирование). #### 4.2.1. Загрузка из Excel Нужна обработка (отдельная обработка или команда формы списка справочника) загрузки элементов **по выбранному владельцу** (`Тип фасовки`): - пользователь выбирает тип фасовки (владелец) и файл Excel; - в файле — колонка с наименованием номерной тары (длина ≤ 25); при необходимости — доп. колонки по согласованию на реализации; - создаются/обновляются элементы с указанным владельцем; - дубли по наименованию в рамках владельца: не создавать повторно (или обновлять существующий — зафиксировать в реализации один вариант и описать в справке); - ошибки строк (пустое имя, длина > 25) — в протокол загрузки, без «тихого» пропуска без отчёта. ### 4.3. Регистр накопления `экзУчетНомернойТары` | Свойство | Значение | |----------|----------| | Вид | Остатки | | Синоним | Учет номерной тары | **Измерения:** | Имя | Тип | |-----|-----| | Организация | `СправочникСсылка.Организации` | | Подразделение | `СправочникСсылка.ПодразделенияОрганизаций` (из шапки РНК — `ПодразделениеОрганизации`) | | Весовая | `СправочникСсылка.Весовые` | | Склад | `СправочникСсылка.Склады` | | Контрагент | `СправочникСсылка.Контрагенты` | | ТипФасовки | `СправочникСсылка.экзТипыФасовки` | | НомернаяТара | `СправочникСсылка.экзНомернаяТара` | **Ресурс:** `Количество` (Число; для движений РНК — всегда 1 на строку ТЧ). **Регистраторы (этап A):** - `Документ.РасходнаяНакладная` — вид движения **Расход**. **Регистраторы (этап B):** - `Документ.экзПриходНомернойТары` — вид движения **Приход** (позже). Контроль уникальности измерений при проектировании: одна комбинация измерений — один остаток; повтор одной и той же номерной тары в одной РНК не допускается (проверка при записи/проведении). ### 4.4. Настройка `экзИспользоватьОстаткиНомернойТары` | Свойство | Значение | |----------|----------| | Тип | Булево | | Синоним | Использовать остатки номерной тары | | Значение по умолчанию | Ложь | | Размещение | форма констант / настройки учёта (по аналогии с другими `Использовать…` в конфигурации) | **Поведение на этапе A:** константа создаётся и сохраняется; в форме выбора номерной тары в РНК **не** отбираем по остаткам — показываем все элементы по владельцу `ТипФасовки`. **Поведение на этапе B (после документа прихода):** при `Истина` в выборе ТЧ РНК — только тара с положительным остатком по релевантным измерениям (уточнить разрез отбора в задаче этапа B). --- ## 5. Доработка документа `РасходнаяНакладная` ### 5.1. Табличная часть `УчетНомернойТары` | Колонка | Тип | Обязательность | |---------|-----|----------------| | НомернаяТара | `СправочникСсылка.экзНомернаяТара` | да, когда ТЧ обязательна по п. 5.3 | Дополнительные колонки на этапе A не требуются. ### 5.2. Форма документа — видимость вкладки На форме документа (`ФормаДокумента`): 1. Добавить страницу (вкладку) **«Учет номерной тары»** справа от «Данные для печати» (`ГруппаДанныеДляПечати`) в том же наборе страниц, где она расположена для основного сценария РНК. 2. По умолчанию в **новом** документе вкладка/ТЧ **скрыты**. 3. При **открытии** существующего документа: если ТЧ `УчетНомернойТары` не пустая — показать вкладку. 4. Динамически показывать вкладку при выполнении условий п. 5.3 (изменение `ТипФасовки` / признака / `КоличествоМест`). ### 5.3. Условие обязательности и синхронизация строк **Условие «режим номерной тары»:** - `ТипФасовки` заполнен; - у выбранного типа фасовки `НомернаяТара = Истина`. Тогда: 1. Вкладка «Учет номерной тары» **видима**. 2. Число строк ТЧ должно быть равно `КоличествоМест` (целое; при `КоличествоМест ≤ 0` — режим не считать корректным: запретить проведение с понятным сообщением либо не включать обязательность — зафиксировать на реализации: **рекомендация** — при режиме номерной тары `КоличествоМест` должно быть ≥ 1). 3. При изменении `КоличествоМест` — подогнать число строк ТЧ (добавить пустые / удалить лишние с конца; не затирать уже выбранные значения без необходимости). 4. Заполнение всех строк ТЧ **обязательно** для записи/проведения (проверка заполнения `НомернаяТара` в каждой строке). 5. Выбор `НомернаяТара` — **только** элементы с владельцем = `Объект.ТипФасовки` (параметр выбора / отбор). 6. Дубли одной и той же ссылки номерной тары в ТЧ одного документа — запретить. Если условие режима **не** выполняется: - вкладку скрывать (если ТЧ пустая); - если пользователь сменил тип фасовки так, что признак снят, а ТЧ была заполнена — очистить ТЧ с предупреждением или запросить подтверждение (предпочтительно: предупреждение + очистка при смене владельца/признака). ### 5.4. Проведение — движения по регистру `экзУчетНомернойТары` При проведении РНК в режиме номерной тары (п. 5.3) для **каждой** строки ТЧ формировать движение **Расход**: | Поле регистра | Источник | |---------------|----------| | Организация | шапка `Организация` | | Подразделение | шапка `ПодразделениеОрганизации` | | Весовая | шапка `Весовая` | | Склад | шапка `Склад` | | Контрагент | если заполнен `ПунктРазгрузки` — он; иначе `Получатель` | | ТипФасовки | шапка `ТипФасовки` | | НомернаяТара | строка ТЧ `НомернаяТара` | | Количество | **1** | Если режим номерной тары выключен — движений по этому регистру не писать (и очищать набор записей регистратора). ### 5.5. Отмена проведения, пометка удаления, перепроведение - При отмене проведения и при пометке на удаление — движения по `экзУчетНомернойТары` должны быть сняты (стандартный механизм набора записей регистратора / `Движения.Записывать`). - Запись движений всегда через набор записей документа-регистратора с предварительной очисткой, чтобы повторное проведение или правка ТЧ **не дублировали** остатки. - Контроль отрицательных остатков на этапе A **не обязателен** (остатки появятся после документа прихода); при необходимости — мягкое предупреждение, не блок (уточняется при внедрении). ### 5.6. Обмен с БЭКЗ **Требование:** данные по номерной таре **не выгружаем** в БЭКЗ (пока). Следствия для этапа A: 1. Новые объекты (`экзНомернаяТара`, регистр, ТЧ) **не** включать в состав выгрузки `агк_ОбменВесоваяБЭКЗ` / правила обмена как обязательную выгрузку. 2. Редактирование **только** ТЧ `УчетНомернойТары` (и связанных служебных изменений, не влияющих на состав обмена) **не должно** регистрировать `РасходнаяНакладная` к обмену в `агк_ОбменВесоваяБЭКЗ`. Техническая реализация (на выбор при кодировании, с фиксацией в коде): - исключение реквизитов/ТЧ из правил регистрации изменений; и/или - при записи, если изменены только «игнорируемые» данные номерной тары — `ОбменДанными.Получатели.АвтоЗаполнение = Ложь` / снятие регистрации по узлам плана; и/или - доработка правил регистрации плана обмена. Критерий приёмки К6 обязателен. --- ## 6. Этап B (отложено): приход и отчёт Описать отдельно; краткий каркас: ### 6.1. Документ `экзПриходНомернойТары` - Состав реквизитов/ТЧ **зеркален** измерениям регистра + ресурс Количество (или ТЧ с номерной тарой по аналогии с РНК). - Регистратор регистра `экзУчетНомернойТары`, движение **Приход**. - Права: как у весовщиков на РНК / Приход по весовой (`Весовая_Весовщик` и связанные роли). ### 6.2. Отчёт «Движение номерной тары» - Анализ прихода/расхода/остатков по регистру `экзУчетНомернойТары`. - Детали — в отдельной задаче. ### 6.3. Включение отбора по остаткам в РНК - При `экзИспользоватьОстаткиНомернойТары = Истина` — в выборе ТЧ РНК показывать только тару с остатком. --- ## 7. Сценарии проверки (этап A) 1. Тип фасовки без признака → в новой РНК вкладки номерной тары нет; проведение без ТЧ ОК. 2. Тип фасовки с признаком, `КоличествоМест = 3` → вкладка видна, 3 строки, без заполнения проведение запрещено. 3. Выбор номерной тары другого владельца невозможен. 4. Заполнение 3 разных экземпляров → проведение создаёт 3 движения расхода с Количество = 1 и корректными измерениями (контрагент: приоритет `ПунктРазгрузки`). 5. Отмена проведения → остатки/обороты регистратора обнулены; повторное проведение не удваивает. 6. Изменение только ТЧ номерной тары у уже выгружаемого/регистрируемого контура → **нет** новой регистрации в `агк_ОбменВесоваяБЭКЗ` (при прочих неизменных полях обмена). 7. Загрузка Excel по выбранному типу фасовки создаёт элементы с владельцем и длиной имени ≤ 25. 8. Роль без `ПолныеПрава` не меняет признак `НомернаяТара` у типа фасовки; роль `экзУчетНомернойТары` может создавать элементы справочника номерной тары. --- ## 8. Вне объёма этапа A - Документ «Приход номерной тары». - Отчёт о движении номерной тары. - Отбор выбора в РНК строго по остаткам. - Выгрузка номерной тары / движений в БЭКЗ. - Мобильный клиент / отдельные РМ (если появятся — отдельная задача). --- ## 9. Открытые решения (зафиксировать при реализации, если не оговорено иначе) | Тема | Рекомендация по умолчанию | |------|---------------------------| | Имена метаданных | префикс `экз…` по таблице §2 | | `КоличествоМест = 0` при включённом признаке | запрет проведения | | Дубли в Excel | пропуск с записью в протокол | | Отрицательные остатки на этапе A | не блокировать | | Место команды загрузки Excel | форма списка `экзНомернаяТара` | --- ## 10. Порядок реализации (рекомендуемый) 1. Реквизит `НомернаяТара` в `экзТипыФасовки` + права. 2. Справочник `экзНомернаяТара` + роль + загрузка Excel. 3. Регистр `экзУчетНомернойТары` + константа. 4. ТЧ и форма РНК (видимость, число строк, отбор выбора, проверки). 5. Движения при проведении / отмене. 6. Исключение влияния ТЧ на регистрацию БЭКЗ. 7. Регрессионные сценарии §7. --- *Источники уточнения имён: MCP `user-1c` (конфигурация ВесоваяАК 0.0.3.21), исходники `ves2020` (`экзТипыФасовки`, `РасходнаяНакладная`, `агк_ОбменВесоваяБЭКЗ`, роли `ПолныеПрава` / `Весовая_Весовщик`).*