В процессе работы с программой 1С:Розница версий 2.2 и 2.3 многие пользователи и администраторы сталкиваются со специфическим поведением системы: при использовании кассы ККМ без подключения оборудования программа любезно сообщает остаток наличности перед открытием смены. Однако стоит только подключить реальный фискальный регистратор (ККТ), как это сообщение исчезает. Разберемся, почему так происходит, и как мы можем вернуть этот функционал, если он необходим для бизнес-процессов магазина.
Для начала проанализируем ситуацию с точки зрения логики разработчиков 1С. Когда касса работает в режиме «без подключения оборудования», она считается виртуальной. В этом случае данные в регистре накопления ДенежныеСредстваККМ являются единственным источником информации о деньгах.
Как только мы подключаем фискальный регистратор, ситуация меняется. Теперь у нас есть два независимых счетчика наличности:
ДенежныеСредстваККМ).В типовых конфигурациях вывод сообщения об остатке при подключенном оборудовании зачастую намеренно блокируется. Это делается для того, чтобы не вводить кассира в заблуждение. Если в программе числится 1000 рублей, а в денежном ящике по факту (и по данным ККТ) — 0, то любая попытка продажи или выемки может привести к ошибке расхождения данных. Программа ожидает, что кассир будет ориентироваться на X-отчет, печатаемый непосредственно на оборудовании.
Перед тем как приступать к программированию, давайте проанализируем настройки учетной политики магазина. Выясним, почему деньги вообще остаются на следующую смену. Рассмотрим поле «Выемка денежных средств при закрытии смены» в карточке магазина:
Если бизнес-процесс требует обязательного информирования кассира об остатке, нам придется вмешаться в работу программы. Для этого проанализируем запрос, который позволяет получить точные данные из регистра накопления. Рассмотрим пример кода, который можно использовать в обработке открытия смены:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДенежныеСредстваККМОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
| РегистрНакопления.ДенежныеСредстваККМ.Остатки(&ДатаОстатков, КассаККМ = &КассаККМ) КАК ДенежныеСредстваККМОстатки";
Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(ТекущаяДата(), ВидГраницы.Включая));
Запрос.УстановитьПараметр("КассаККМ", Объект.КассаККМ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
ТекстСообщения = "Остаток наличности в кассе на начало смены: " + ВыборкаДетальныеЗаписи.СуммаОстаток;
ПоказатьПредупреждение(, ТекстСообщения);
КонецЕсли;
Этот запрос обращается к виртуальной таблице остатков регистра ДенежныеСредстваККМ. Обратите внимание на использование объекта Граница — это позволяет получить максимально актуальные данные на текущий момент времени.
Чтобы не снимать основную конфигурацию с поддержки, мы рекомендуем использовать механизм расширений (.cfe). Посмотрим на алгоритм действий:
ФормаРМК или в обработке УправлениеФискальнымУстройством).&После для процедуры открытия смены.Таким образом, даже при обновлении 1С:Розница до новых релизов (например, с 2.2 на 2.3), ваша доработка сохранится и будет функционировать.
Проанализируем ситуацию: мы вывели сообщение, кассир видит 500 рублей. Но знает ли об этих деньгах сама касса? Если при закрытии предыдущей смены была произведена инкассация в памяти ККТ (что происходит почти всегда автоматически), то аппаратный остаток в ККТ равен 0. При попытке совершить первую же продажу или выемку на 500 рублей, оборудование может выдать ошибку «Недостаточно средств в кассе».
Поэтому правильным дополнением к выводу сообщения будет использование операции «Внесение денежных средств». Рассмотрим рекомендуемый порядок действий для кассира:
После этого учетный и аппаратный остатки синхронизируются, и работа будет проходить без ошибок.
Выясним, как еще можно узнать остаток без изменения кода. В типовом интерфейсе РМК всегда доступна кнопка «Сервис», где можно выбрать пункт «X-отчет» (отчет без гашения). При его печати фискальный регистратор выдаст чек, в котором будет указана текущая сумма наличных «в кассе» по данным самого устройства. Это считается самым достоверным методом проверки в условиях применения 54-ФЗ.
Подведем итог: отсутствие сообщения при подключенном оборудовании — это не ошибка, а защитный механизм системы. Однако, используя расширение конфигурации и прямой запрос к регистру ДенежныеСредстваККМ, мы можем легко вернуть эту функцию, обеспечив удобство работы персонала при соблюдении кассовой дисциплины.