ZuloOne
English
Sign in
Menu

🏷️ Addressed storage

Updated

Every storage cell carries a readable address — 3-Б-12 — and an item points at a cell, not at a line of text. The address is zone code, rack letter, cell number, joined by hyphens, and the product prints it wherever a cell is shown: on the item card, in lookups, in warehouse documents, in reports. An item moved to another rack changes its place in every open document at once.

← Business wiki

How the process works#

Store ──► StoreZone (address code 1…6) ──► StoreCell (rack letter Б, cell number 12)
                                                 │
                                        Address = 3-Б-12, written on save
                                                 │
                                           Item.StorageCell ──► shown as 3-Б-12

The address is not typed. StoreCell builds it on every save from three values: the address code of its zone, the rack letter of the cell, and the cell number. StoreCell is displayed as {Address}, so the string reaches every screen without any screen being changed.

The item points at the cell with field StorageCell, captioned Default storage place. There is one default place per item, as in the warehouse itself: the place is a property of the goods, not of a document line, and nothing copies it at the moment a line is typed.

The word default is the honest one. The field says where the item belongs, and a receipt puts it there; where it actually lies is register Stock, and a transfer or a count may well put it elsewhere. Tab Storage places on the item card lists the other cells the item is planned to live in — ItemStoragePlace, one row per cell with a note. That tab is a plan as well, typed by hand; it does not steer receipts, picks or sourcing. The quantities by cell are a report: Stock by item and cell.

The cell is also the cut of the stock: register Stock keeps the quantity by item and by cell, and registers ReservedStock and WorkInProgress carry the same cell. So the place of an item is not a label — it is the address where that quantity is counted. Valuation is the exception: register InventoryValue keeps money by item only, because a cost belongs to goods and not to a shelf.

Settings#

Address code of a zone#

Where: model Inventory → dictionary StoreZone → field Address code. UI path: Ribbon → Inventory → Dictionaries → Store zones.

Value Meaning What changes
1…6, up to three characters The leading part of the address of every cell in this zone A cell in this zone reads 3-Б-12; the same letter and number in zone 4 reads 4-Б-12 and is a different place
(empty) The zone ID is used instead Zones created before addressing keep working: their cells get an address built from the sequence number

Default: empty. Leave it alone and nothing breaks — the address is still built, only its first part is the zone number from StoreZoneSeq (1000 and up) instead of a short code.

Example. A client who ran six warehouses in 1C gets one Store with six zones coded 1 to 6. The 1C storage place 3Б12 then lands in zone 3, rack Б, cell 12 of that one store.

Rack letter of a cell#

Where: model Inventory → dictionary StoreCell → field Rack letter. UI path: Ribbon → Inventory → Dictionaries → Storage cells.

Value Meaning What changes
One Cyrillic letter А–Я The rack this cell belongs to Address becomes <zone code>-<letter>-<cell number>; Rack is derived from the letter (А = 1 … Я = 32)
(empty) The cell is not addressed Address falls back to Name. The cell is still usable; it simply shows the name it always showed

Default: empty. Cells created before addressing are not rewritten and are not hidden anywhere.

Boundary. Two cells of the same store cannot carry the same address. The save is refused with a message naming the address, not with an internal error.

Capacity of a cell#

Where: model Inventory → dictionary StoreCell → field Capacity (max qty).

Value Meaning What changes
A number above zero How much the cell holds Free room is the capacity minus the stock on the cell. A cell without room is not offered when a realization looks for another picking cell
(empty) or zero The capacity is not limited The cell is always offered. This is how most cells live, and it is not a reason to hide them

Example. A picking cell with capacity 20 holding 14 has 6 free. A realization of 10 is not offered that cell; a realization of 5 is.

Import from 1C#

The 1C field МестоХранения is a free string of up to 40 characters. On import the string is parsed into an address and resolved into a cell: Item.StorageCell gets the reference, while the original text stays in Item.StoragePlace.

What arrives from 1C What the item gets Why
3-Б-12 Cell 3-Б-12 Canonical form
3Б12, 3 б 12, 3б12 Cell 3-Б-12 Separators and case are ignored
3B12 with Latin B Cell 3-В-12 Latin lookalikes A B C E H K M O P T X are read as Cyrillic
3-Б-12 with no zone coded 3 Nothing; the text stays A cell is created only inside a zone that exists; the import does not invent warehouse structure
Склад, верхняя полка Nothing; the text stays Not an address. The item is not rejected

A cell named by an address that does not exist yet inside a zone that does is created by the import. Re-importing the same item does not create a second cell.

Seeing the place on document lines#

A line of a sales order, a purchase order or a warehouse task stores the item, not its place. The place is shown by a related column, which is a grid feature and not a layout change: open Column setup on the grid, section Related fields (via reference), and walk Item → Default storage place → Address. The column then prints 3-Б-12 on every row.

The walk has to end on Address, not on Default storage place. The place is a reference, and a reference holds an identifier; the address is the readable string built on the cell. The picker follows references as deep as needed, so the last step is always the field you want to read.

