Документ «Кассовая смена»

«Кассовая смена» — это сервисный (регистрационный) документ фискального учёта: он фиксирует факт открытия и закрытия смены на контрольно-кассовой машине (ККМ/ККТ), число пробитых чеков и фискальных документов, состояние фискального накопителя (ФН) и связь с ОФД. Бухгалтерских проводок не делает и по регистрам не движется — это «карточка» Z-отчёта внутри 1С, а не платёжный документ.

Бухгалтерия для Казахстана, ред. 3.0 · v3.0.72.1 · обновлено 2026-06-04

🎯 Что это и зачем

По закону РК розничная торговля за наличный расчёт (и часто — безналичный) ведётся через ККМ с фискальным накопителем, подключённую к оператору фискальных данных (ОФД). Каждый рабочий день кассир открывает смену, в течение дня пробивает чеки, а в конце дня закрывает смену — печатает Z-отчёт. Документ «Кассовая смена» — это отражение этого цикла внутри 1С: на каждую смену ККМ заводится один документ.

Что в нём хранится: - когда смена открыта и закрыта (НачалоКассовойСмены, ОкончаниеКассовойСмены); - сколько чеков и фискальных документов пробито (КоличествоЧеков, КоличествоФД); - что с передачей в ОФД — есть ли непереданные ФД и с какой даты (КоличествоНепереданныхФД, ДатаПервогоНепереданногоФД); - здоровье ФН — не переполнена ли память, не исчерпан ли ресурс, не пора ли менять накопитель (ПамятьФНПереполнена, РесурсФНИсчерпан, НеобходимаСтрочнаяЗаменаФН); - полный Z-отчёт в виде XML от ККМ (ФДОЗакрытииСмены) — для аудита и сверки.

Кто работает: кассиры и старшие кассиры/администраторы торговых точек — ежедневно. Документ почти не заполняется руками: его поля приходят из ответа ККМ через подсистему подключаемого оборудования.

💡 Важно понимать. Это не платёжный документ. Поступление и расход денег по кассе оформляются отдельными документами — Приходный кассовый ордер и Расходный кассовый ордер, и именно они формируют проводки и попадают в кассовую книгу. «Кассовая смена» лишь фиксирует фискальные события ККМ. Связь «чек ↔ смена» и «смена ↔ деньги» строится отдельно, средствами розничной подсистемы или интеграции.

🧭 Где найти в программе

Документ относится к подсистеме «Банк и касса» и к подсистеме подключаемого оборудования. В типовой конфигурации он открывается не через обычный журнал в левом меню, а из рабочего места управления кассовыми сменами / подключаемым оборудованием (там, где настроена ККМ). Оттуда видны открытые и закрытые смены, и оттуда же инициируется закрытие активной смены.

⚠️ Пробел в источниках [KS-0003]. В карте навигации Fresh (navigation-map.json) маршрут для Документ.КассоваяСмена не задан, и в стандартном командном интерфейсе у документа нет фиксированного пункта меню — он открывается из формы списка кассовых смен/рабочего места ККМ. Точный путь в конкретной базе зависит от настроек интерфейса и роли пользователя. Значение fresh_nav во фронтматтере — ориентировочное («Банк и касса» → «Кассовые смены»), проверьте по своей конфигурации и при необходимости поправьте карту навигации.
📷 СКРИН 01
СКРИН 01 — рабочее место / форма списка «Кассовые смены» с фильтром по рабочему месту и фискальному устройству. (AccountingKZ30 во Fresh; раздел «Банк и касса»)

👤 Часть 1. Для пользователя

Идём по жизненному циклу смены: открыли → работали → закрыли → посмотрели Z-отчёт. Большинство шагов выполняет сама ККМ — 1С их регистрирует.

Урок 1. Открытие кассовой смены

Когда: в начале рабочего дня кассира или при первом включении ККМ после закрытия предыдущей смены.

Шаг 1. Открываем смену на ККМ

Открытие смены — это операция на самом фискальном устройстве (через подсистему подключаемого оборудования 1С либо на кассе). ККМ печатает отчёт об открытии смены и возвращает в 1С номер смены и фискальную дату.

📷 СКРИН 02
СКРИН 02 — команда открытия смены в рабочем месте ККМ / диалог подключаемого оборудования.

Шаг 2. В 1С появляется документ «Кассовая смена»

