Офлайн-серии номеров
Касса, работающая без связи, обязана нумеровать чеки сама — и при этом не столкнуться с номерами сервера и других касс. Решение простое: каждому терминалу выдают собственный диапазон номеров, в котором больше никто не работает.
Где искать: Модули → Офлайн → Регистры → Офлайн-серии номеров
Разбор на примере

В журнале — код терминала и комментарий; одна запись на терминал. Здесь один терминал — POS1.

Терминалу POS1 выделен диапазон 900001–909999 для реестра OfflineSales. В поле «Последний использованный» — 900003: наибольший номер чека из этого диапазона, который касса уже передала на сервер. Его поднимает сервер, принимая чеки кассы, и никогда не уменьшает; сама касса ведёт счётчик у себя (см. «Диапазон исчерпывается»).
Одна запись — один терминал. В таблице — по строке на каждый выделенный диапазон; сама касса нумерует только чеки, поэтому ей нужны строки с OfflineSales. Номера она берёт из первой строки, где ещё есть свободные.
Почему номера не сталкиваются
Сервер, генерируя очередной номер онлайн, перепрыгивает офлайн-диапазоны. Поэтому 900001 не достанется документу, созданному в конторе, а касса, проработав неделю без сети, привезёт номера, которых никто не занял.
Оговорка: так работает нумерация «следующий за последним». Если для реестра настроены серии номеров, сервер выдаёт номера по ним и офлайн-диапазоны не обходит. Поэтому, когда офлайн-обмен включён, пересечение серии с диапазоном кассы не даёт сохранить ни серию номеров, ни эту запись; диапазон для OfflineSales сверяется с сериями счетов-фактур, потому что счёт наследует номер чека. Без этой проверки счёт, созданный в конторе, занял бы номер кассы, и её чек с тем же номером в счёт уже не превратился бы (ошибка конвертации в «Офлайн-продажах»).
Ещё деталь: номер чека наследует созданный из него счёт. То есть счёт по чеку 900001 тоже получит номер 900001 — по нему и ищите.
Типичные ситуации
Диапазон исчерпывается. Расход диапазона виден в поле «Последний использованный»: сервер поднимает его до номера последнего поступившего чека этой кассы (чеки, которые касса ещё не передала, там не учтены). Когда он приблизился к верхней границе, добавьте кассе новый диапазон строкой ниже. Исчерпав диапазон, касса перестаёт выдавать номера, пока не получит новый.
Кассу переустановили или зарегистрировали заново. Нумерация продолжается, а не начинается с начала диапазона: касса берёт наибольшее из трёх — что знает сервер (поле «Последний использованный»), что помнит сама, и наибольший номер чека, который уже лежит в её базе. Поэтому номер чека, ещё не переданного на сервер, второй раз не выдаётся. Если диапазон сузили ниже номера, который касса уже выдала, он считается исчерпанным.
Заводим вторую кассу. Дайте ей другой диапазон (например, 910001–919999) — пересечение двух терминалов дало бы одинаковые номера чеков и конфликт при конвертации. Поэтому диапазон, пересекающийся с диапазоном другой кассы (или с другой строкой этой же записи), сохранить не получится: отказ назовёт диапазон, на который он налезает, а если тот чужой — и его кассу.
Касса не пробивает чек — сообщение «У кассы нет свободных номеров чеков». Проверьте, есть ли для неё запись в этом реестре: без диапазона терминалу неоткуда взять номер.
Куда смотреть дальше
- Офлайн-терминалы — кому выделены диапазоны.
- Офлайн-продажи — чеки, пронумерованные этими номерами.
- Серии номеров — та же идея для обычных, «онлайновых» документов.