The choice is kept: it is saved with the grid view, so a journal set up once opens with the column again. Views are per user — a column added by one person is not added for everybody. Print forms are the exception below.

Moving already loaded data#

Items loaded before addressing keep their place as text in Item.StoragePlace, shown as Storage place (text). The field belongs to Inventory, next to the cell itself: a place in the warehouse is a warehouse matter, whichever system the text came from. Command Move storage places to cells on the item list converts it. The command counts without writing and asks once, saying how many items get a cell and how many values are not an address. Answering No writes nothing. An item that already has a cell is never repointed — a choice made by hand outranks a load. The text is not erased: it is the source value, and it keeps whatever did not parse.

Moving a realization to another picking cell#

A customer adds to an order after the set is already standing in a picking cell, and the set no longer fits. Command Move to another picking cell on the realization, available in Reserved, Picking, and Packing, offers only cells that can take it:

  • picking cells of the same store, by cell purpose, not by cell name;
  • free of other orders — a cell behind another realization, sales order, or open pick task is left out;
  • with room for the whole set, by the capacity rule above;
  • never the cell the document already stands in.

The answer moves the goods with a posted StockTransfer and repoints the document, its lines, and its draft pick tasks. The state of the realization does not change: this is a move inside the warehouse, not a step of the sale.

Example with numbers. The set is 10 pieces in cell 3-Б-12. Cell 3-Б-14 has capacity 20 and holds nothing; cell 3-Б-15 has capacity 8; cell 3-Б-16 holds another customer's order.

Step Input Result
1. Press the command — Only 3-Б-14 is offered: 3-Б-15 is too small, 3-Б-16 is taken
2. Close the dialog no answer Nothing is written; the set stays in 3-Б-12
3. Answer 3-Б-14 — Stock on 3-Б-12 becomes 0, on 3-Б-14 becomes 10; the realization and its lines read 3-Б-14
4. Another user answered first — The command refuses by name of the cell, and nothing moves

The document moves to the new cell before the goods do. That is not cosmetic: the reservation of a realization sits on its cell, and a transfer refuses to carry goods out from under somebody else's reservation. If the transfer refuses anyway, the document is put back.

Where received goods go#

A purchase order that arrives creates a put-away task, and each line of that task goes to the Default storage place of its own item. The place is the reason the field exists: before this, a receipt dropped the whole order into the first storage cell of the store, and the stock on hand disagreed with the address printed in the item card.

Item Store of the receipt Where the put-away line goes
Default storage place = 3-Б-12, that cell is in this store Main 3-Б-12
Default storage place empty Main first storage cell of the store
Default storage place = 3-Б-12, but the cell belongs to another store Branch first storage cell of Branch

The third row is not an error. An item has one place, and a company has several stores; a receipt at the branch cannot put goods into a cell of the main warehouse.

Loading from 1C does not follow this rule: a loaded document carries one cell for the whole document, because 1C had no addresses to carry. Loaded history stays in the cell the loader chose, and the move to real places is a warehouse operation — a transfer or a put-away task — not a job of the loader.

What is posted#

Document Transition Register Sign Ledger
StockTransfer created by the move Draft → Posted Stock − on the source cell, + on the target none
SalesRealization state unchanged, cell rewritten ReservedStock reservation follows the new cell none

Dictionaries StoreCell, StoreZone, and Item write no register. The address is a stored string on the cell, not a movement.

Boundaries and edge cases#

  • An address is unique per store, not per zone: zones of one store are told apart by their address code.
  • Rack, Line, and Shelf stay required numbers on the cell. The letter fills Rack; Line and Shelf fall back to 1. Addressing did not remove them, because existing data and documents still carry them.
  • The cell address is a string of up to 32 characters: zone code up to three characters, one letter, cell number up to four digits and at least 1.
  • An item without a storage place is normal. Nothing in the sale or the warehouse requires the field; it tells the picker where to walk.
  • The move command never splits a set. Either the whole realization moves, or nothing does.

What's not there yet#

  • The six 1C warehouses are not merged into zones automatically. Creating one store with six coded zones is a setup step at the client.
  • There is no storage place per store: an item has one default place, as in 1C. The tab Storage places holds the other cells it is planned to live in, but nothing reads that tab — no receipt, no pick, no sourcing.
  • The actual stock by cell is not shown on the item card. It is the report Stock by item and cell, opened from the menu.
  • There is no picking route by address — the product shows the place, it does not sort a pick sheet by it.
  • Print forms do not carry the place. A column added through Column setup lives in the grid and in its export, not in a printed document: a print form names its columns in its own layout, and none of them does today. Pick sheets print the cell of the task, not the place of the item.
  • The archived text field Storage place (text) is still there next to the reference. It is removed in a separate release, after the move is confirmed at the client.
  • Stock that 1C brought in is not spread over the storage places by itself. The places are set on the items, but the quantities sit where the loader put them until a transfer moves them.

Where next#

Was this page helpful?