Документ создаётся (автоматически из ответа ККМ либо вручную в списке) и заполняется: - Организация — владелец ККМ; - КассаККМ — рабочее место/касса, к которой привязана смена; - ФискальноеУстройство — конкретная ККМ из справочника Подключаемое оборудование; - НачалоКассовойСмены — текущие дата и время; - НомерСменыККТ, ДатаСменыККТ — из ответа устройства; - Статус = Открыта.

📷 СКРИН 03
СКРИН 03 — форма документа «Кассовая смена» со статусом «Открыта».

Шаг 3. Сохраняем

Документ записывается кнопкой «Записать» (или «Записать и закрыть»). Кнопки «Провести» у документа нет — он не проводится.

💡 Подсказка. Поле Фискальное устройство — ключевое: именно по нему 1С понимает, с какой ККМ работает смена. Без него закрытие смены не выполнится.
⚠️ Важно. Если на устройстве уже есть незакрытая смена, открыть новую нельзя — сначала закройте предыдущую (см. Урок 2). В форме списка незакрытая смена помечается флагом «на фискальном устройстве смена не закрыта».

Урок 2. Закрытие кассовой смены (Z-отчёт)

Когда: в конце рабочего дня/смены кассира, при снятии Z-отчёта.

Шаг 1. Открываем активную смену

Из списка кассовых смен открываем документ со статусом Открыта.

Шаг 2. Нажимаем «Закрыть смену»

На форме документа — кнопка «Закрыть смену». Система спросит подтверждение: «Закрыть кассовую смену?».

📷 СКРИН 04
СКРИН 04 — форма открытой смены с кнопкой «Закрыть смену» и диалогом подтверждения.

Шаг 3. 1С обращается к ККМ

После подтверждения: - документ при необходимости записывается; - 1С определяет имя кассира (через переопределяемый обработчик конфигурации) и отправляет команду закрытия смены на ККМ; - ККМ печатает Z-отчёт и возвращает фискальные данные о закрытии.

Шаг 4. Документ заполняется итогами смены

Из ответа ККМ заполняются: - ОкончаниеКассовойСмены — дата/время закрытия; - КоличествоЧеков, КоличествоФД, КоличествоНепереданныхФД, ДатаПервогоНепереданногоФД; - признаки состояния ФН: ПамятьФНПереполнена, РесурсФНИсчерпан, НеобходимаСтрочнаяЗаменаФН, ПревышеноВремяОжиданияОтветаОФД; - ФДОЗакрытииСмены — полный XML Z-отчёта; - Статус → Закрыта.

После этого документ перечитывается, форма обновляется, появляется уведомление «Смена закрыта».

📷 СКРИН 05
СКРИН 05 — закрытая смена — заполнены окончание, счётчики чеков/ФД и признаки состояния ФН.
⚠️ Важно. Закрытие — это «живая» операция с устройством. Если ККМ недоступна или вернула ошибку, смена останется открытой — статус не сменится. Повторите закрытие, когда устройство будет на связи.
💡 Подсказка. Значение Количество непереданных ФД > 0 — сигнал проблем со связью с ОФД. По закону фискальные документы должны быть переданы в ОФД в установленный срок (как правило, до 3 суток; при длительном офлайне — особый режим). Проверьте интернет/настройки ОФД и при необходимости опишите ситуацию в поле Комментарий.

Урок 3. Просмотр полных фискальных данных (Z-отчёт в деталях)

Когда: нужно свериться по составу Z-отчёта, разобрать расхождение или проверить фискальные реквизиты.

Шаги

  1. Открываем закрытую смену (Статус = Закрыта).
  2. Нажимаем «Полные фискальные данные» — кнопка доступна только если смена закрыта и заполнено ФДОЗакрытииСмены.
  3. Откроется форма с деревом XML-структуры Z-отчёта: узлы, реквизиты, значения, атрибуты.
📷 СКРИН 06
СКРИН 06 — форма «Полные фискальные данные» с деревом XML Z-отчёта.
💡 Форма только для чтения — менять фискальные данные нельзя, они зафиксированы накопителем.

Урок 4. Поиск и фильтрация смен в списке

Когда: старший кассир/администратор ищет открытые смены или смотрит историю по конкретной кассе.

Шаги

  1. Открываем форму списка кассовых смен.
  2. Выбираем Рабочее место (касса) — список фильтруется по нему.
  3. Выбираем Фискальное устройство — список дополнительно сужается до конкретной ККМ; 1С тут же проверяет, закрыта ли последняя смена на этом устройстве, и при необходимости показывает предупреждение о незакрытой смене.
📷 СКРИН 07
СКРИН 07 — форма списка с фильтрами «Рабочее место» и «Фискальное устройство» и индикацией незакрытой смены.
💡 Подсказка. Отбор по статусу (Открыта/Закрыта) удобно ставить стандартным механизмом отбора списка (меню «Ещё» → «Настроить список» → «Отбор»).

🛠 Часть 2. Для программиста

Источник истины: реальный код релиза 3.0.72.1 — Documents/КассоваяСмена/Ext/ObjectModule.bsl (26 строк) и переопределяемый модуль CommonModules/КассовыеСменыПереопределяемый/Ext/Module.bsl (52 строки), плюс разбор objects/ и business-logic/. Печатная форма (ManagerModule) в рамках этой логики не используется.

Структура объекта

Документ очень «тонкий»: вся содержательная информация — в реквизитах шапки, табличных частей нет.

Реквизиты шапки (по разбору objects/):

Реквизит Тип Назначение
Статус EnumRef.СтатусыКассовойСмены Открыта / Закрыта — управляет жизненным циклом и видимостью UI
ФискальноеУстройство CatalogRef.ПодключаемоеОборудование Конкретная ККМ; ключ для закрытия смены
КассаККМ Справочник (касса/рабочее место) Группировка смен, отбор в списке
Организация Справочник Разделение учёта по юрлицам
НачалоКассовойСмены / ОкончаниеКассовойСмены Дата Открытие/закрытие смены на ККМ
НомерСменыККТ / ДатаСменыККТ Число / Дата Фискальный номер и дата смены в ФН
КоличествоЧеков / КоличествоФД Число Счётчики чеков и фискальных документов
КоличествоНепереданныхФД / ДатаПервогоНепереданногоФД Число / Дата Контроль передачи в ОФД
ПамятьФНПереполнена, РесурсФНИсчерпан, НеобходимаСтрочнаяЗаменаФН, ПревышеноВремяОжиданияОтветаОФД Булево Признаки состояния ФН и канала ОФД
ФДОЗакрытииСмены ХранилищеЗначения (XML) Полный Z-отчёт для аудита/детализации
Комментарий Строка Произвольные пояснения
⚠️ Несостыковка [KS-0001]. В разборе objects/ все реквизиты помечены как «обязательность — не проверяется». Это подтверждается реальным кодом: стандартная проверка заполнения у документа пустая (см. ниже). То есть формально обязательных реквизитов на платформенном уровне у документа нет — фактическую обязательность (ФискальноеУстройство, Организация, КассаККМ) обеспечивает либо сценарий заполнения из ККМ, либо доработка в переопределяемом модуле.

Формы: ФормаДокумента (основная, кнопки «Закрыть смену» и «Полные фискальные данные»), ФормаСписка (фильтры по рабочему месту/устройству), ФормаВыбора (выбор смены с фильтром по статусу), ФормаФискальныхДанных (дерево XML Z-отчёта).

Жизненный цикл (обработчики ObjectModule)

Модуль объекта — делегирующий: каждый обработчик лишь вызывает одноимённую процедуру переопределяемого модуля КассовыеСменыПереопределяемый. Своей логики в ObjectModule нет.

Обработчик Что делает (по факту) Куда делегирует
ПриУстановкеНовогоНомера Точка расширения нумерации (префиксы) КассовыеСменыПереопределяемый.ПриУстановкеНовогоНомера
ОбработкаПроверкиЗаполнения Точка расширения валидации КассовыеСменыПереопределяемый.ОбработкаПроверкиЗаполнения
ОбработкаЗаполнения Точка расширения заполнения (в т.ч. «на основании») КассовыеСменыПереопределяемый.ОбработкаЗаполнения
ОбработкаПроведения Отсутствует — документ не проводится —
ОбработкаУдаленияПроведения Отсутствует —

Реальный код: модуль объекта (3.0.72.1)

Весь ObjectModule.bsl целиком — он действительно такой короткий:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)

    КассовыеСменыПереопределяемый.ПриУстановкеНовогоНомера(ЭтотОбъект, СтандартнаяОбработка, Префикс);

КонецПроцедуры

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    КассовыеСменыПереопределяемый.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);

КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)

    КассовыеСменыПереопределяемый.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка);

КонецПроцедуры

#КонецОбласти

#КонецЕсли

Разбор: - Нет ОбработкаПроведения — подтверждение, что документ не формирует движений ни по бухгалтерским, ни по оперативным регистрам. - Все три обработчика — «обёртки» над переопределяемым модулем. Это типовой паттерн БСП/типовых конфигураций: ядро документа стабильно, а вся настраиваемая логика выносится в *Переопределяемый. - Директива #Если Сервер Или … — обработчики выполняются на стороне сервера/толстого клиента, что нормально для серверных событий документа.

Реальный код: куда ведёт делегирование (3.0.72.1)

Самое важное для внедренца — что лежит в переопределяемом модуле по умолчанию. Ответ: пустые тела процедур. Вот целиком значимая часть CommonModules/КассовыеСменыПереопределяемый/Ext/Module.bsl:

#Область ПрограммныйИнтерфейс

// Обработчик события вызывается на сервере при установке номера кассовой смены.
Процедура ПриУстановкеНовогоНомера(Объект, СтандартнаяОбработка, Префикс) Экспорт

КонецПроцедуры

// Обработчик события вызывается на сервере при необходимости проверки корректности заполнения.
Процедура ОбработкаПроверкиЗаполнения(Объект, Отказ, ПроверяемыеРеквизиты) Экспорт

КонецПроцедуры

// Обработчик события вызывается на сервере при вводе документа кассовая смена на основании.
Процедура ОбработкаЗаполнения(Объект, ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Экспорт

КонецПроцедуры

// Обработчик события вызывается на сервере при создании на сервере формы списка.
Процедура ФормаСпискаПриСозданииНаСервере(Форма) Экспорт

КонецПроцедуры

// Обработчик события вызывается на сервере при создании на сервере формы документа.
Процедура ФормаДокументаПриСозданииНаСервере(Форма) Экспорт

КонецПроцедуры

#КонецОбласти

Вывод (источник истины — этот код): «из коробки» в релизе 3.0.72.1 у документа нет ни автозаполнения, ни валидации, ни кастомной нумерации, ни ввода на основании. Это чистые точки расширения. Поэтому: - любые «обязательные поля» появляются только если их добавить в ОбработкаПроверкиЗаполнения (либо они навязываются сценарием заполнения из подсистемы оборудования); - ввод «на основании» возможен технически, но логики заполнения по умолчанию нет; - комментарий к ОбработкаЗаполнения («…при вводе на основании») описывает сигнатуру обработчика, а не наличие готовой логики.

Движения по регистрам

Документ не делает движений — ни бухгалтерских проводок (ОбработкаПроведения отсутствует), ни записей в регистры накопления/сведений. У него нет регистраторов в метаданных.

Что выполняет роль «движений» вместо проводок: - Статус (Открыта/Закрыта) — фактическое состояние жизненного цикла смены; - реквизиты-итоги Z-отчёта (счётчики чеков/ФД, признаки ФН) — «зафиксированные» в шапке данные; - ФДОЗакрытииСмены — полный фискальный «снимок» закрытия (XML); - связи по запросу — другие объекты узнают состояние смены не через регистр, а запросом к документу (см. КассовыеСменыВызовСервера ниже).

⚠️ Несостыковка [KS-0002]. Если в каком-либо «плоском» разборе встретятся Дт/Кт для кассовой смены — это ошибка интерпретации: денежные проводки формируют ПКО/РКО, а не «Кассовая смена». Источник истины — отсутствие ОбработкаПроведения в ObjectModule.bsl. Сверять — по отчёту «Движения документа» на проведённом ПКО/РКО, а не на смене.

Жизненный цикл смены в коде: «активна / закрыта»

Состояние смены вычисляется не флагом в регистре, а функциями общего модуля КассовыеСменыВызовСервера. Реальный код (3.0.72.1), функция определения активности:

// Смена активна, если: не закрыта И с момента открытия прошло не более 24 часов.
Функция СменаАктивна(КассоваяСмена) Экспорт

    ОписаниеСмены = КассовыеСменыВызовСервера.ОписаниеКассовойСмены(КассоваяСмена);

    Если ОписаниеСмены = Неопределено Тогда
        Возврат Ложь;
    ИначеЕсли ОписаниеСмены.Статус = Перечисления.СтатусыКассовойСмены.Открыта
        и ОписаниеСмены.ДатаИстеченияСрокаДействия > МенеджерОборудованияВызовСервера.ПолучитьДатаСеанса() Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;

КонецФункции

А «срок действия» берётся прямо в запросе ОписаниеКассовойСмены как НачалоКассовойСмены + 1 день:

| ДОБАВИТЬКДАТЕ(КассоваяСмена.НачалоКассовойСмены, ДЕНЬ, 1) КАК ДатаИстеченияСрокаДействия,

Разбор: - 24 часа — «жёсткая» бизнес-граница смены ККМ. Даже если статус ещё Открыта, по истечении суток с момента открытия СменаАктивна вернёт Ложь — это соответствует фискальному требованию: смена не может длиться дольше 24 часов. - Функция СменаЗакрыта проще: считает закрытой любую смену, чей статус не Открыта (а также несуществующую/Неопределено). - Запрос идёт в привилегированном режиме (УстановитьПривилегированныйРежим(Истина)) — статус смены доступен независимо от прав текущего пользователя; учитывайте это при анализе ролей.

Логика форм (где живёт «настоящая» работа)

Поскольку модуль объекта пуст, основное поведение реализовано в формах:

Форма / обработчик Что делает
ФормаДокумента.ПриСозданииНаСервере По типу устройства (МенеджерОборудованияКлиентСервер.ЭтоККТ) управляет видимостью группы фискальных полей
ФормаДокумента.ПриЧтенииНаСервере Десериализует ФДОЗакрытииСмены; включает/выключает кнопку «Полные фискальные данные»
ФормаДокумента команда ЗакрытьСмену → …Выполнить → …ПослеЗакрытияСмены Асинхронная цепочка: подтверждение → запись → имя кассира → команда на ККМ → перечитывание и обновление формы
ФормаСписка.ФискальноеУстройствоШапкаПриИзменении Обновляет отбор и зовёт КассовыеСменыВызовСервера.ПоследняяСменаЗакрыта()
ФормаФискальныхДанных.ПриСозданииНаСервере Запросом достаёт ФДОЗакрытииСмены, парсит XML в дерево значений

Валидации

Зависимости (общие модули)

Модуль Роль
КассовыеСменыПереопределяемый Точки расширения серверной логики (нумерация, проверка, заполнение, события форм) — по умолчанию пусты
КассовыеСменыКлиентПереопределяемый Клиентские точки расширения; получение имени кассира при закрытии
КассовыеСменыВызовСервера Серверные функции состояния смены: СменаАктивна, СменаЗакрыта, ОписаниеКассовойСмены, ПоследняяСменаЗакрыта
КассовыеСменыВызовСервераПереопределяемый Переопределяемые серверные вызовы (расширение)
МенеджерОборудованияКлиент / МенеджерОборудованияКлиентСервер / МенеджерОборудованияВызовСервера Взаимодействие с ККМ: команды, тип устройства, дата сеанса
ОбщегоНазначения Утилиты доступа к реквизитам объектов
💼 Партнёру / внедренцу.
  1. «Документ ничего не проверяет/не заполняет» — это норма для типовой 3.0.72.1: вся логика вынесена в КассовыеСменыПереопределяемый (по умолчанию пуст). Нужны обязательные поля, автоподстановка организации/кассы, нумерация по префиксам — реализуйте это там, не трогая ObjectModule.
  2. «Не закрывается смена» — почти всегда проблема на стороне ККМ/подключаемого оборудования (нет связи с устройством, не получено имя кассира, драйвер). Документ при ошибке устройства корректно оставляет статус Открыта. Диагностику ведите в подсистеме подключаемого оборудования и в КассовыеСменыКлиентПереопределяемый.ПолучитьИмяКассира.
  3. «Висят непереданные ФД» — это про связь ККМ↔ОФД, а не про учёт в 1С. В документе это лишь индикатор (КоличествоНепереданныхФД, ДатаПервогоНепереданногоФД). Решение — на уровне ОФД/сети.
  4. Навигация: если клиенту нужен прямой пункт меню «Кассовые смены» — добавьте команду/раздел в интерфейс и зафиксируйте маршрут в карте навигации (сейчас он не задан, см. [KS-0003]).
🧩 Заметки для разработчика.
  1. Не ищите проводки — их нет. Состояние смены читайте функциями КассовыеСменыВызовСервера (запросом), а не через регистры.
  2. Закрытие смены — асинхронная клиентская цепочка с ОписаниеОповещения. Не рассчитывайте на синхронный результат; завершение ловите в callback ЗакрытьСменуПослеЗакрытияСмены.
  3. Помните про правило 24 часов: даже открытая по статусу смена считается неактивной спустя сутки (СменаАктивна). Это влияет на привязку чеков/операций.
  4. ФДОЗакрытииСмены — ХранилищеЗначения с XML. Парсинг и дерево строятся на сервере в ФормаФискальныхДанных.ПриСозданииНаСервере; при параметре АвтоТест инициализация пропускается.
  5. Запрос ОписаниеКассовойСмены выполняется в привилегированном режиме — учитывайте при проектировании ролей и RLS.

🔗 Связанные разделы

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1) 🆕